我和从其他Maven模块中添加jar与依赖项工件。有类似的情况,但是建议的解决方案对我没有用。我试过同时使用moduleSets和dependencySets。所以我们开始:
简介:
我有一个多模块maven项目:
parent
|
+-myProject
|
+-myProjectTests我希望myProjectTests在其输出目录中使用myProject生成的jar-with-dependencies,运行集成测试等(我使用的框架需要实际的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>我得到了这个输出:
警告在此工件包含筛选器中从未触发以下模式:O 'myGroup.myProject‘警告此工件包含筛选器中从未触发以下模式:O 'myGroup.myProject’警告注意:当前,如果发生版本冲突,模块依赖项的包含可能会产生不可预测的结果。错误未能在项目org.apache.maven.plugins:maven-assembly-plugin:2.4:single上执行目标myProjectTests (prepareTests):未能创建程序集:创建程序集存档错误:必须设置至少一个文件。->帮助1
我已经在maven文档和网际网络中搜索了解决方案,并尝试了各种标志的许多不同组合,所有这些都有相同的错误。
dependencySets:
如果我在?中指定了dependencySets?就像这样:
<dependencySets>
<dependencySet>
<includes>
<include>myGroup:myProject:jar-with-dependencies:0.0.1-SNAPSHOT</include>
</includes>
<unpack>false</unpack>
</dependencySet>
</dependencySets>我明白了:
警告不能包括项目工件:myGroup:myProjectTest:pom:0.0.1-快照;它没有关联的文件或目录。警告在此工件包含筛选器中从未触发以下模式:O 'myGroup:myProject:jar-with-dependencies:0.0.1-SNAPSHOT‘错误未能在项目myProjectTests上执行目标org.apache.maven.plugins:maven-assembly-plugin:2.4:single (prepareTests):失败创建程序集:错误创建程序集存档prepareTests:您必须至少设置一个文件。->帮助1
再次,我尝试了许多不同的标志组合,并删除了jar-with-dependencies分类器,所有这些都没有效果。
在这两种情况下,调试日志中都没有任何有用的东西,我已经探索了调试日志所建议的一些途径。
我想要的很简单--让myProject生成的jar与依赖关系文件在包阶段被放到myProjectTests的输出目录中,理想情况下不使用直接的文件路径。我怎么才能让maven这么做?
发布于 2013-11-05 14:03:14
事实证明,这是一个已知的maven错误--当子模块没有将聚合器项目作为其父程序时,组装插件不能正常工作-- 马塞姆勒-600。看来我必须使用直接的文件依赖项来代替。
https://stackoverflow.com/questions/19772444
复制相似问题