mvn打包成war包或可执行jar包

1. 打包成war包

1.1 若pom.xml中已经指定<packaging>war</packaging>

进入到项目根目录,直接执行如下命令即可

mvn clean package

1.2 若pom.xml中没有指定<packaging>war</packaging>

进入到项目根目录,执行如下命令:

mvn clean package

在项目的 target 目录中找到生成的 WAR 文件。
运行以下命令来将 POM 文件中的依赖一起打包进 WAR 文件:

mvn war:war

这个命令会使用 Maven 的 war 插件重新打包 WAR 文件,包含 POM 文件中定义的依赖。
在项目的 target 目录中找到更新后的 WAR 文件,其中包含了 POM 文件中的依赖。

2. 打包成jar包

需要使用maven-shade-plugin或maven-assemply-plugin插件。

2.1 使用maven-shade-plugin查看

在pom.xml文件中添加:

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-shade-plugin</artifactId>
            <version>3.3.0</version>
            <executions>
                <execution>
                    <phase>package</phase>
                    <goals>
                        <goal>shade</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

执行 mvn clean package 命令,会生成两个 JAR 文件。一个以 “original-” 开头,另一个是最终生成的 JAR 文件。
例如,如果你的项目名称是 my-app,当你运行 mvn clean package 命令时,Maven Shade 插件将生成两个文件:

  1. original-my-app.jar:原始 JAR 文件,包含所有的依赖项。
  2. my-app.jar:经过 Maven Shade插件处理后的最终 JAR 文件,它是一个包含了所有依赖项的自包含可执行 JAR 文件。

问题:
执行该jar包时,需要指定主类,即需要使用java -cp my-app.jar com.example.MainClass命令来执行。
但使用maven-assemply-plugin插件可以设置主类,解决该问题。

1.2 使用maven-assemply-plugin插件

在pom.xml文件中添加:

<groupId>groupId</groupId>
<artifactId>my-project</artifactId>
<version>1.0.0</version>

<build>
    <plugins>
        <!-- 添加 maven-assembly-plugin 插件 -->
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-assembly-plugin</artifactId>
            <version>3.3.0</version>
            <configuration>
                <archive>
                    <manifest>
                        <!-- 设置主类 -->
                        <mainClass>com.example.MainClass</mainClass>
                    </manifest>
                </archive>
                <descriptorRefs>
                    <!-- 指定打包描述符为 jar-with-dependencies -->
                    <descriptorRef>jar-with-dependencies</descriptorRef>
                </descriptorRefs>
            </configuration>
            <executions>
                <execution>
                    <id>make-assembly</id>
                    <phase>package</phase>
                    <goals>
                        <goal>single</goal>
                    </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包。
可以通过添加<finalName>my-custom-name</finalName> 标签自定义jar包名称,但添加该标签会导致pom.xml中的依赖不能打包进去。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值