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

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

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

    cuiyi's blog(崔毅 crazycy)

    記錄點(diǎn)滴 鑒往事之得失 以資于發(fā)展
    數(shù)據(jù)加載中……

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

    遇到了問題,編譯的時(shí)候,有一些目錄,比如
    tr\src
    tr\src_x1 for prj X1
    tr\src_x2 for prj X2
    _______  for prj X3, X3中沒有,怎么設(shè)置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的時(shí)候,這肯定是失敗的。

    怎么辦呢? 通過Condition和Avaliable來實(shí)現(xiàn)。(貼一個(gè)粗糙的示范實(shí)現(xiàn))


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

    居然在網(wǎng)上找到一個(gè)更贊的招

    <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本身的技術(shù)文檔 

    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技術(shù)

    評論

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

    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);
    // 設(shè)置大版本
    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);
    }
    // 設(shè)置小版本
    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  回復(fù)  更多評論   

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

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

    他 們 在那?
    2013-05-04 09:21 | 張治仕
    主站蜘蛛池模板: 国产片AV片永久免费观看| 男女交性永久免费视频播放| 亚洲一区二区影院| 最近的免费中文字幕视频 | 久久亚洲AV午夜福利精品一区 | 亚洲午夜成人精品无码色欲| 亚洲国产成人久久一区久久| 99久久人妻精品免费二区| 亚洲国产日韩综合久久精品| 中文字幕精品亚洲无线码一区| 亚洲大片免费观看| 一级毛片a女人刺激视频免费| 亚洲熟妇无码久久精品| 亚洲午夜激情视频| 69成人免费视频无码专区| 三级黄色免费观看| 国产精品亚洲av色欲三区| 久久亚洲精品国产精品黑人| va亚洲va日韩不卡在线观看| 69视频在线观看高清免费| 一区二区视频在线免费观看| 亚洲性线免费观看视频成熟| 亚洲国产精品无码AAA片| 免费在线观看视频a| 成人免费毛片内射美女-百度| 精品成人免费自拍视频| 朝桐光亚洲专区在线中文字幕| 亚洲经典在线观看| 久久亚洲高清观看| 国产一级一片免费播放| 国产成人免费网站| 99精品视频在线观看免费专区| 一级毛片完整版免费播放一区| 亚洲精品天堂无码中文字幕| 精品亚洲成a人片在线观看| 亚洲午夜无码片在线观看影院猛| 特级淫片国产免费高清视频| 久草视频在线免费| 日韩午夜理论免费TV影院| 丝瓜app免费下载网址进入ios| 免费人成网上在线观看|