我是Gradle/Groovy的新手,所以我可能会遗漏一些明显的东西.你能帮我吗?
我们使用Ivy进行依赖管理.我正在尝试Gradle并希望与我们现有的Ivy基础设施集成.通常这应该是可能的,但我们的常春藤的布局有点特殊,而且......我无法让它工作.
以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"/>
Run Code Online (Sandbox Code Playgroud)
但是我们必须这样做:
<dependency org="org.apache" name="commons-lang" rev="2.4" conf="compile"/>
Run Code Online (Sandbox Code Playgroud)
那是因为我们的常春藤是在考虑到组织的网址的情况下制定的,例如:
<ivyrepository>/org/apache/commons-lang/2.4/commons-lang-2.4.jar
Run Code Online (Sandbox Code Playgroud)
我现在尝试将其翻译为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'
}
Run Code Online (Sandbox Code Playgroud)
这当然是失败的,因为'[organization]/[module]'转换为'org.apache/commons-lang',它应该转换为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'
}
}
}
Run Code Online (Sandbox Code Playgroud)
唉,这个功能没有评估!救命!
要获得组织部分的Maven样式布局,请使用:
repositories {
ivy {
url ...
layout 'pattern', {
m2compatible = true
...
}
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
4455 次 |
最近记录: |