maven-jar-plugin插件对scope="system"依赖的处理

在使用dubbo 时,基本都需要通过maven-jar-plugin来生成jar包文件,其中内容包括
META-INF/MAINIFEST.MF程序主文件
文件里有一个属性用来指定classpath 的,叫 Class-Path
maven-jar-plugin会将所有maven依赖放到这里来

Manifest-Version: 1.0
Archiver-Version: Plexus Archiver
Created-By: Apache Maven
Build-Jdk: 1.8.0_91
Main-Class: com.alibaba.dubbo.container.Main
Built-Time: 2018-01-16T08:15:14Z
XXXX: 1
Class-Path: . lib/cn-jufuns-ien-api-1.0.0.jar lib/zkclient-0.1.jar lib
 /zookeeper-3.4.6.jar lib/jline-0.9.94.jar 

但唯独是那些 独立jar包的maven依赖没有加进来:


            com.alipay.sdk
            alipay-sdk-signature
            0.0.1
            system
            ${project.basedir}/src/lib/alipay-sdk-jar.jar

例如做支付宝开发的时候需要用到的alipay-sdk.java.jar ,
因为没有放到maven 仓库所以不会写入到MAINIFEST.MF文件里的Class-Path。

解决方法一

将jar文件放到 maven 私库里,然后就可以不用使用syetem来触发这个bug

解决方法二

在maven-jar-plugin 里配置Class-Path,


        org.apache.maven.plugins
        maven-jar-plugin

            2.3.1
            
                
                    
                    false
                    
                        com.alibaba.dubbo.container.Main
                        false
                         true
                         lib/
                     
                     
                        . lib/alipay-sdk.java.jar
                        111
                     
                
            

请留意这个区域的配置,将本地jiar文件写入Class-Path:


        . lib/alipay-sdk.java.jar

配置了这个以后,maven-jar-plugin 会将其他maven 依赖的jar文件在这个基础上追加。
详细manifestEntries配置可以参考:
http://maven.apache.org/shared/maven-archiver/examples/manifestEntries.html

你可能感兴趣的:(maven-jar-plugin插件对scope="system"依赖的处理)