我正在努力发布JesterJ的第一个真正有用的版本,并且已经遇到了依赖解析的重大问题。 Jfrog的善良人士已经足够好,能够通过免费访问Artifactory Pro来识别我的开源工作,因此我使用它来检查和验证我的传递依赖项的许可证。我使用Apache 2.0许可证,因此我尝试使用Apache's own standard来遵守它的2.0许可证。然而,其中一个依赖项,Apache Tika 1.12,有一些"类别X"依赖关系1.12是在我认为对该政策进行一些更改的时候发布的,而且新版本的Tika已经纠正了这些依赖性问题。
逻辑解决方案是升级我的Tika依赖。不幸的是,这并不顺利。当我将Tika升级到1.15(或现在的1.16)时,我发现我不再从tika-parsers获得传递依赖,包括没有得到导致编译问题的tika-core。以下是1.12的gradle依赖项输出:
+--- org.apache.tika:tika-parsers:1.12
| +--- org.apache.tika:tika-core:1.12
| +--- org.gagravarr:vorbis-java-tika:0.6
| | \--- org.apache.tika:tika-core:1.5 -> 1.12
| +--- com.healthmarketscience.jackcess:jackcess:2.1.2
| | +--- commons-lang:commons-lang:2.6
| | \--- commons-logging:commons-logging:1.1.3 -> 1.2
(etc)
在我的gradle构建中,除了2到6之外什么都没改变,我得到了:
+--- org.apache.tika:tika-parsers:1.16
+--- org.apache.solr:solr-solrj:5.5.0
| +--- commons-io:commons-io:2.4
| +--- org.apache.httpcomponents:httpclient:4.4.1
| | +--- org.apache.httpcomponents:httpcore:4.4.1
(etc)
这个问题存在于Artifactory / Gradle的交叉点,可能与Tika在最近版本中已经开始将它们的pom文件包含在META-INF中有关。
我尝试过的事情 -
我注意到Artifactory中的maven-central-cache存储库不会缓存1.16的pom,但会将pom缓存为1.12。如果有人能告诉我如何获得神器来缓存/服务pom或让gradle正确地请求它(不确定哪个是问题)那将是有帮助的。
此处可以看到完整的构建文件配置: https://github.com/nsoft/jesterj/blob/273c99a0bceccda7f0933299c699232fec1079ad/code/ingest/build.gradle
此处匿名访问jetsterj artifactory: https://jesterj.jfrog.io/jesterj/webapp/#/home
答案 0 :(得分:2)