本文将介绍如何使用 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 文件中。

Maven 打包包含 system 依赖的 Jar 包 -  maven-assembly-plugin 配置详解

原文地址: https://www.cveoy.top/t/topic/zi9 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录