我在我的应用程序中使用Gradle(v2.0)。对于其中一个依赖项,我在版本中使用通配符(参见下面的代码)
的build.gradle
ext {
my_utils_version = "1.0+"
}
dependencies {
compile "com.demo.myapp:my-utils:${my_utils_version}"
}
我使用以下代码
从我的gradle构建生成POMtask writePom << {
conf2ScopeMappings.mappings.remove(configurations.testCompile)
conf2ScopeMappings.mappings.remove(configurations.testRuntime)
pom {
}.writeTo("$buildDir/libs/pom.xml")
}
assemble.dependsOn writePom
因此,只要Gradle生成POM,它就会使用1.0+
作为依赖项compile "com.demo.myapp:my-utils:${my_utils_version}"
的版本。在生成的POM.xml中,我看到
<dependency>
<groupId>com.demo.myapp</groupId>
<artifactId>my-utils</artifactId>
<version>1.0+</version>
<scope>compile</scope>
</dependency>
Maven无法解析版本1.0+
。 Maven需要[1.0)
作为自己的通配符版本。
有人可以帮我解决这个问题吗?如何告诉Gradle使用[1.0)
代替1.0+
?
答案 0 :(得分:1)
Gradle确实支持Maven的版本范围表示法,因此您可以在构建脚本中使用[1.0)
(尽管我不太确定Maven / Gradle是否允许省略上限)。
答案 1 :(得分:0)
根据Peter Niederwieser的说法,我应该使用符号[1.0,)
作为版本。 Maven和Gradle都理解这种表示法。
ext {
my_utils_version = "[1.0,)"
}
dependencies {
compile "com.demo.myapp:my-utils:${my_utils_version}"
}
这解决了我的问题。由于彼得没有回答这个建议作为答案,我这样做。所以,彼得给出了实际答案;不是我:)。
谢谢Peter的帮助。它帮助我节省了大量时间,并在我的应用程序中摆脱了另一个优先级为1的问题。