使用maven-assembly-plugin版本2.4,我想构建一个我的存储库的zip,其中只包含以 mypackage 开头的groupid下的jar。
使用带有模式 mypackage。*:* 的存储库不起作用。构建成功但我的存储库包含所有依赖项!
<formats>
<format>zip</format>
</formats>
<includeBaseDirectory>false</includeBaseDirectory>
<repositories>
<repository>
<includes>
<include>mypackage.*:*</include>
</includes>
<scope>test</scope>
<includeMetadata>false</includeMetadata>
</repository>
</repositories>
使用具有相同模式的依赖集(除了所有jar都在根文件夹中...):
<formats>
<format>zip</format>
</formats>
<includeBaseDirectory>false</includeBaseDirectory>
<dependencySets>
<dependencySet>
<includes>
<include>mypackage.*:*</include>
</includes>
<unpack>false</unpack>
<scope>test</scope>
<useProjectArtifact>false</useProjectArtifact>
</dependencySet>
</dependencySets>
配置中有什么问题吗?用maven-assembly可以做到吗?
答案 0 :(得分:0)
使用repositories
标记指定程序集时,也会导入项目依赖项的所有依赖项,除非在程序集定义中使用标记excludes
显式排除它们。
例如:
<formats>
<format>zip</format>
</formats>
<includeBaseDirectory>false</includeBaseDirectory>
<repositories>
<repository>
<includes>
<include>mypackage.*:*</include>
</includes>
<excludes>
<exclude>commons-cli:*</exclude>
</excludes>
</repository>
</repositories>
这将允许您排除依赖项(如果您的项目或其中一个依赖项当然使用它) commons-cli:*
及其依赖项,问题是您必须列出您要排除的依赖项,但您可以轻松地在项目中运行mvn dependency:tree
列表。