Как исключить каталог из набора файлов ant, основываясь на содержимом каталогов

Ответ Swift 3 на ответ Duncan C -

let myArray = ["Step 6", "Step 12", "Step 10"]

let sortedArray = myArray.sorted {
    $0.compare($1, options: .numeric) == .orderedAscending
}

print(sortedArray) // ["Step 6", "Step 10", "Step 12"]

Или, если вы хотите отсортировать массив на месте:

var myArray = ["Step 6", "Step 12", "Step 10"]

myArray.sort {
    $0.compare($1, options: .numeric) == .orderedAscending
}

print(myArray) // ["Step 6", "Step 10", "Step 12"]

29
задан Chadwick 9 February 2010 в 22:19
поделиться

9 ответов

Вам необходимо добавить '/' после имени режиссера

<exclude name="WEB-INF/" />
.
17
ответ дан Nicolas Robert-Dehault 9 February 2010 в 22:19
поделиться

У меня работает следующий подход:

<exclude name="**/dir_name_to_exclude/**" />
57
ответ дан Sasha 9 February 2010 в 22:19
поделиться

Вот альтернатива, вместо добавления файла incomplete.flag к каждому каталогу, который вы хотите исключить, сгенерируйте файл, содержащий список всех каталогов, которые вы хотите исключить, и затем используйте атрибут excludesfile. Примерно так:

<fileset dir="${basedir}" excludesfile="FileWithExcludedDirs.properties">
  <include name="locale/"/>
  <exclude name="locale/*/incomplete.flag">
</fileset>

Надеюсь, это поможет.

7
ответ дан Alonso 9 February 2010 в 22:19
поделиться

Это возможно при использовании шаблона «**» следующим образом.

<exclude name="maindir/**/incomplete.flag"/>

вышеупомянутое исключение полностью исключит все каталоги, которые содержат файл incomplete.flag.

0
ответ дан Chadwick 9 February 2010 в 22:19
поделиться

это работает для меня с целью jar:

<jar jarfile="${server.jar}" basedir="${classes.dir}" excludes="**/client/">
  <manifest>
    <attribute name="Main-Class" value="${mainServer.class}" />
  </manifest>
</jar>

этот код включает все файлы в "classes.dir", но исключает каталог "client" из jar.

0
ответ дан johndoe 9 February 2010 в 22:19
поделиться

Я думаю, один из способов - сначала проверить, существует ли ваш файл и существует ли он для исключения папки из копии:

<target name="excludeLocales">

    <property name="de-DE.file" value="${basedir}/locale/de-DE/incompelte.flag"/>
    <available property="de-DE.file.exists" file="${de-DE.file}" />

    <copy todir="C:/temp/">
        <fileset dir="${basedir}/locale">
            <exclude name="de-DE/**" if="${de-DE.file.exists}"/>
            <include name="xy/**"/>
        </fileset>
    </copy>
</target>

Это должно работать и для других языков.

0
ответ дан Uncle_Sam 9 February 2010 в 22:19
поделиться

работает для меня:

<target name="build2-jar" depends="compile" >
   <jar destfile="./myJjar.jar">
        <fileset dir="./WebContent/WEB-INF/lib" includes="hibernate*.jar,mysql*.jar" />
        <fileset dir="./WebContent/WEB-INF/classes" excludes="**/controlador/*.class,**/form/*.class,**/orm/*.class,**/reporting/*.class,**/org/w3/xmldsig/*.class"/>
   </jar>

0
ответ дан RaZieRSarE 9 February 2010 в 22:19
поделиться

В документации по муравьям есть пример такого типа проблемы. Он использует селекторы (упомянутые выше) и картографы. См. Последний пример в http://ant.apache.org/manual/Types/dirset.html :

<dirset id="dirset" dir="${workingdir}">
   <present targetdir="${workingdir}">
        <mapper type="glob" from="*" to="*/${markerfile}" />
   </present>
</dirset>

. Выбирает все каталоги в разделе ${workingdir}, которые содержат ${markerfile}.

5
ответ дан peterh 9 February 2010 в 22:19
поделиться

Ответ, предоставленный пользователем mgaert работает для меня. Я думаю, что это должно быть помечено как правильный ответ.

Он работает также со сложными селекторами, как в этом примере:

<!-- 
    selects only direct subdirectories of ${targetdir} if they have a
    sub-subdirectory named either sub1 or sub2
-->
<dirset dir="${targetdir}" >
    <and>
        <depth max="0"/>
        <or>
            <present targetdir="${targetdir}">
                <globmapper from="*" to="*/sub1" />
            </present>
            <present targetdir="${targetdir}">
                <globmapper from="*" to="*/sub2" />
            </present>
        </or>
    </and>
</dirset>

Таким образом, имея структуру каталогов, подобную этой:

targetdir
├── bar
│   └── sub3
├── baz
│   └── sub1
├── foo
│   └── sub2
├── phoo
│   ├── sub1
│   └── sub2
└── qux
    └── xyzzy
        └── sub1

вышеупомянутый dirset будет содержать только

baz foo phoo
(bar не совпадает из-за sub3, а xyzzy не совпадает, потому что это не прямой подкаталог targetdir)
2
ответ дан Community 9 February 2010 в 22:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: