gradle - 等级不通过人工方式解决Tika的传递依赖关系

标签 gradle artifactory apache-tika

我正在努力发布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解析器获得传递依赖,包括没有获得tika-core导致编译问题。这是1.12的gradleDependenccies输出:

+--- 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中。

我尝试过的事情-
  • 移至gradle 4.0(不变)
  • 在JCenter之前将MavenCentral添加到我的libs-release虚拟存储库中(不变)

  • 我注意到Artifactory中的maven-central-cache存储库不为1.16缓存pom,但为1.12缓存pom。如果有人能告诉我如何获取人工制品来缓存/服务pom或让gradle正确地请求它(不确定是哪个问题),那将是有帮助的。

    完整的构建文件配置在此处可见:
    https://github.com/nsoft/jesterj/blob/273c99a0bceccda7f0933299c699232fec1079ad/code/ingest/build.gradle

    在此处匿名访问jetsterj Artifact :
    https://jesterj.jfrog.io/jesterj/webapp/#/home

    最佳答案

    最后,我不得不向JFrog提交错误。他们为我解决了。

    原来问题出在我启用的设置上。有一个设置可以用404(而不是401)隐藏未经授权的资源(防止人们四处钓鱼,以查看未透露的内容)。听起来这听起来更安全,所以我启用了它。我相信一切都很好,直到我还启用了匿名访问...这种组合打破了gradle的依赖关系解决方案。 JFrog支持人员说,maven(可能还有gradle)总是首先尝试匿名访问。在获取404之后,它可能会假设资源(pom.xml)不存在。没有pom,没有依赖项列表。

    Tika 1.12的唯一特别之处在于,在启用匿名访问之前,我已经将其加载。

    因此,解决方法是取消选中此设置:

    screenshot of setting

    关于gradle - 等级不通过人工方式解决Tika的传递依赖关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45329205/

    相关文章:

    maven - 具有 Artifactory 的 3rd 方传递依赖项的 Android 库

    windows - 从 Windows Powershell 脚本上传到 Artifactory

    drupal - 用于阿拉伯语 PDF 的 Solr

    .net - 如何在 .Net Core 上使用 Apache Tika?

    gradle - 如何禁用 gradle 的本地构建缓存,但保持启用远程缓存?

    android - 如何在 Android 中为 Espresso 测试自定义 Jacoco

    android - 建立Android Studio项目时发生逾时错误

    gradle - 在ext中创建一个闭包

    Artifactory 在启动过程中无法从/api/v1/system/ping 获得响应

    Java/Spring : How to Figure out MimeType on an InputStream Without Consuming It