【问题标题】:Gradle dependencies: how to remove java classes from jar in repository?Gradle 依赖项:如何从存储库中的 jar 中删除 java 类?
【发布时间】:2017-07-04 23:34:56
【问题描述】:

等级:如何从公共存储库中的 jar 中排除一些 java 类?

例如,存储库中的 foo.jar 依赖于 bar1.jar、bar2.jar

foo.jar
     bar1.jar
     bar2.jar

从 foo.jar 中删除“javax/**”,将其添加到 runtimeOnly 配置中

dependencies {
    runtimeOnly foo-changed.jar, bar1.jar, bar2.jar
}

试过

configurations {
     changeFoo
}

dependencies {
     changeFoo "group:foo:1.0"  // contains foo.jar, bar1.jar, bar2.jar
}

task changeFoo(type: Jar) {
    def jarFile = configurations.changeFoo.singleFile   // error: more than one file

    from zipTree(jarFile) {
        exclude 'javax/**'
    }

    destinationDir project.libsDir
    archiveName "foo-changed.jar"
}

如何获取单个文件(foo.jar)? 如何将configurations.changeFoo中的foo.jar替换为foo-changed.jar?

dependencies {
    runtimeOnly.extendsFrom changeFoo
}

【问题讨论】:

  • 我看到你在这里问了很多关于 gradle 的问题,其中大多数已经在堆栈上得到了回答,或者在谷歌上很容易找到,你是否考虑过做一些研究,以及你的问题不清楚并且不是最小、完整和可验证的示例,请考虑遵循这些规则以帮助我们帮助您。顺便说一句,您在上面问了 3 个问题,但我不确定您要达到什么目的
  • 其实我在提问之前做了一些搜索。我对 Gradle 完全陌生了大约 2 周。

标签: gradle dependencies


【解决方案1】:

试试这样的。

configurations.changeFoo.asFileTree.each {
    from(zipTree(it))
    exclude ''
}
destinationDir project.libsDir
archiveName "foo-changed.jar"

【讨论】:

  • 排除一些java类,而不是传递依赖。
猜你喜欢
  • 2016-01-28
  • 1970-01-01
  • 1970-01-01
  • 2021-02-14
  • 1970-01-01
  • 2021-08-15
  • 2015-03-07
  • 1970-01-01
  • 2019-05-18
相关资源
最近更新 更多