2013-06-20 50 views
0

是否有一种方法可以动态地在“调用Ant”构建步骤中调用Ant目标?假设你有一个build.xml:在Jenkins中动态调用Ant目标

<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> 

,并希望建立詹金斯向所有使用相同的build.xml文件,而是要能够调用某些目标为每个制作。我不想在每次需要创建项目时对这些目标进行硬编码,因为我希望它自动完成。这是可能的,还是你必须事先创建一个项目并手动设置你的Ant目标?

回答

1

一个简单的技巧可以使用targetif属性。

例如:

<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设置为任意值(真一般是一个不错的选择)。只有目标X会实际运行。

+0

我将在哪里设置属性runx? – gjw80

+0

在詹金斯的配置 –

0

这可能会工作正常,但改变你的构建只是为了满足Jenkins构建接口要求有点不方便。 我通常这样做的方式是设置一个构建参数,说一个'选择',并让用户可以从该下拉列表中选择他们想要调用的目标。

说这个选择参数被称为target,那么你在'invoke ant'构建部分所需要做的就是引用%target%并且Jenkins会替换你。

无论您选择“选择”还是其他类型的构建参数(例如文本),都将取决于您的特定需求。