gradle无法识别maven的Classifiers属性

由于项目需要集成jenkins,千辛万苦的在github上找到了jenkins非官方的java api,

compile group: 'com.offbytwo.jenkins', name: 'jenkins-client', version: '0.3.7'
本来是一件非常高兴的事,没想到用gradle引入的时候,死活编译不通过,报以下的错误:


D:\daydao-code\dayhr-patchManager>gradle clean build -x test
:clean UP-TO-DATE
:compileJava FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Could not resolve all files for configuration ':compileClasspath'.
> Could not find json-lib.jar (net.sf.json-lib:json-lib:2.4).
  Searched in the following locations:
      http://nexus.dayhr.com/nexus/content/groups/public/net/sf/json-lib/json-lib/2.4/json-lib-2.4.jar



通过依赖分析才知道,jenkins的java client api依赖了一个比较老的json包

com.offbytwo.jenkins:jenkins-client:0.3.7

+--- com.fasterxml.jackson.core:jackson-annotations:2.3.4 -> 2.6.5

+--- com.fasterxml.jackson.core:jackson-core:2.3.4 -> 2.6.5

+--- com.fasterxml.jackson.core:jackson-databind:2.3.4 -> 2.6.5 (*)

+--- dom4j:dom4j:1.6.1 (*)

+--- net.sf.json-lib:json-lib:2.4 (*)

+--- com.google.guava:guava:17.0 -> 19.0

+--- commons-lang:commons-lang:2.6

+--- commons-io:commons-io:2.4

+--- org.apache.httpcomponents:httpclient:4.3.6 (*)

+--- jaxen:jaxen:1.1.6

+--- org.slf4j:slf4j-api:1.7.21

\--- xml-apis:xml-apis:1.4.01


在maven的pom依赖定义为

<dependency>

      <groupId>net.sf.json-lib</groupId>

      <artifactId>json-lib</artifactId>

      <classifier>jdk15</classifier>

</dependency>

详细的依赖信息可以参考 

http://repo1.maven.org/maven2/com/offbytwo/jenkins/jenkins-client/0.3.7/jenkins-client-0.3.7.pom


当时自家的私服是有这个jar包的,仔细比较发现是gradle没有解析出jdk15这个尾巴。

/net/sf/json-lib/json-lib/2.4/json-lib-2.4-jdk15.jar


通过查阅gradle bug中心,找了几个比较有代表的bug给大家看看


https://discuss.gradle.org/search?q=Classifiers

https://discuss.gradle.org/t/build-failure-when-4-1-0-of-net-java-dev-jna-jna-is-selected-in-place-of-3-3-0-due-to-change-in-artifacts-with-classifiers/9377

https://issues.gradle.org/browse/GRADLE-1934
https://issues.gradle.org/browse/GRADLE-67


看到有这么问题,我只能是说gradle毕竟还是太年轻了,没有maven的成熟。

经过这么一方折腾后,最后按maven的jar包管理的最原始依赖【system】,还果真在gradle中找到了类似的方法:


https://docs.gradle.org/current/userguide/dependency_management.html#sub:file_dependencies


大家可以详细的阅读下gradle依赖管理,懂maven的一看就能懂。



最终把依赖配置修改成如下配置,项目顺利编译通过。

compile (group: 'com.offbytwo.jenkins', name: 'jenkins-client', version: '0.3.7'){
    exclude group: 'net.sf.json-lib'
}
compile fileTree(dir: 'libs', include: '*.jar')


当然不要忘了,在你的项目根目录下建立一个libs的目录,并且把json-lib-2.4-jdk15.jar下载到该目录。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值