Maven程序集在ZIP中包含太多依赖项
我有一个Maven多模块项目。在一个模块中,我们使用maven assembly插件创建了一个ZIP。此服务器的配置:Maven程序集在ZIP中包含太多依赖项,maven,build,maven-plugin,maven-assembly-plugin,Maven,Build,Maven Plugin,Maven Assembly Plugin,我有一个Maven多模块项目。在一个模块中,我们使用maven assembly插件创建了一个ZIP。此服务器的配置: <baseDirectory>/</baseDirectory> <formats> <format>zip</format> </formats> <includeBaseDirectory>false</includeBaseDirectory> <
<baseDirectory>/</baseDirectory>
<formats>
<format>zip</format>
</formats>
<includeBaseDirectory>false</includeBaseDirectory>
<dependencySets>
<dependencySet>
<outputDirectory>/</outputDirectory>
<useProjectArtifact>true</useProjectArtifact>
<excludes>
<exclude>
com.sample.blabla:test-core-client
</exclude>
</excludes>
<scope>runtime</scope>
</dependencySet>
</dependencySets>
<execution>
<id>make-service-client-with-dependencies-zip</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
<configuration>
<finalName>${service-client-with-dependencies.zip.filename}</finalName>
<appendAssemblyId>true</appendAssemblyId>
<outputDirectory>${project.build.directory}/zip</outputDirectory>
<descriptors>
<descriptor>src/main/assembly/test-service-client-with-dependencies.xml</descriptor>
</descriptors>
</configuration>
</execution>
/
拉链
假的
/
真的
blabla:测试核心客户端
运行时
和此的pom配置:
<baseDirectory>/</baseDirectory>
<formats>
<format>zip</format>
</formats>
<includeBaseDirectory>false</includeBaseDirectory>
<dependencySets>
<dependencySet>
<outputDirectory>/</outputDirectory>
<useProjectArtifact>true</useProjectArtifact>
<excludes>
<exclude>
com.sample.blabla:test-core-client
</exclude>
</excludes>
<scope>runtime</scope>
</dependencySet>
</dependencySets>
<execution>
<id>make-service-client-with-dependencies-zip</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
<configuration>
<finalName>${service-client-with-dependencies.zip.filename}</finalName>
<appendAssemblyId>true</appendAssemblyId>
<outputDirectory>${project.build.directory}/zip</outputDirectory>
<descriptors>
<descriptor>src/main/assembly/test-service-client-with-dependencies.xml</descriptor>
</descriptors>
</configuration>
</execution>
使服务客户端具有依赖关系
包裹
单一的
${具有依赖项的服务客户端.zip.filename}
真的
${project.build.directory}/zip
src/main/assembly/test-service-client-with-dependencies.xml
不幸的是,创建的ZIP包含了更多的jar-s,我们希望。。。例如:37 X maven XXX罐,许多弹簧罐、货车罐等
但我们不希望包含这些JAR,因为它们是运行时所必需的。我们如何才能做到这一点?Maven assembly插件只包括根据您的配置在运行时范围内的JAR。您可以运行
mvn dependency:tree
并将输出与zip的内容进行比较
您可以尝试将属性
useTransitiveDependencies
设置为false
。这将从zip中排除所有可传递的依赖项。但是这可能会产生令人不快的副作用。您使用描述符测试服务客户机和dependencies.xml
,其中包括结果中的所有内容和厨房水槽
将jar与依赖项一起使用
。这将包括入口运行时依赖项(本地和瞬态)
如果这仍然太多,那么您可以通过声明它们为
提供的
(如果其他人稍后会将它们添加到类路径)、测试
(如果依赖项仅是运行测试所必需的)或真的
(如果这是可选的依赖项)。谢谢!false解决了我的问题。嘿@Raghuram,将useTransitiveDependencies
设置为false
有哪些令人不快的副作用?