首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >蚂蚁呼叫目标在循环一次

蚂蚁呼叫目标在循环一次
EN

Stack Overflow用户
提问于 2013-11-26 11:59:49
回答 1查看 1.2K关注 0票数 1

我有一个常见的build.xml文件,其中包含了我的大部分目标。有两个导入公共文件的附属构建文件。两颗卫星的不同之处在于,一颗卫星只运行一次公共目标,而另一颗卫星则有一个预先的蚂蚁控制任务,它在子文件夹中循环,每个子文件夹运行一次公共目标。

我在公共文件中的一个目标提示用户选择要发布到的区域(dev或qa)。对于只运行一次的人造卫星来说,它工作得很好。对于循环卫星构建,每个子文件夹的提示都会出现在用户面前,但是它们都会进入相同的发布区域,所以我只需要问一次这个提示。

简单的解决方案是将“选择区域”目标移动到每个卫星构建文件,以便它只运行一次,也就是说它在循环之外。我很想知道是否有更干净的方法来做这件事。

我最初的想法是在循环卫星构建中(使用ant任务)调用循环外的目标,并设置一个属性。然后,我将向公共构建文件中的select区域目标添加一个“除非”属性,该属性检查ant任务中的属性集是否已经设置。根据我的计算,这意味着非循环构建运行选择区域目标,因为属性还没有被设置(它是这样做的)。循环卫星构建运行目标(使用ant任务),但是当它循环进入公共构建文件并命中选择区域目标时,它仍然运行它,即使属性已经设置并且select区域目标具有检查它的除非属性。

示例代码如下:

公共构建的提取

代码语言:javascript
复制
<target name="select-area" unless="area.selected" description="prompts user what area to deploy to and validates response">
    <input message="Which area do you want to deploy to?" validargs="dev,qa" addproperty="deploy.to" />
    ...
</target>

循环卫星构建文件

代码语言:javascript
复制
<project name="run-build-file-multi" default="loop-brands">
    <import file="../../../common/builds/newbuild.xml"/>
    <ant antfile="${ant.file.common} target="select-area">
        <property name="area.selected" value="yes" />
    </ant>
    <target name="loop-brands" depends="select-area" description="loops through each brand folder found in branch folder">
        <foreach target="end-confirmation" param="current.brand" inheritall="true">
            <path>
                <dirset dir=".">
                    <include name="*"/>
                </dirset>
            </path>
        </foreach>
    </target>   
</project>

一旦ant任务调用了目标,area.selected属性就不再被设置。

我不知道我是否会以正确的方式去做这件事,但希望我所要达到的目标是相对清晰的。

任何帮助都很感谢,谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-11-26 12:18:06

这似乎是错误的:

代码语言:javascript
复制
<target name="select-area" unless="area.selected" description="prompts user what area to deploy to and validates response">
    <input message="Which area do you want to deploy to?" validargs="dev,qa" addproperty="deploy.to" />

它应该是

代码语言:javascript
复制
<target name="select-area" unless="deploy.to" description="prompts user what area to deploy to and validates response">
    <input message="Which area do you want to deploy to?" validargs="dev,qa" addproperty="deploy.to" />

也就是说,当变量设置一次时,way应该使用与input相同的变量,它应该保持不变。

或者,在两个构建脚本中,让脚本在开始时调用select-area一次(因此这两个脚本中都是相同的代码),然后在递归构建中启动循环。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20216494

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档