我是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'
}
}
}
唉,这个功能没有评估!救命啊!
答案 0 :(得分:6)
要获得组织部分的Maven样式布局,请使用:
repositories {
ivy {
url ...
layout 'pattern', {
m2compatible = true
...
}
}
}