Плагин сборки Maven жалуется на отсутствие файлов, что бы я ни делал
У меня похожая ситуация с добавлением артефакта jar-with-dependencies из другого модуля Maven, однако предложенное решение не сработало для меня. Я пытался использовать оба moduleSets
а также dependencySets
, Итак, поехали:
Вступление:
У меня есть мультимодульный проект Maven:
parent
|
+-myProject
|
+-myProjectTests
Я хочу, чтобы myProjectTests имел jar-with-dependencies
производится myProject в его выходной директории, для запуска интеграционных тестов и т. д. (я использую фреймворк, который требует фактического jar для запуска)
родительский pom.xml:
<project>
<groupId>myGroup</groupId>
<artifactId>parent</artifactId>
<packaging>pom</packaging>
<modules>
<module>myProject</module>
<module>myProjectTests</module>
</modules>
</project>
myProject pom.xml:
<project>
<groupId>myGroup</groupId>
<artifactId>myProject</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<build>
<plugins>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
</plugin>
</plugins>
</build>
</plugins>
</project>
myProjectTests pom.xml:
<project>
<groupId>myGroup</groupId>
<artifactId>myProjectTests</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>pom</packaging>
<dependencies>
<dependency>
<groupId>myGroup</groupId>
<artifactId>myProject</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.4</version>
<executions>
<execution>
<id>prepareTests</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
<configuration>
<descriptors>
<descriptor>prepare.xml</descriptor>
</descriptors>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
prepare.xml:
<assembly>
<id>prepareTests</id>
<formats>
<format>dir</format>
</formats>
<includeBaseDirectory>false</includeBaseDirectory>
?????
</assembly>
moduleSets:
Если я попытаюсь указать moduleSets
для????? в моем prepare.xml вот так:
<moduleSets>
<moduleSet>
<useAllReactorProjects>true</useAllReactorProjects>
<includes>
<include>myGroup:myProject</include>
</includes>
<binaries>
<attachmentClassifier>jar-with-dependencies</attachmentClassifier>
<unpack>false</unpack>
</binaries>
</moduleSet>
</moduleSets>
Я получаю этот вывод:
[WARNING] The following patterns were never triggered in this artifact inclusion filter: o 'myGroup.myProject' [WARNING] The following patterns were never triggered in this artifact inclusion filter: o 'myGroup.myProject' [WARNING] NOTE: Currently, inclusion of module dependencies may produce unpredictable results if a version conflict occurs. [ERROR] Failed to execute goal org.apache.maven.plugins:maven-assembly-plugin:2.4:single (prepareTests) on project myProjectTests: Failed to create assembly: Error creating assembly archive prepareTests: You must set at least one file. -> [Help 1]
Я искал документацию maven и интернет-решения для решений и пробовал много разных комбинаций различных флагов, все с одной и той же ошибкой.
dependencySets:
Если я укажу dependencySets
в????? вот так:
<dependencySets>
<dependencySet>
<includes>
<include>myGroup:myProject:jar-with-dependencies:0.0.1-SNAPSHOT</include>
</includes>
<unpack>false</unpack>
</dependencySet>
</dependencySets>
Я получаю это:
[WARNING] Cannot include project artifact: myGroup:myProjectTests:pom:0.0.1-SNAPSHOT; it doesn't have an associated file or directory. [WARNING] The following patterns were never triggered in this artifact inclusion filter: o 'myGroup:myProject:jar-with-dependencies:0.0.1-SNAPSHOT' [ERROR] Failed to execute goal org.apache.maven.plugins:maven-assembly-plugin:2.4:single (prepareTests) on project myProjectTests: Failed to create assembly: Error creating assembly archive prepareTests: You must set at least one file. -> [Help 1]
Опять же, я перепробовал много разных комбинаций флагов и удалил jar-with-dependencies
классификатор, все безрезультатно.
В обоих случаях нет ничего полезного в журналах отладки, и я рассмотрел некоторые возможности, предложенные в журналах отладки.
То, что я хочу, это просто - чтобы файл jar-with-dependencies, созданный myProject, был помещен в выходной каталог myProjectTests во время фазы пакета, в идеале без использования прямых путей к файлам. Как мне заставить Maven сделать это?
1 ответ
Оказывается, это известная ошибка maven - плагин сборки не работает должным образом, когда подмодули не имеют проекта агрегатора в качестве родителя - MASSEMBLY-600. Похоже, мне придется вместо этого использовать прямые файловые зависимости.