美文网首页
gradle踩坑记录

gradle踩坑记录

作者: kevin0016 | 来源:发表于2019-06-20 17:10 被阅读0次

描述问题

  • 项目:https://github.com/alibaba/p3c
  • 场景,公司进行代码规范化行动,使用阿里的一套规范化格式,需要对上面的项目打成可执行jar包,并且写入git 的hooks文件
    执行步骤
    初始化gradle
gradle init

编辑build.gradle,加入jar块(最后一块代码块)

apply plugin: 'java'
apply plugin: 'maven'

group = 'com.alibaba.p3c'
version = '1.3.6'

description = """p3c-pmd"""

sourceCompatibility = 1.7
targetCompatibility = 1.7
tasks.withType(JavaCompile) {
    options.encoding = 'UTF-8'
}

configurations.all {
}

repositories {
     maven { url "https://oss.sonatype.org/content/repositories/snapshots" }
     maven { url "http://repo.maven.apache.org/maven2" }
}
dependencies {
    compile group: 'net.sourceforge.pmd', name: 'pmd-java', version:'5.5.2'
    compile group: 'net.sourceforge.pmd', name: 'pmd-vm', version:'5.5.2'
    testCompile group: 'net.sourceforge.pmd', name: 'pmd-test', version:'5.5.2'
}
jar {
    from {
        // 添加依懒到打包文件
        configurations.runtime.collect{zipTree(it)}
    }
}

开始构建Gradle项目

./gradlew build

构建完成后在build/libs/中会生成p3c-pmd-1.3.6.jar包,到此就获取到了我们需要的Jar包了
然后执行jar包的时候......

java -cp p3c-pmd-1.3.6.jar net.sourceforge.pmd.PMD -d test.java -R rulesets/java/ali-comment.xml

出现

Exception in thread "main" java.lang.NullPointerException
        at net.sourceforge.pmd.cli.PMDParameters.getLanguage(PMDParameters.java:223)
        at net.sourceforge.pmd.cli.PMDParameters.transformParametersIntoConfiguration(PMDParameters.java:151)
        at net.sourceforge.pmd.PMD.run(PMD.java:490)
        at net.sourceforge.pmd.cli.PMDCommandLineInterface.run(PMDCommandLineInterface.java:167)
        at net.sourceforge.pmd.PMD.main(PMD.java:477)

????????????一脸的黑人问号
为啥空指针异常了,去查看PMD源码,发现PMD获取不到资源文件中的语言值。而这个资源文件在META-INF中。
打开生成的jar看一下情况,结果。。。。。


image.png

卧槽?这几个相同的文件咋回事???
上面的构建方式没有去解决Jar包中META-INF文件下的文件合并问题。每个依赖的jar包在合并时都是复制进来,这就导致了原先的PMD包中有net.sourceforge.pmd.cpd.Language和net.sourceforge.pmd.lang.Language这两个文件,而p3c-pmd中也有这两个文件,冲突了。

最后还是直接用maven的打包指令.......


image.png

一切正常。。。

相关文章

网友评论

      本文标题:gradle踩坑记录

      本文链接:https://www.haomeiwen.com/subject/zgpjqctx.html