gpt4 book ai didi

java - Maven - 在同一模块中生成 war 和 fat jar

转载 作者:行者123 更新时间:2023-11-30 10:38:16 25 4
gpt4 key购买 nike

我需要在同一个 pom 中生成 war 和 fat jar(具有所有依赖项的 jar)。
我在这个网站上发现了很多类似的帖子,但仍然有问题。

在我的 pom 中,我将包装设置为 war 并添加 ma​​ven-war-pluginma​​ven-assembly-plugin:

...
<packaging>war</packaging>
....
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.6</version>
<configuration>
</configuration>
</plugin>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.2-beta-5</version>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
<appendAssemblyId>false</appendAssemblyId>
</configuration>
<executions>
<execution>
<id>make-my-jar-with-dependencies</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
....

注意使用的 ma​​ven-assembly-plugin 版本 - 2.2-beta-5。在我的测试中,它是唯一在此配置中生成正确 jar 文件的版本。不幸的是,它还会打印许多“[INFO] 已经添加,跳过”行,并且构建过程需要太多时间。

如果我使用最新版本的 ma​​ven-assembly-plugin (2.6),则不会打印“已添加”信息并且构建速度至少快 3 倍,但与 2.2 版本不同我的类文件放在/WEB-INF/classes/文件夹中(应该在根目录中),所以我不能从这个 jar 运行任何主类。依赖项 jar 中的所有类都按预期放置在根目录中。

最新版本中是否有任何插件配置参数可以帮助生成正确的jar?

最佳答案

您不必从根位置的依赖项中获取所有类。让程序集插件发挥它的作用。就运行主类而言,除了已有的代码外,您还可以使用以下代码。

<project>
[...]
<build>
[...]
<plugins>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.6</version>
<configuration>
[...]
<archive>
<manifest>
<mainClass>org.sample.App</mainClass> // specify your main class here.
</manifest>
</archive>
</configuration>
[...]
</plugin>
[...]
</project>

关于java - Maven - 在同一模块中生成 war 和 fat jar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39772999/

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