【Maven 的第三方依赖一同打包】

使用 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 插件进行定制的案例:

  1. 在 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 文件更加独立和方便使用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值