有没有办法动态调用'Invoke Ant'构建步骤中的Ant目标?假设您有一个build.xml:
<target name="1" description="1">
<exec executable="${RES_DIR}/1.sh" failonerror="true">
</exec>
</target>
<target name="2" description="2">
<exec executable="${RES_DIR}/2.sh" failonerror="true">
</exec>
</target>
<target name="3" description="3">
<exec executable="${RES_DIR}/3.sh" failonerror="true">
</exec>
</target>
并且希望您的Jenkins构建都使用相同的build.xml,但是能够为每个构建调用某些目标。我不想在每次需要创建项目时对这些目标进行硬编码,因为我希望它能够自动完成。这是可能的还是您必须事先创建项目并手动设置Ant目标?
答案 0 :(得分:1)
一个简单的技巧可以是使用if
s上的target
属性。
例如:
<target name="run" depends="1,2,3" />
<target name="1" description="1" if="run1">
<exec executable="${RES_DIR}/1.sh" failonerror="true">
</exec>
</target>
<target name="2" description="2" if="run2">
<exec executable="${RES_DIR}/2.sh" failonerror="true">
</exec>
</target>
<target name="3" description="3" if="run3">
<exec executable="${RES_DIR}/3.sh" failonerror="true">
</exec>
</target>
这样,您调用目标run
并将属性runX
设置为任意值(true通常是一个不错的选择)。只有目标X才会真正运行。
答案 1 :(得分:0)
这可能会运行正常但是为了满足Jenkins构建接口要求而更改构建有点不方便。 我通常这样做的方法是设置一个构建参数,称为“选择”,并让用户可以从该下拉列表中选择要调用的目标。
假设选择参数被称为目标,那么你在'invoke ant'构建部分中需要做的就是引用%target%,Jenkins将替换你。
您是否选择“选择”或其他类型的构建参数(例如文本)取决于您的具体需求。