簡體   English   中英

Ant構建-JavaC任務-排除目錄然后包含子目錄

[英]Ant build - javac task - exclude a dir then include a subdir

我有一棵這樣的樹

path/a
path/b
path/c
path/d/da
path/d/db
path/d/dc

現在在我的javac任務中,我想

  • 編譯path/所有內容
  • 排除path/d/
  • 編譯path/d/db/

像這樣:

path/a
path/b
path/c
path/d/db

我玩了include / exclude和patternset,但無法實現所需的功能。 有沒有辦法做到這一點?

<difference><union>設置操作將很方便地滿足您的需求。

以下Ant腳本顯示了如何將幾個<fileset>元素組合為一個:

<project name="ant-javac-include-and-exclude" default="run" basedir=".">
    <target name="run">
        <fileset id="all-files" dir="path">
            <include name="**"/>
        </fileset>
        <fileset id="files-under-d" dir="path">
            <include name="d/**"/>
        </fileset>
        <fileset id="files-under-d-db" dir="path">
            <include name="d/db/**"/>
        </fileset>

        <!-- Matches all files under a, b, c -->
        <difference id="all-files-NOT-under-d">
            <fileset refid="all-files"/>
            <fileset refid="files-under-d"/>
        </difference>

        <!-- Combine all files under a, b, c and under d/db -->
        <union id="files-to-compile">
            <difference refid="all-files-NOT-under-d"/>
            <fileset refid="files-under-d-db"/>
        </union>

        <!-- Convert the absolute paths in "files-to-compile" to relative-->
        <!-- paths. Also, "includes" of <javac> requires a comma-separated -->
        <!-- list of files. -->
        <pathconvert property="union-path" pathsep=",">
            <union refid="files-to-compile"/>
            <map from="${basedir}/" to=""/>
        </pathconvert>

        <javac
            srcdir="."
            includes="${union-path}"
            includeantruntime="false"
        />
    </target>
</project>

上述步驟可以合並為以下內容:

<pathconvert property="union-path" pathsep=",">
    <union>
        <difference>
            <fileset dir="path">
                <include name="**"/>
            </fileset>
            <fileset dir="path">
                <include name="d/**"/>
            </fileset>
        </difference>
        <fileset dir="path">
            <include name="d/db/**"/>
        </fileset>
    </union>
    <map from="${basedir}/" to=""/>
</pathconvert>

<javac
    srcdir="."
    includes="${union-path}"
    includeantruntime="false"
/>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM