Maven 教程

Maven 笔记

original icon
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.knowledgedict.com/tutorial/maven-an-executable-jar-with-dependencies.html

Maven 生成(打包)带有依赖的可以直接执行的一个 jar 包

Maven 问题汇总 Maven 问题汇总


在 Java 开发中,如果想把项目打成可直接执行的一个 jar 包,需要通过 maven 相关插件把依赖的 jar 包一起放进指定的一个 jar 包里;比较典型的使用场景是,如果有离线任务要通过 spark 提交相关 jar 包执行,那这时候需要这样操作,它有几种方式的操作。

maven-assembly-plugin(推荐方式)

maven-assembly-plugin 一个插件搞定,Maven 项目的 pom.xml 引入该插件,具体如下:

<build>
  <plugins>
    <plugin>
      <artifactId>maven-assembly-plugin</artifactId>
      <configuration>
        <archive>
          <manifest>
            <mainClass>com.xxx.xxx.MainClass</mainClass>
          </manifest>
        </archive>
        <descriptorRefs>
          <descriptorRef>jar-with-dependencies</descriptorRef>
        </descriptorRefs>
      </configuration>
    </plugin>
  </plugins>
</build>

然后执行如下打包命令:

mvn clean compile assembly:single

打包后会在 target 目录下生成一个 xxx-jar-with-dependencies.jar 文件,这个文件不但包含了自己项目中的代码和资源,还包含了所有依赖包的内容。所以可以直接通过 java -jar 来运行。

通常情况下,通过 mvn packageinstall 打 jar 包时,希望也把依赖包打进去,这是需要额外加一些配置,具体如下:

<build>
  <plugins>
    <plugin>
      <artifactId>maven-assembly-plugin</artifactId>
      <configuration>
        <archive>
          <manifest>
            <mainClass>com.xxx.xxx.MainClass</mainClass>
          </manifest>
        </archive>
        <descriptorRefs>
          <descriptorRef>jar-with-dependencies</descriptorRef>
        </descriptorRefs>
      </configuration>
      <executions>
        <execution>
          <!-- 在执行 package 打包时,执行 assembly:single 进行 jar 包合并操作 -->
          <id>make-assembly</id>
          <phase>package</phase> 
          <goals>
            <goal>single</goal>
          </goals>
        </execution>
      </executions>
    </plugin>
  </plugins>
</build>

 

通过 java 命令直接执行 jar 包里的 main 方法,主要有两种方式,一是打的 jar 包的 META-INF/MANIFEST.M ...
在Java中执行JAR包有多种方式,我将为您介绍其中的几种常见方式,并提供相应的步骤流程和示例代码。gradle文件中,添加对所需库的依赖坐 ...
Lombok是一个Java库,它通过注解来简化Java代码的编写,减少了样板代码的数量,提高了代码的可读性和可维护性。xml`文件中,添加以 ...
以下是几种常见的实现方式,以及每种方式的步骤流程、依赖坐标和示例代码:###方式一:使用Maven命令行打包步骤流程:1.gradle`配置 ...
管理项目依赖是 Maven 的重要核心功能之一,为了能自动化地解析任何一个 Java 构件,Maven 需要将它们进行唯一标识,这就是 Ma ...