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


    1. 打包成war包

    1.1 若pom.xml中已经指定war

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

    mvn clean package
    
    • 1

    1.2 若pom.xml中没有指定war

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

    mvn clean package
    
    • 1

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

    mvn war:war
    
    • 1

    这个命令会使用 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.pluginsgroupId>
                <artifactId>maven-shade-pluginartifactId>
                <version>3.3.0version>
                <executions>
                    <execution>
                        <phase>packagephase>
                        <goals>
                            <goal>shadegoal>
                        goals>
                    execution>
                executions>
            plugin>
        plugins>
    build>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    执行 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>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>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35

    执行 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包。
    可以通过添加my-custom-name 标签自定义jar包名称,但添加该标签会导致pom.xml中的依赖不能打包进去。

  • 相关阅读:
    从零搭建Vue项目
    数据结构·顺序表
    【C语言】算法学习·归并排序
    RHCSA认证考试---8.配置 autofs
    聚观早报 | 首个“5G-A智慧家庭”发布;李鹏称5G-A是5G发展选择
    LiveMeida视频接入网关
    轨迹预测相关论文--持续更新
    【总结】hbase master重启恢复失败问题修复
    芯驰科技出席2023云栖大会,探讨新汽车舱驾融合
    windows10安装redis服务【成功安装】
  • 原文地址:https://blog.csdn.net/weixin_43882265/article/details/132871654