如何在Gradle中获取下一个内部版本号

Dan*_*aub 27 java ant ivy gradle

在gradle中发布到存储库时,有没有办法获得下一个版本?

例如,如果我的3.0.1存储库中有版本,我想要发布的版本3.0.2.

ivy有一个ant命名的任务,buildnumber它完全是这样的:

<project xmlns:ivy="antlib:org.apache.ivy.ant"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

<target name="ivyBuildNumber" description="Use ivy get the next build number">
    <ivy:buildnumber
        resolver="url-chain"
        organisation="${ivy.organisation}"
        module="${ivy.module}"
        revision="${version.base}"/>

    <echoproperties prefix="ivy.new."/>
</target>
Run Code Online (Sandbox Code Playgroud)

有没有办法这样做gradle?如果不能如何ivy从gradle中访问任务ant

在我的build.gradle呼唤中ant

ant.importBuild 'build.xml'
Run Code Online (Sandbox Code Playgroud)

che*_*rui 10

我不认为Gradle中有支持,但您可以尝试使用Ant任务. https://docs.gradle.org/current/userguide/ant.html#sec:import_ant_build

另一种方法是使用某种插件或自定义任务来管理版本.


小智 8

是的,您可以通过将ant的build.xml文件导入gradle的build.gradle文件,从ant脚本访问常春藤任务.以下是执行此操作的语法.

ant.importBuild'build.xml'

请参阅:https://docs.gradle.org/current/userguide/ant.html#sec:import_ant_build


ras*_*man 6

我建议你使用ResearchGate发布插件 https://github.com/researchgate/gradle-release 它有一个漂亮的文档.易于阅读.另外,看看我在个人项目中如何使用它. https://github.com/vatolinrp/bitcoin-esb/blob/master/build.gradle 这将是一个很好的例子.


Dan*_*aub 5

经过长时间的努力,我成功地做到了.

在我的build.gradle中,我添加了以下代码

ant.importBuild 'build.xml'

task getNextBuild(dependsOn : ivyBuildNumber) {
    doLast{
        def nextVersion = ant.properties['ivy.new.revision']
        println nextVersion
    }
}
Run Code Online (Sandbox Code Playgroud)

我导入了我的ant构建文件,并创建了一个调用ivy buildnumber任务的任务.

有我的build.xml

<project xmlns:ivy="antlib:org.apache.ivy.ant">

    <target name="ivyBuildNumber">
        <path id="ivy.classpath" path="lib/ivy.jar" />
        <typedef resource="org/apache/ivy/ant/antlib.xml" uri="antlib:org.apache.ivy.ant" classpathref="ivy.classpath" />
        <ivy:buildnumber
            organisation="daniel"
            module="hello"/>
        <echoproperties prefix="ivy.new."/>
    </target>
</project>
Run Code Online (Sandbox Code Playgroud)

因为我的IDE(Intellij),ivy.jar在内容中没有,
ivy.jar从我的根目录导入了dir(lib/ivy.jar)