Maven程序集在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> <

我有一个Maven多模块项目。在一个模块中,我们使用maven assembly插件创建了一个ZIP。此服务器的配置:

<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
有哪些令人不快的副作用?