使用 Maven Assembly 插件
如果你想将 Maven 的第三方依赖一同打包,你可以使用 Maven Assembly 插件的 jar-with-dependencies 描述符。这可以通过在 POM 文件中添加以下配置来实现:
<build>
<plugins>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<version>3.3.0</version>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
<archive>
<manifest>
<mainClass>com.example.App</mainClass>
</manifest>
</archive>
</configuration>
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
上述配置中,descriptorRef 部分指定了要使用的描述符类型为 jar-with-dependencies,它将打包所有的依赖项。
在执行 Maven 打包命令 (mvn clean package) 后,你会在 target 目录下找到一个包含所有依赖项的可执行 JAR 文件。
请注意,使用 jar-with-dependencies 描述符会导致最终的 JAR 文件非常大,因为它包含了所有依赖项。如果你只想打包应用程序本身而不包含依赖项,可以考虑使用其他描述符或者使用 Maven Shade 插件来进行定制。
使用 Maven Shade 插件
当你需要定制 Maven 打包过程,可以使用 Maven Shade 插件。下面是一个使用 Maven Shade 插件进行定制的案例:
- 在 POM 文件中引入 Maven Shade 插件及其配置:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>3.2.4</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>
</plugins>
</build>
上述配置中,我们将 Maven Shade 插件的版本设置为 3.2.4,并自定义了一个执行阶段为 package 的执行配置。在该配置中,我们使用了 ManifestResourceTransformer 转换器来指定主类。
2. 执行 Maven 打包命令:
mvn clean package
在执行完成后,你会在 target 目录下找到一个经过定制的可执行 JAR 文件。该 JAR 文件会保留主类信息,并根据需要对资源进行转换。
通过使用 Maven Shade 插件,你可以根据个人需求对打包过程进行更加灵活和定制化的配置。
使用 Maven Shade 插件进行定制
当使用 Maven Shade 插件进行定制时,你可以配置它来打包项目中的第三方依赖,使得生成的可执行 JAR 文件包含这些依赖。以下是一个使用 Maven Shade 插件将第三方依赖打包的案例:
3. 在 POM 文件中引入 Maven Shade 插件及其配置:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>3.2.4</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<artifactSet>
<includes>
<include>*:*</include>
</includes>
</artifactSet>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
上述配置中,我们引入了 Maven Shade 插件,并设置其版本为 3.2.4。
在插件的配置部分,我们定义了一个执行配置,其执行阶段为 package,表示该配置将在执行 Maven 打包命令时生效。
在该配置中,我们使用了 <artifactSet>
元素来配置要打包的第三方依赖。通过 元素指定 *: *,表示将打包所有的依赖项。
2. 执行 Maven 打包命令:
mvn clean package
在执行完成后,你会在 target 目录下找到一个经过定制的可执行 JAR 文件。该 JAR 文件会包含项目的编译输出以及所有的第三方依赖。
通过使用 Maven Shade 插件,并配置合适的 artifactSet,你可以将第三方依赖打包到生成的可执行 JAR 文件中,方便部署和运行。这样可以消除对外部依赖的要求,使得可执行 JAR 文件更加独立和方便使用。