Maven 打 JAR 包

分离依赖

使用 Maven Jar Plugin 插件,可以将项目自身单独打成一个 JAR,依赖的 JAR 放置到指定目录。

在项目的 pom.xml 中添加如下配置:

<!-- project > build > plugins -->
<plugin>
  <!-- Maven Jar Plugin(构建 JAR 包) -->
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-jar-plugin</artifactId>
  <version>3.3.0</version>
  <configuration>
    <archive>
      <manifest>
        <addClasspath>true</addClasspath>
        <classpathPrefix>lib/</classpathPrefix>  <!-- 如果 addClasspath 为 true,则这里填写 classpath 的目录前缀 -->
        <mainClass>com.example.App</mainClass>   <!-- 主类名 -->
      </manifest>
    </archive>
  </configuration>
</plugin>

<plugin>
  <!-- Maven Dependency Plugin(拷贝依赖) -->
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-dependency-plugin</artifactId>
  <version>3.6.1</version>
  <executions>
    <execution>
      <id>copy-dependencies</id>
      <phase>prepare-package</phase>
      <goals>
        <goal>copy-dependencies</goal>
      </goals>
      <configuration>
        <outputDirectory>${project.build.directory}/lib</outputDirectory>  <!-- 依赖输出目录,必须和 classpathPrefix 对应 -->
      </configuration>
    </execution>
  </executions>
</plugin>

运行如下命令进行打包:

mvn clean package

输出结构(有省略):

target
├── lib
│   ├── dependency-1.jar
│   ├── dependency-2.jar
│   └── dependency-3.jar
└── demo-1.0.jar

其中 demo-1.0.jar 是项目的 JAR,lib 目录包含依赖的 JAR。

使用方法:

java -jar demo-1.0.jar

使用时,lib 目录和构建产物 demo-1.0.jar 必须位于同一目录。

合并依赖

使用 Maven Shade Plugin,可以将项目及其依赖打包到单个 JAR 文件中(fat JAR)。

在项目的 pom.xml 中添加如下配置:

<!-- project > build > plugins -->
<plugin>
  <!-- Maven Shade Plugin(将项目输出合并到单个 JAR 包) -->
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-shade-plugin</artifactId>
  <version>3.6.0</version>
  <executions>
    <execution>
      <phase>package</phase>
      <goals>
        <goal>shade</goal>
      </goals>
      <configuration>
        <transformers>
          <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
            <mainClass>com.example.App</mainClass> <!-- 主类名 -->
          </transformer>
        </transformers>
      </configuration>
    </execution>
  </executions>
</plugin>

运行如下命令进行打包:

mvn clean package

输出结构(有省略):

target
├── demo-1.0-jar-with-dependencies.jar
└── demo-1.0.jar

其中 demo-1.0.jar 是不带依赖的 JAR 包,demo-1.0-jar-with-dependencies.jar 是带依赖的 JAR 包。

使用方法:

java -jar demo-1.0-jar-with-dependencies.jar

参考:Maven - 打包可执行 jar 包 | 简书

posted @ 2024-02-18 17:51  Undefined443  阅读(29)  评论(0)    收藏  举报