Subant цели вместо муравья - PullRequest
2 голосов
/ 17 ноября 2009

У меня проблема с subant, и у меня больше нет идей. Кто-нибудь может помочь? Используя Ant, чтобы заменить некоторые строки на другие (т. Е. Productname и Version для «Foo» и «1.2»), я использовал такую ​​вещь:

<copy todir="${Foo_Home}\cm_builds\Deployment\Database\Production.win\">
    <fileset dir="${Foo_Home}\Deployment\Database\Production.win\"
             includes="**/*.sql,**/*.cmd"/>
    <filterset>
        <filter token="PRODUCTNAME" value="Foo"/>
        <filter token="VERSION" value="1.2"/>
    </filterset>
</copy>

Можем ли мы сделать то же самое с помощью субанта? Потому что copy и replacetoken и т. Д. Не поддерживаются subant. Но нам нужен ровный присед ...

Примерно так:

<subant target="build" genericantfile="build.xml">
  <dirset dir="${Foo_Home}\cm_builds\Deployment\Database\Production.win\"
          includes ="**/*.sql">
</subant>

Это правильный способ использовать subant? (Предположим, у нас есть несколько таких целей)

http://ant.apache.org/manual/Tasks/subant.html для помощи =)

Обновление:

Я подозреваю, что неправильно использую subant. Может быть, нет необходимости пытаться заставить subant выполнить ту же задачу, что и ant? Может быть, я должен заставить subant запустить ant в нужном каталоге и ничего не менять для ant?

Ответы [ 2 ]

5 голосов
/ 21 ноября 2009

Я не понимаю, что вы пытаетесь сделать, или что вы подразумеваете под "копированием и заменой токена и т. Д. Не поддерживаются subant". Задача subant используется для вызова сборки Ant в нескольких каталогах. Например, предположим, что у вас есть свойство ${top}, которое указывает на каталог, который содержит подкаталоги с именами one, two и three. Затем вы можете использовать задачу subant для вызова Ant в каждой из этих подкаталогов, например:

<subant genericantfile="${top}/build.xml" target="build">
    <!-- include all subdirectories in ${top} -->
    <dirset dir="${top}"/>
</subant>

Это будет примерно эквивалентно следующим командам в командной строке (при условии, что каталог top находится в /work/top):

$ cd /work/top
$ cd one
$ ant -f ../build.xml build
$ cd ../two
$ ant -f ../build.xml build
$ cd ../three
$ ant -f ../build.xml build

Наконец, вы используете dirset неправильно. dirset - это группа каталогов, а не файлов, поэтому ваш dirset выше будет включать все директории , оканчивающиеся на .sql, что, как я подозреваю, не то, что вам нужно.

0 голосов
/ 17 ноября 2009

Почему задача заменить не работает для вас?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...