maven 作为包管理工具, 好处不必多说
但是有些情况, 比如需要引入第三方包, 如快递鸟, 支付宝, 微信等 jar 包(当然有可能直接提供 maven 依赖)
如果直接下载到本地之后, 怎么整合到自己的 maven 工程呢?
方式挺多的, 下面列举四种方式
1. 上传到 maven 中心仓库
https://oss.sonatype.org/
愿意折腾可也搞搞, 可以参考 如何发布 Jar 包到 Maven 中央仓库 https://www.jianshu.com/p/f726dce40bef (确实比较麻烦)
优点: 可以直接在 pom.xml 中引入, 打包部署没有问题
缺点: 上传复杂, 麻烦(创建工单, 生成秘钥等等)
2. 搭建 maven 私服
手动在后台管理页面上传, 之后 pom.xml 引入
上传方式查看 maven 私服 nexus 上传第三方 jar 包以及下载
优点: 下载速度快, maven 聚合项目更适用, 内部适用 deploy 即可, 打包部署没有问题
缺点: 相比第一种还要麻烦些, 还占用本地服务器资源
3. 传统方式
java SE 的套路
新建 lib 包, 之后导入(eclipse 直接 build path)(idea 麻烦些: File→project structure→libraries→+jar 包)
优点: 简单, 不用做额外的配置
缺点: 协作开发, 多人都需做同样的操作, 沟通也是一回事
4. pom 文件 scope 的 system 属性
优点: 配置后之后直接引入, maven reImport 即可
缺点: 没啥缺点, 就是配置者得费些时间
前置条件
要引入如下 taobao-sdk-java.jar
操作
自定义目录, 这里在 project 的根目录新建 lib 文件夹, 将 jar 放进去
pom.xml 中引入
- <dependency>
- <groupId>dingding</groupId>
- <artifactId>dingding</artifactId>
- <version>2.8</version>
- <scope>system</scope>
- <systemPath>${project.basedir}/lib/taobao-sdk-java.jar</systemPath>
- </dependency>
注意:
groupId: 自定义
artifactId: 自定义
version: 自定义
scope: 必须是 system
systemPath:jar 包的路径(idea 编写的时候会有提示的)
通过上述方式, 在开发环境没有什么问题, 不会存在什么包找不到等情况
但是, maven project 部署一般打包发布, 所以打包是需要额外配置的(上述的第一二中方式不需要做额外处理)
处理打包
打包的时候需要做如下配置, 需要通过 resource 标签引入, 位置 build→resources→resource
- <build>
- <resources>
- <resource>
- <directory>lib</directory>
- <targetPath>/BOOT-INF/lib/</targetPath>
- <includes>
- <include>**/*.jar</include>
- </includes>
- </resource>
- </resources>
- </build>
- directory: 指定 lib 文件夹的位置, 由于是相对工程根目录, 所以直接写上 lib 即可
- targetPath: 打包到的文件夹位置, 写上 BOOT-INF/lib 即可, 或者是 web-INF/lib.[斜杠 (/) 加不加都行, 如果是 Mac 的话写./]
- includes: 一般都是以 jar 结尾, 就写 **/*.jar
较为完整的 pom.xml
- <dependency>
- <groupId>dingding</groupId>
- <artifactId>dingding</artifactId>
- <version>2.8</version>
- <scope>system</scope>
- <systemPath>${project.basedir}/lib/taobao-sdk-java-auto_1479188381469-20190628.jar</systemPath>
- </dependency>
- </dependencies>
- <build>
- <resources>
- <resource>
- <directory>lib</directory>
- <targetPath>/BOOT-INF/lib/</targetPath>
- <includes>
- <include>**/*.jar</include>
- </includes>
- </resource>
- </resources>
ok,mvn package 即可.
来源: https://www.cnblogs.com/chywx/p/11563318.html