java外部依赖 打包
参考:https://www.cnblogs.com/chywx/p/11563318.html
<!--pom.xml file-->
<build>
        <resources>
            <resource>
                <directory>src/main/resources</directory>
            </resource>
            <resource>
			    <!--子模块单独使用外部lib 使用下面语句-->
				<!--<directory>lib</directory>-->
				 <!--多个子模块使用外部lib 使用下面语句-->
                <directory>${user.dir}/lib</directory>
                <targetPath>BOOT-INF/lib/</targetPath>
                <includes>
                    <include>**/*.jar</include>
                </includes>
            </resource>
        </resources>
		</build>
参考:https://www.cnblogs.com/chywx/p/11563318.html
maven作为包管理工具,好处不必多说
但是有些情况,比如需要引入第三方包,如快递鸟,支付宝,微信等jar包(当然有可能直接提供maven依赖)
如果直接下载到本地之后,怎么整合到自己的maven工程呢?
方式挺多的,下面列举四种方式
1. 上传到maven中心仓库
愿意折腾可也搞搞,可以参考 如何发布Jar包到Maven中央仓库(确实比较麻烦)
如这是我手动上传到maven中央仓库的jar包 https://mvnrepository.com/search?q=chendahai
优点:可以直接在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中引入
 
[
](javascript:void(0); "复制代码")
        <dependency>
          <groupId>dingding</groupId>
          <artifactId>dingding</artifactId>
          <version>2.8</version>
          <scope>system</scope>
          <systemPath>${project.basedir}/lib/taobao-sdk-java.jar</systemPath>
        </dependency>
[
](javascript:void(0); "复制代码")
注意:
- groupId:自定义
 - artifactId:自定义
 - version:自定义
 - scope:必须是system
 - systemPath:jar包的路径(idea编写的时候会有提示的)
 
通过上述方式,在开发环境没有什么问题,不会存在什么包找不到等情况
但是,maven project部署一般打包发布,所以打包是需要额外配置的(上述的第一二中方式不需要做额外处理)
处理打包
打包的时候需要做如下配置,需要通过resource标签引入,位置build→resources→resource
[
](javascript:void(0); "复制代码")
 <build>
   <resources>
    <resource>
      <directory>lib</directory>
      <targetPath>/BOOT-INF/lib/</targetPath>
      <includes>
        <include>\*\*/\*.jar</include>
      </includes>
    </resource>
   </resources>
 </build>
[
](javascript:void(0); "复制代码")
- directory:指定lib文件夹的位置,由于是相对工程根目录,所以直接写上lib即可
 - targetPath:打包到的文件夹位置,写上BOOT-INF/lib即可,或者是WEB-INF/lib。【斜杠(/)加不加都行,如果是mac的话写./】
 - includes:一般都是以jar结尾,就写**/*.jar
 
较为完整的pom.xml
[
](javascript:void(0); "复制代码")
        <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\>
[
](javascript:void(0); "复制代码")
ok,mvn package即可。
5. mvn install安装到本地
参考https://blog.csdn.net/weixin_43206161/article/details/115241621
该方案差异性太大,不推荐这种方案
                    
                
                
            
        
浙公网安备 33010602011771号