使用Gradle与自定义常春藤存储库

时间:2014-04-02 18:41:39

标签: gradle ivy

我是Gradle / Groovy的新手,所以我可能错过了一些明显的东西。你能帮忙吗?

我们正在使用Ivy进行依赖关系管理。我正在尝试使用Gradle并希望与我们现有的常春藤基础设施集成。通常情况下这应该是可能的,但我们的常春藤的布局有点特殊而且很好......我无法让它发挥作用。

以commons-lang-2.4.jar为例。

通常情况下,您通过常春藤获取此文件(参见http://mvnrepository.com/artifact/commons-lang/commons-lang/2.4):

<dependency org="commons-lang" name="commons-lang" rev="2.4"/>

但我们必须这样做:

<dependency org="org.apache" name="commons-lang" rev="2.4" conf="compile"/>

那是因为我们的常春藤的布局考虑到了组织的网址,例如像这样:

<ivyrepository>/org/apache/commons-lang/2.4/commons-lang-2.4.jar

我现在尝试将其翻译为Gradle:

repositories {
    ivy {
        url 'http://svnserver/svn_public/trunk/ivyrepository'
        layout 'pattern', {
            artifact '[organisation]/[module]/[revision]/[artifact]-[revision].[ext]'
            ivy '[organisation]/[module]/[revision]/[module]-[revision].ivy'
        }
    }
}

dependencies {
    compile 'org.apache:commons-lang:2.4'
}

这当然是失败的,因为&#39; [组织] / [模块]&#39;转换为&#39; org.apache / commons-lang&#39;,它应该转换为org / apache / commons-lang!

所以我试过这个,天真地认为replaceAll()会用斜线替换这些点:

repositories {
    ivy {
        url 'http://svnserver/svn_public/trunk/ivyrepository'
        layout 'pattern', {
            artifact '[organisation].replaceAll(\'.\',\'/\')/[module]/[revision]/[module]-[revision].jar'
            ivy '[organisation].replaceAll(\'.\',\'/\')/[module]/[revision]/[module]-[revision].ivy'
        }
    }
}

唉,这个功能没有评估!救命啊!

1 个答案:

答案 0 :(得分:6)

要获得组织部分的Maven样式布局,请使用:

repositories {
    ivy {
        url ...
        layout 'pattern', {
            m2compatible = true
            ...
        }
    }
}