Maven 打包包含 system 依赖的 Jar 包 - maven-assembly-plugin 配置详解
本文将介绍如何使用 Maven 的 maven-assembly-plugin 插件打包包含 system 修饰的依赖、普通依赖以及 classpath 下的类的 Jar 包。以下是一个示例的 pom.xml 文件,您可以根据自己的需求进行调整。
<project>
...
<build>
<plugins>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<version>3.3.0</version>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<mainClass>com.example.MainClass</mainClass> <!-- 替换为您的主类 -->
</manifest>
</archive>
<dependencySets>
<dependencySet>
<includes>
<include>system:*</include>
</includes>
<outputDirectory>lib</outputDirectory>
<useProjectArtifact>true</useProjectArtifact>
<scope>system</scope>
</dependencySet>
<dependencySet>
<includes>
<include>!system:*</include>
</includes>
<outputDirectory>lib</outputDirectory>
<useProjectArtifact>true</useProjectArtifact>
<scope>compile</scope>
</dependencySet>
</dependencySets>
</configuration>
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
...
</project>
在上述示例中,配置了 maven-assembly-plugin 插件的相关参数:
<descriptorRefs>:指定使用jar-with-dependencies描述符,该描述符将打包所有依赖项。<archive>:指定打包的 archive 配置,其中<addClasspath>true</addClasspath>表示将类路径包含在 MANIFEST.MF 文件中,<mainClass>com.example.MainClass</mainClass>表示指定主类。<dependencySets>:配置依赖项集合,其中<include>system:*</include>表示包含 system 修饰的依赖项,<include>!system:*</include>表示包含普通依赖项。<outputDirectory>lib</outputDirectory>表示将依赖项输出到 lib 目录下,<useProjectArtifact>true</useProjectArtifact>表示包含项目本身的依赖项,<scope>system</scope>和<scope>compile</scope>分别表示 system 修饰的依赖和普通依赖。
最后,在执行 mvn package 命令时,maven-assembly-plugin 插件会根据配置将包含 system 修饰的依赖、普通依赖以及 classpath 下的类打包到生成的 jar 文件中。
原文地址: https://www.cveoy.top/t/topic/zi9 著作权归作者所有。请勿转载和采集!