<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    cuiyi's blog(崔毅 crazycy)

    記錄點滴 鑒往事之得失 以資于發展
    數據加載中……

    ant腳本的javac怎么檢測源碼文件夾是否存在 ant javac check folder exists or not

    遇到了問題,編譯的時候,有一些目錄,比如
    tr\src
    tr\src_x1 for prj X1
    tr\src_x2 for prj X2
    _______  for prj X3, X3中沒有,怎么設置ant腳本呢?

    <target name="compile-tr">
            <mkdir dir="${tr.classes.dir}" />
            <javac destdir="${tr.classes.dir}" debug="${compiler.debug}" optimize="${compiler.optimize}" source="${compiler.source}" target="${compiler.target}" deprecation="true">
                <classpath>
                    <path refid="devel.lib" />
                </classpath>
                <src path="${tr.src.dir}" />
                <src path="${tr.src.dir}_${project.code}" />
            </javac>
    </target>

    在編譯X3的時候,這肯定是失敗的。

    怎么辦呢? 通過Condition和Avaliable來實現。(貼一個粗糙的示范實現)


    <target name="compile-3tr" depends="dir.check" if="dir.exists">
            <mkdir dir="${tr.classes.dir}" />
            <javac destdir="${tr.classes.dir}" debug="${compiler.debug}" optimize="${compiler.optimize}" source="${compiler.source}" target="${compiler.target}" deprecation="true">
                <classpath>
                    <path refid="devel.lib" />
                </classpath>
                <src path="${tr.src.dir}" />
                <src path="${tr.src.dir}_${project.code}" />
            </javac>
    </target>
        
        <target name="dir.check">
            <condition property="dir.exists" value="true">
                <available file="${tr.src.dir}_${project.code}" type="dir"/>
            </condition>
            <mkdir dir="${tr.classes.dir}" />
        </target>

    居然在網上找到一個更贊的招

    <target name="go" depends="file-checks, do-something-with-first-file, do-something-with-second-file"/>

    <target name="file-checks">
       <available file="/home/doc/somefile"  property="first.file.found"/>
       <available file="/usr/local/somefile" property="second.file.found"/>
    </target>

    <target name="do-something-with-first-file" if="first.file.found">
       ???
    </target>

    <target name="do-something-with-second-file" if="second.file.found">
       ???
    </target>

    原來if....then....else需要ant-contrib的支持,怪不得我一直失敗
    ant-contrib

    <if>
        <available file="file1"/>
        <then>
          <property name="file.exists" value="true"/>
        </then>
        <else>
          <if>
            <available file="file2"/>
            <then>
              <copy file="file2" tofile="file1"/>
              <property name="file.exists" value="true"/>
            </then>
          </if>
        </else>
      </if>

    最后我很生氣的找到了apache本身的技術文檔 

    If/Unless Attributes

    http://ant.apache.org/manual/properties.html#if+unless

    If/Unless Attributes

    The <target> element and various tasks (such as <fail>) and task elements (such as <test> in <junit>) support if and unless attributes which can be used to control whether the item is run or otherwise takes effect.

    In Ant 1.7.1 and earlier, these attributes could only be property names. The item was enabled if a property with that name was defined - even to be the empty string or false - and disabled if the property was not defined. For example, the following works but there is no way to override the file existence check negatively (only positively):

    <target name="-check-use-file">
        <available property="file.exists" file="some-file"/>
    </target>
    <target name="use-file" depends="-check-use-file" if="file.exists">
        <!-- do something requiring that file -->
    </target>
    <target name="lots-of-stuff" depends="use-file,other-unconditional-stuff"/>
      
    As of Ant 1.8.0, you may instead use property expansion; a value of true (or on or yes) will enable the item, while false (or off or no) will disable it. Other values are still assumed to be property names and so the item is enabled only if the named property is defined.

    Compared to the older style, this gives you additional flexibility, because you can override the condition from the command line or parent scripts:

    <target name="-check-use-file" unless="file.exists">
        <available property="file.exists" file="some-file"/>
    </target>
    <target name="use-file" depends="-check-use-file" if="${file.exists}">
        <!-- do something requiring that file -->
    </target>
    <target name="lots-of-stuff" depends="use-file,other-unconditional-stuff"/>
      
    Now ant -Dfile.exists=false lots-of-stuff will run other-unconditional-stuff but not use-file, as you might expect, and you can disable the condition from another script too:

    <antcall target="lots-of-stuff">
        <param name="file.exists" value="false"/>
    </antcall>
      
    Similarly, an unless attribute disables the item if it is either the name of property which is defined, or if it evaluates to a true-like value. For example, the following allows you to define skip.printing.message=true in my-prefs.properties with the results you might expect:

    <property file="my-prefs.properties"/>
    <target name="print-message" unless="${skip.printing.message}">
        <echo>hello!</echo>
    </target>

    posted on 2013-04-16 14:52 crazycy 閱讀(3583) 評論(3)  編輯  收藏 所屬分類: JavaEE技術

    評論

    # re: ant腳本的javac怎么檢測源碼文件夾是否存在 ant javac check folder exists or not  回復  更多評論   

    public static void setpartV() throws WTException, WTPropertyVetoException {

    WTPart part = null;
    String vers = "B";
    String iteration = "2";
    wt.series.MultilevelSeries multilevelseries = null;
    part = (WTPart) wt.vc.VersionControlHelper.service.newVersion(part);
    // 設置大版本
    if (part.getMaster() != null) {
    String vseries = part.getMaster().getSeries();
    if (vseries == null) {
    if (part instanceof wt.inf.container.WTContained
    && (wt.inf.container.WTContained) part.getContainer() != null) {
    multilevelseries = wt.vc.VersionControlHelper
    .getVersionIdentifierSeries(part);
    wt.vc.VersionControlServerHelper.changeSeries(
    part.getMaster(),
    multilevelseries.getUniqueSeriesName());
    }
    } else {
    multilevelseries = MultilevelSeries.newMultilevelSeries(vers);
    }
    if (multilevelseries == null)
    multilevelseries = wt.series.MultilevelSeries
    .newMultilevelSeries("wt.vc.VersionIdentifier", vers);
    if (vers != null && !"".equals(vers))
    multilevelseries.setValueWithoutValidating(vers);
    wt.vc.VersionIdentifier versionidentifier = wt.vc.VersionIdentifier
    .newVersionIdentifier(multilevelseries);
    wt.vc.VersionControlServerHelper.setVersionIdentifier(part,
    versionidentifier, false);
    }
    // 設置小版本
    wt.series.Series series = wt.series.Series.newSeries(
    "wt.vc.IterationIdentifier", iteration);
    wt.vc.IterationIdentifier iterationid = wt.vc.IterationIdentifier
    .newIterationIdentifier(series);
    wt.vc.VersionControlHelper.setIterationIdentifier((Iterated) part,
    iterationid);
    part.setFederatableInfo(new FederatableInfo());

    }
    2013-04-16 16:24 | 11

    # re: ant腳本的javac怎么檢測源碼文件夾是否存在 ant javac check folder exists or not  回復  更多評論   

    感謝博主分享,學到了很多,利博亞洲www.libofun.com
    2013-04-16 16:45 | sdfsda

    # re: ant腳本的javac怎么檢測源碼文件夾是否存在 ant javac check folder exists or not  回復  更多評論   

    他 們 在那?
    2013-05-04 09:21 | 張治仕
    主站蜘蛛池模板: 亚洲AV永久无码精品网站在线观看| 日韩精品一区二区亚洲AV观看| 亚洲国产成人AV网站| 无码欧精品亚洲日韩一区夜夜嗨 | 国产一区二区三区免费看| 亚洲av无码不卡久久| 无人在线观看免费高清视频 | 亚洲欧洲日本在线| 一个人免费播放在线视频看片| 天堂亚洲免费视频| 国产一级一毛免费黄片| 亚洲AV综合色区无码一区爱AV| 99国产精品免费视频观看| 亚洲性色成人av天堂| 在线免费一区二区| 丁香六月婷婷精品免费观看| 亚洲日本va午夜中文字幕久久 | 7723日本高清完整版免费| jlzzjlzz亚洲jzjzjz| 成人免费无码精品国产电影| 亚洲男同帅GAY片在线观看| 国产一级黄片儿免费看| 久久综合亚洲色HEZYO社区| 国产成人免费爽爽爽视频| 国产精品手机在线亚洲| 亚洲精品无码乱码成人| 久久国产色AV免费观看| 亚洲免费综合色在线视频| 亚洲国产精品尤物yw在线| 另类免费视频一区二区在线观看| 亚洲成aⅴ人片在线观| 免费又黄又爽又猛的毛片 | 亚洲一本之道高清乱码| 啊灬啊灬别停啊灬用力啊免费看| 黄桃AV无码免费一区二区三区| 亚洲日本va午夜中文字幕一区| 免费精品一区二区三区在线观看| www免费插插视频| 亚洲成人福利在线观看| 亚洲av无码不卡私人影院| 69xx免费观看视频|