war 进入到项目根目录,直接执行如下命令即可
mvn clean package
war 进入到项目根目录,执行如下命令:
mvn clean package
在项目的 target 目录中找到生成的 WAR 文件。
运行以下命令来将 POM 文件中的依赖一起打包进 WAR 文件:
mvn war:war
这个命令会使用 Maven 的 war 插件重新打包 WAR 文件,包含 POM 文件中定义的依赖。
在项目的 target 目录中找到更新后的 WAR 文件,其中包含了 POM 文件中的依赖。
需要使用maven-shade-plugin或maven-assemply-plugin插件。
在pom.xml文件中添加:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.pluginsgroupId>
<artifactId>maven-shade-pluginartifactId>
<version>3.3.0version>
<executions>
<execution>
<phase>packagephase>
<goals>
<goal>shadegoal>
goals>
execution>
executions>
plugin>
plugins>
build>
执行 mvn clean package 命令,会生成两个 JAR 文件。一个以 “original-” 开头,另一个是最终生成的 JAR 文件。
例如,如果你的项目名称是 my-app,当你运行 mvn clean package 命令时,Maven Shade 插件将生成两个文件:
问题:
执行该jar包时,需要指定主类,即需要使用java -cp my-app.jar com.example.MainClass命令来执行。
但使用maven-assemply-plugin插件可以设置主类,解决该问题。
在pom.xml文件中添加:
<groupId>groupIdgroupId>
<artifactId>my-projectartifactId>
<version>1.0.0version>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.pluginsgroupId>
<artifactId>maven-assembly-pluginartifactId>
<version>3.3.0version>
<configuration>
<archive>
<manifest>
<mainClass>com.example.MainClassmainClass>
manifest>
archive>
<descriptorRefs>
<descriptorRef>jar-with-dependenciesdescriptorRef>
descriptorRefs>
configuration>
<executions>
<execution>
<id>make-assemblyid>
<phase>packagephase>
<goals>
<goal>singlegoal>
goals>
execution>
executions>
plugin>
plugins>
build>
执行 mvn clean package 命令,会生成一个 JAR 文件,生成的JAR文件名将是my-project-1.0.0-jar-with-dependencies.jar。
因为设置主类,所以可以使用java -jar my-project-1.0.0-jar-with-dependencies.jar命令直接执行jar包。
可以通过添加 标签自定义jar包名称,但添加该标签会导致pom.xml中的依赖不能打包进去。