我需要在同一个pom中生成war和fat jar(带有所有依赖关系的jar) 我在这个网站上发现了许多类似的线程,但仍有问题。
在我的pom中,我将包装设置为 war 并添加 maven-war-plugin 和 maven-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>
....
注意使用 maven-assembly-plugin 版本 - 2.2-beta-5 。在我的测试中,它是在此配置中生成正确jar文件的唯一版本。不幸的是,它还打印了许多“[INFO]已经添加,跳过”的行,构建过程花费了太多时间。
如果我使用最新版本的 maven-assembly-plugin (2.6),则没有“已添加”的信息打印,并且构建速度至少快3倍,但与2.2版本不同我的类文件放在/ WEB-INF / classes /文件夹中(应该在root中),所以我可以从这个jar运行任何主类。依赖项jar中的所有类都按预期放在root中。
最新版本中是否有任何插件配置参数可以帮助生成正确的jar?
答案 0 :(得分:1)
您不必从根位置获取依赖项中的所有类。让汇编插件发挥其奇迹。就运行主类而言,除了已有的代码之外,还可以使用以下代码。
synchronized