我有一个关于在Gradle中发布Ivy的问题 .
从Ivy,我希望如果我发布一个带有例如这种依赖的工件:
<dependency org="org.apache.ant" name="ant" rev="1+"/>
我发布的ivy.xml获得了固定版本和动态版本:
<dependency org="org.apache.ant" name="ant" rev="1.9.6" revConstraint="1+"/>
我也希望在Gradle中 . 我有Gradle 2.10 .
这是我的Gradle项目:
apply plugin: "java"
group = 'org.wibble'
version = "1.2.3"
repositories {
mavenCentral()
}
dependencies {
compile group: 'org.apache.ant', name: 'ant', version: '1+' // resolves to version 1.9.6 at the time of writing
}
uploadArchives.repositories {
ivy { name "testrepo"; url "$buildDir/testrepo" }
}
如果我运行 gradle uploadArchives
,生成的ivy.xml就是这样的:
<dependency org="org.apache.ant" name="ant" rev="1+" conf="compile->default"/>
在source code of Gradle中,我确实看到有写一个rev和revConstraint的工具:
if (!dep.getDynamicConstraintDependencyRevisionId().equals(dependencyRevisionId)) {
<...>
writer.attribute("revConstraint", dep.getDynamicConstraintDependencyRevisionId().getRevision());
}
通过调试我也看到这个代码被命中了,但是,在我的例子中,getDynamicConstraintDependencyRevisionId和dependencyRevisionId此时都给出'1',此时忘记了1.9.6版本 .
如何在已发布的ivy.xml中记录依赖项版本,就像在Ivy中一样?
1 回答
不确定这是否有任何帮助 . 但我最近不得不解决类似的问题,并提出了以下方法 . 希望它可以帮助其他人寻找解决方案 . 我根据RaGe的Pom solution和gradle forum solution的线索得出了这个答案 .
我必须实现这一点的原因是,gradle发布的常 Spring 藤有rev,但不是revConstraint属性 . 但是rev总是说“latest.release”这是用于我们内部库的东西 . 所以我不得不手动将rev转换为实际修订版,将revConstraint转换为latest.release .
}