Жизненный цикл установки maven не выполняет проверку
Я должен установить пользовательский jar во время сборки, у меня нет выбора, чтобы запустить файл deploy для загрузки пользовательского jar в центральное соединение.
Пользовательский jar-файл не имеет никаких зависимостей и довольно прост. Вот мой pom-файл.
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-install-plugin</artifactId>
<version>2.5.2</version>
<executions>
<execution>
<id>install-asjava</id>
<phase>validate</phase>
<goals>
<goal>install-file</goal>
</goals>
<configuration>
<groupId>com.ibm</groupId>
<artifactId>customjar1</artifactId>
<version>1.0.0</version>
<packaging>jar</packaging>
<file>${basedir}/lib/customjar1.jar</file>
<generatePom>true</generatePom>
</configuration>
</execution>
<execution>
<id>install-unijdbc</id>
<phase>validate</phase>
<goals>
<goal>install-file</goal>
</goals>
<configuration>
<groupId>com.ibm</groupId>
<artifactId>customjar2</artifactId>
<version>1.0.0</version>
<packaging>jar</packaging>
<file>${basedir}/lib/customjar2.jar</file>
<generatePom>true</generatePom>
</configuration>
</execution>
</executions>
</plugin>
Когда я бегу maven validate
эти пользовательские jar-файлы нормально устанавливаются локально, но я хочу запустить install-plugin во время установки, я изменил фазу установки, и она завершается с ошибкой
[WARNING] The POM for com.ibm:customjar1:jar:1.0.0 is missing, no dependency information available
[WARNING] The POM for com.ibm:customjar2:jar:1.0.0 is missing, no dependency information available
Я должен всегда явно бежать validate
перед запуском install
Я хочу обойти эту проблему. В документации Maven говорится, что все этапы до того, как конкретный элемент исполняется как часть цикла выполнения, но кое-что, как это не работает для меня.
Даже эта статья говорит то же самое, вам нужно запустить validate
явно, чтобы убедиться, Maven install
отлично работает
1 ответ
Это ошибка (или не зависящая от вашего взгляда), которая была закрыта как не будет исправлена: https://issues.apache.org/jira/browse/MNG-5082
Вот соответствующий комментарий от ошибки:
все зависимости, которые не являются частью реактора, должны быть доступны при запуске сборки, что необходимо для создания действительного buildPlan. Поэтому, хотя раньше это работало с Maven2, я думаю, что подход Maven3 лучше, так как Maven не может определить, какие плагины будут влиять на buildPlan при запуске. Я хотел бы закрыть это как не буду исправлять. Выполнение установочного файла во время проверки означает, что он будет выполняться во время каждой сборки, устанавливая один и тот же файл снова и снова. Это также признак того, что этот подход не может быть действительным.
Что вы можете попробовать, так это превратить ваш проект в многомодульный проект. Первый модуль просто включает в себя maven-install-plugin
конфигурация - так что все, что делает этот модуль, это загрузить ваши два пользовательских jar-файла в локальный репозиторий. Ваш второй модуль будет зависеть от этого первого модуля. Ко времени сборки 2-го модуля 1-й модуль уже загрузит пользовательские файлы jar, что означает, что они должны быть доступны.