我在其他50个项目(由他人拥有)中拥有20个常春藤项目,在我的项目中使用了某些版本的二进制文件。
问题是发布期间,我必须手动增加20个常春藤文件的版本,检入文件并构建二进制文件。这很费时间。尽管日食查找和替换有帮助。
使用ant自动化的步骤:
1)单独检出常春藤文件。2)使用脚本/逻辑仅更改我的模块/我的模块相互依赖的版本。3)签入文件。4)标记分支以进行释放。
卡在步骤2休息都相对容易。
尝试了xml任务,但由于有时不知道确切的索引,因此在搜索方面面临挑战。
感谢你的帮助。
我自己找到了以下可行的解决方案,尽管尝试了其他选项,例如通过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>
以上目标用于解析和更改版本。