【问题标题】:Gradle dependency zip compileGradle 依赖 zip 编译
【发布时间】:2018-03-07 22:28:45
【问题描述】:

目前我正在使用需要特定外部 API 的 Java 后端服务器:http://repo.ehealth.fgov.be/artifactory/maven2-cache/be/fgov/ehealth/connector/connector-packaging-technical/3.14.2/

我目前面临的问题如下:

我用gradle编译依赖,gradle可以成功下载这个API。但是,我不能在我的代码中使用这些罐子。原因是,zip 包含其他几个文件夹,如文档,jar 位于 zip 的 lib 文件夹中。所以我需要的唯一内容位于 zip 中。

目前我像这样编译依赖项:

compile(group: 'be.fgov.ehealth.connector', name: 'connector-packaging-technical', version: '3.14.2', classifier: 'java', ext: 'zip')

是否有可能使用lib文件夹中的所有jar?

【问题讨论】:

  • 你能把 zip 解压到 lib 目录,然后从那里包含 JAR 吗?
  • lib文件夹包含20多个jar文件。所以我不知道如何将它们与 Gradle 一起使用。
  • 添加了答案,解释了我的评论

标签: gradle dependencies


【解决方案1】:

本地 JAR 选项

  • 首先,您将为项目创建自己的 lib 文件夹,该文件夹位于项目根目录中。
  • 然后,您可以将想要的 JAR 提取到那里,这样该目录就会包含您想要使用的 JAR。
  • 最后,您将 JAR 添加到 gradle 中,如下所示:source

    dependencies {
      compile files('lib/something_local.jar')
    }
    

私人回购选项

假设 JAR 不可公开访问,并且假设许可证没有禁止这样做,您可以将其托管在只有您有权访问的私有 repo 上,以便可以在项目之间共享依赖项。

【讨论】:

  • 是否有可能在一个命令中编译所有文件?像通配符?我已经尝试过类似的方法,但是当我尝试将服务器推送到在线时,它会因为找不到依赖项而崩溃。
  • 我不建议这样做,您可以在 gradle 中使用通配符来包含依赖项,然后使用 shadowjar 之类的东西制作单个发布 jar,如果 jar 手动合并 jar 可能会导致问题提供服务。
【解决方案2】:

老实说,在快速浏览了该公共存储库之后,我建议不要依赖 zip 打包,而是去获取您明确需要的 jar。

例如,zip 文件包含许多connector-* jar 文件,快速浏览后可以在http://repo.ehealth.fgov.be/artifactory/maven2-cache/be/fgov/ehealth/connector/ 找到这些文件。

例如,文件lib/connector-utilities-etee-3.14.2.jar 可以be found 甚至有一个适当的maven pom 文件来指示它需要的依赖项。

而且已经这样做了:

dependencies {
  compile 'be.fgov.ehealth.connector:connector-utilities-etee:3.14.2'
}

会给你的项目带来很多依赖。

注意:你应该直接使用传递依赖。从长远来看,明确声明这些总是更好,即使它们已经以传递方式出现。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-07
    • 2014-04-14
    • 2016-09-16
    • 2014-07-17
    相关资源
    最近更新 更多