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

1. 打包成war包

1.1 若pom.xml中已经指定war

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

mvn clean package

1.2 若pom.xml中没有指定war

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

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.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 插件将生成两个文件:

  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>

执行 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中的依赖不能打包进去。

你可能感兴趣的:(jar,java,maven)