小编典典

使用ant脚本自动为我所有项目的ivy版本进行增加

java

我在其他50个项目(由他人拥有)中拥有20个常春藤项目,在我的项目中使用了某些版本的二进制文件。

问题是发布期间,我必须手动增加20个常春藤文件的版本,检入文件并构建二进制文件。这很费时间。尽管日食查找和替换有帮助。

使用ant自动化的步骤:

1)单独检出常春藤文件。2)使用脚本/逻辑仅更改我的模块/我的模块相互依赖的版本。3)签入文件。4)标记分支以进行释放。

卡在步骤2休息都相对容易。

尝试了xml任务,但由于有时不知道确切的索引,因此在搜索方面面临挑战。

感谢你的帮助。


阅读 220

收藏
2020-09-23

共1个答案

小编典典

我自己找到了以下可行的解决方案,尽管尝试了其他选项,例如通过IVY java解析ivy.xml等。

<target name="autoincrementivy" depends="prompt-user.password">
    <exec executable="svn" failonerror="${svn.failonerror}">
        <arg value="--non-interactive"/>
        <arg value="--trust-server-cert"/>
        <arg value="--username"/>
        <arg value="${svn.user}"/>
        <arg value="--password"/>
        <arg value="${svn.password}"/>
        <arg value="checkout"/>
        <arg value="--depth"/>
        **<arg value="immediates"/>**
        <arg value="${svn.repository}/@{module.name}/trunk"/>
         <arg value="${temp.checkout.dir}/@{module.name}"/>
    </exec>
<move file="${temp.checkout.dir}/ivy.xml" tofile="${temp.checkout.dir}/ivy_src.xml"/>
<ant target="changeVersion" antfile="../deploy.xml" >
   <property name="dest.file" value="${temp.checkout.dir}/ivy.xml"/>
  <property name="src.file" value="${temp.checkout.dir}/ivy_src.xml"/>
  <property name="target.version" value="${tag.version}"/>
</ant>
<!-- cehckin the file-->
</target>

上面的任务是将文件检出到带有.svn文件夹的临时文件夹中,以便cehckin可以正常工作。

    <target name="changeVersion">

    <xmltask source="${src.file}" dest="${dest.file}" preserveType="true" >
        <replace path="/ivy-module/info/@revision" withText="${target.version}" />
        <replace path="/ivy-module/dependencies/dependency[@name='my-common']/@rev"       withText="${target.version}" /> 
<replace path="/ivy-module/dependencies/dependency[@name='my-gui-common']/@rev" withText="${target.version}" /> 
        </xmltask>  
        <fixcrlf file="${src.file}" eol="cr" />
    </target>

以上目标用于解析和更改版本。

2020-09-23