gpt4 book ai didi

gradle - 将 Gradle 与自定义 Ivy 存储库一起使用

转载 作者:行者123 更新时间:2023-12-04 12:08:10 24 4
gpt4 key购买 nike

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

我们使用 Ivy 进行依赖管理。我正在试用 Gradle 并希望与我们现有的 Ivy 基础设施集成。通常这应该是可能的,但我们 Ivy 的布局有点特殊,好吧……我无法让它工作。

以 commons-lang-2.4.jar 为例。

通常,您会像这样通过 ivy 获取此文件(参见 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"/>

那是因为我们的 Ivy 是根据组织的 url 进行布局的,例如像这样:
<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'
}

这当然是失败的,因为“[organisation]/[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'
}
}
}

唉,函数没有求值!帮助!

最佳答案

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

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

关于gradle - 将 Gradle 与自定义 Ivy 存储库一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22820249/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com