我正面临这个问题:
我正在为我们的客户创建装配。在这个程序集中,我基本上需要两个重要的目录:
lib/
包含所有运行时作用域项目依赖项(包括传递)test/
包含所有测试范围依赖项(包括传递),但没有已存在于lib文件夹中的那些到目前为止,我最终得到了这个汇编文件(我只包括重要部分):
<assembly>
<id>zip-with-lib-and-test</id>
<includeBaseDirectory>false</includeBaseDirectory>
<formats>
<format>zip</format>
</formats>
<dependencySets>
<dependencySet>
<outputDirectory>lib</outputDirectory>
<unpack>false</unpack>
<useTransitiveDependencies>true</useTransitiveDependencies>
<useTransitiveFiltering>true</useTransitiveFiltering>
<useProjectArtifact>true</useProjectArtifact>
</dependencySet>
<dependencySet>
<outputDirectory>test</outputDirectory>
<unpack>false</unpack>
<includes>
<include>group:test-artifact1</include>
<include>group:test-artifact1</include>
</includes>
<useTransitiveDependencies>true</useTransitiveDependencies>
<scope>test</scope>
</dependencySet>
</dependencySets>
</assembly>
有了这个我有测试目录和命名工件,但是这些测试工件没有传递依赖。
我需要像这样进行排除:如果你出现在lib工件中,你将不会参加测试。 我试着用maven-dependency-plugin做这件事但没有运气。
此处不依赖于依赖项的确切列表,因为此程序集将位于多个工件上。
答案 0 :(得分:0)
程序集插件创建一个zip存档(它也可以创建一个目录作为输出,但它很麻烦),所以我将它留给最后一步。
runtime.dir
和test.dir
)。prepare-package
添加两个maven依赖插件执行:一个用于运行时依赖项(应使用includeScope
选项),runtime.dir
作为输出目录,另一个用于测试依赖项{ {1}}作为输出目录。因此,test.dir
中的运行时+编译依赖项和runtime.dir
中的运行时+编译+提供+测试(以及系统,如果您碰巧有)。test.dir
中的所有文件,并且每个文件检查test.dir
中是否存在这样的文件;如果是,请从runtime.dir
中删除此文件。作为在maven中使用groovy脚本的示例,请参阅my answer here。