gradle:从ivy存储库

时间:2018-01-17 20:44:25

标签: java gradle ivy

我们使用内部常春藤存储库,正在逐步远离蚂蚁/常春藤,并在gradle中执行任务。我将我的常春藤存储库设置为gradle,如下所示:

repositories {
    ivy {
        url "${ivy_repository_url}"
        layout "pattern", {
            ivy "repository/[organisation]/[module]/[revision]/[artifact].[ext]"
            artifact "repository/[organisation]/[module]/[revision]/[artifact].[ext]"
            m2compatible = true
        }
        credentials {
            username "${ivy_repository_username}"
            password "${ivy_repository_password}"
        }
    }
}

并且在执行任务时它会按预期解析,但是,在某些情况下,如果命名约定不匹配,它会拉下存储库中的所有内容,因此我最终得到了许多额外的东西,javadocs.zip, sources.zip和其他一切。

为了解决这个问题,我想首先将特定的jar文件下载到temp文件夹,然后从本地编译它们,但我不知道如何告诉gradle下载一个名称与模块名称不同的文件。

示例:

  

ivyFiles' net.sourceforge.jtidy:jtidy:r938 @ jar'

net.sourceforge.jtidy 存储库中下载 jtidy-r938.jar ,但类似

  

ivyFiles' com.gargoylesoftware:htmlunit:2.7@jar'

会拉 htmlunit-2.7.jar ,而不是文件 htmlunit-core-js-2.7.jar

如果我省略了@jar,它将恢复调用 ivy.xml 文件,我留下了我想要避免的所有垃圾+依赖项。我试过以下但没有成功

    ivyFiles ('com.gargoylesoftware:htmlunit:2.7'){
        artifact{
            name = 'htmlunit-core-js'
            type = 'jar'
        }
    }

必须有办法做到这一点。

谢谢

1 个答案:

答案 0 :(得分:1)

我明白了。这就是我最终做的事情

ivyFiles ('com.gargoylesoftware:htmlunit:2.7'){
    transitive = false
    artifact {
        name = 'htmlunit-core-js'
        extension = 'jar'
        type = 'jar'
    }
}

现在只下载了 htmlunit-core-js-2.7.jar 文件