maven打包含依赖项方法

本文介绍如何使用maven-assembly-plugin插件将项目依赖的所有jar文件整合到单一的可执行jar包中。通过配置插件并执行特定命令,实现便捷部署。

maven打包生成普通jar时(方法maven>lifecycle>package),只会包含工程下源码编译结果,不包含pom.xml里依赖的jar,如需加入项目依赖的jar文件,可使用maven-assembly-plugin插件,使用方式如下:

  • 在pom.xml中添加maven-assembly-plugin插件
<plugins>
          <plugin>  
              <artifactId>maven-assembly-plugin</artifactId>  
              <configuration>  
                  <!--这部分可有可无,加上的话则直接生成可运行jar包-->
                  <!--<archive>-->
                      <!--<manifest>-->
                          <!--<mainClass>${exec.mainClass}</mainClass>-->
                      <!--</manifest>-->
                  <!--</archive>-->
                  <descriptorRefs>  
                      <descriptorRef>jar-with-dependencies</descriptorRef>  
                  </descriptorRefs>  
             </configuration>
        </plugin>
  •  在pom.xml同级目录下打开命令行执行如下命令/或者双击maven>Plugins>assembly>assembly:assembly(我选择的方式)
mvn assembly:assembly

执行成功后会在target文件夹下多出一个以-jar-with-dependencies.jar结尾的jar包,这个jar包就包含了项目依赖的所有jar的class文件。

  • 如果不希望依赖的JAR包变成CLASS的话,可以修改ASSEMBLY插件.

找到assembly在本地的地址,一般是{本地仓库}\org\apache\maven\plugins\maven-assembly-plugin\2.4
用WINZIP或解压工具打开此目录下的maven-assembly-plugin-2.4.jar, 找到assemblies\jar-with-dependencies.xml
把里面的UNPACK改成FALSE




链接:https://www.jianshu.com/p/f5c23e7205a7/
 

### 使用 Maven 打包时包含依赖 当使用 Maven 进行打包并希望包含特定的依赖项时,可以采用多种方法来实现这一目标。对于本地 JAR 文件作为依赖的情况,在 Mac 环境下可以通过定义 `system` 范围的依赖来引入自定义路径下的 jar 包: ```xml <dependency> <groupId>com.azang.maven</groupId> <artifactId>test-maven</artifactId> <version>1.0-SNAPSHOT</version> <systemPath>/Users/405/test-maven-1.0-SNAPSHOT.jar</systemPath> <scope>system</scope> </dependency> ``` 需要注意的是,上述方式适用于非常特殊的情形,通常推荐的方式是将第三方库安装至本地仓库或者通过远程仓库管理。 如果目的是为了在构建 WAR 或者其他类型的项目时自动处理所有声明过的依赖,则应当利用插件功能完成这项工作。例如,针对 Web 应用程序使用的 maven-war-plugin 可以配置哪些资源应该被打包进去[^2]: ```xml <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-war-plugin</artifactId> <version>3.3.2</version> <configuration> <!-- 定义要包含的内容 --> <dependentWarIncludes>**/IncludeME,**/images</dependentWarIncludes> </configuration> </plugin> </plugins> </build> ``` 此外,还可以考虑使用 shade 插件创建一个包含所有运行所需类文件及其依赖关系在内的单一可执行 JAR 文件;assembly 插件也提供了灵活的方式来组装最终产物的形式和结构。 #### 关于如何确保所有依赖被正确嵌入到输出工件中的建议如下: - **确认 POM 中已正确定义了所需的依赖** 检查项目的 pom.xml 是否已经包含了所有必要的 `<dependencies>` 配置节,并且版本号匹配预期的要求。 - **选择合适的插件** 根据实际需求挑选适合的 Maven 生命周期绑定阶段以及相应的插件来进行打包操作,比如 war, jar-with-dependencies 等形式。 - **测试验证** 构建完成后务必进行全面的功能性和兼容性的测试,确保新生成的应用能够正常启动并且行为符合设计初衷。
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值