gpt4 book ai didi

java - Maven 程序集 : how package only imported/used dependencies for each execution

转载 作者:行者123 更新时间:2023-11-30 06:14:44 25 4
gpt4 key购买 nike

我有一个 Maven 项目,需要将不同的 Java 程序打包为 jar,每个程序都有自己的依赖项。为了实现这一目标,我目前正在使用 maven-assembly-plugin具有不同的执行方式,我需要打包的每个 java 程序都有一个(例如 Program1.java、Program2.java、Program3.java):

<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<executions>

<execution>
<id>assembly1</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
<configuration>
<archive>
<manifest>
<mainClass>my.package1.Program1</mainClass>
</manifest>
</archive>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
<finalName>Program1</finalName>
<appendAssemblyId>false</appendAssemblyId>
</configuration>
</execution>

<execution>
<id>assembly2</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
<configuration>
<archive>
<manifest>
<mainClass>my.package2.Program2</mainClass>
</manifest>
</archive>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
<finalName>Program2</finalName>
<appendAssemblyId>false</appendAssemblyId>
</configuration>
</execution>

<execution>
<id>assembly3</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
<configuration>
<archive>
<manifest>
<mainClass>my.package3.Program3</mainClass>
</manifest>
</archive>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
<finalName>Program3</finalName>
<appendAssemblyId>false</appendAssemblyId>
</configuration>
</execution>

</executions>
</plugin>

这些类(Program1、Program2、Program3)中的每一个都需要不同的库作为依赖项,因此我期望在输出中得到 3 个大小不同的 jar,但我得到了 3 个相同大小的文件(Program1.jar、Program2.jar)。 jar、Program3.jar)。就像 Maven 正在打包标签依赖项中定义的所有依赖项一样,无论它们是否被使用。

如何告诉 maven 对于程序集插件内的每次执行,仅打包由指定类有效导入和使用的依赖项?

最佳答案

程序集插件的默认行为是包含当前 Maven 模块的所有依赖项。您可以通过显式更改 excluding不需要的依赖项。

但是,如果您有三个不同的程序,甚至没有相同的依赖项,那么最好将您的项目分成三个不同的(子)模块,也许有一个共同的父 pom。更多详情可查看here 。拆分项目后,每个子模块都可以运行自己的程序集插件,该插件仅打包为每个子模块声明的依赖项。

如果您决定拆分项目,您可以借助依赖插件清理每个子模块所需的依赖项,目标 dependency:analyze .

关于java - Maven 程序集 : how package only imported/used dependencies for each execution,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49470784/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com