'make -n' эквивалент для муравья - PullRequest
9 голосов
/ 03 февраля 2012

Согласно справочной странице make, опция -n выполняет следующую работу:

Print the commands that would be executed, but do not execute them.

Я ищу вариант, который действует так же в Apache Ant.

Ответы [ 5 ]

2 голосов
/ 31 января 2013

Ужасно, но вот оно. Мы можем взломать цели во время выполнения, используя некоторый код внутри тега <script>. Код в do-dry-run ниже устанавливает атрибут unless для каждой из ваших целей, а затем устанавливает это свойство так, чтобы ни одна из них не выполнялась. Ant по-прежнему выводит имена целей, которые не были выполнены из-за атрибута unless.

* (теги сценариев JavaScript, похоже, поддерживаются в Ant 1.8+ с использованием версий Java Oracle, OpenJDK и IBM.)

<?xml version="1.0" encoding="UTF-8"?>
<project default="build">

    <target name="targetA"/>
    <target name="targetB" depends="targetA">
        <echo message="DON'T RUN ME"/>
    </target>
    <target name="targetC" depends="targetB"/>

    <target name="build" depends="targetB"/>

    <target name="dry-run">
        <do-dry-run target="build"/>
    </target>

    <macrodef name="do-dry-run">
        <attribute name="target"/>
        <sequential>
            <script language="javascript"><![CDATA[

                var targs = project.getTargets().elements();
                while( targs.hasMoreElements() ) {
                    var targ = targs.nextElement();
                    targ.setUnless( "DRY.RUN" );
                }
                project.setProperty( "DRY.RUN", "1" );
                project.executeTarget( "@{target}" );

            ]]></script>
        </sequential>
    </macrodef>

</project>

Когда я запускаю это нормально, происходит echo:

$ ant
Buildfile: build.xml

targetA:

targetB:
     [echo] DON'T RUN ME

build:

BUILD SUCCESSFUL
Total time: 0 seconds

Но когда я бегу всухую, это не так:

$ ant dry-run
Buildfile: build.xml

dry-run:

targetA:

targetB:

build:

BUILD SUCCESSFUL
Total time: 0 seconds
1 голос
/ 03 февраля 2012

У муравья нет опции сухого хода, как у make или maven. Но вы можете запустить ant-файл шаг за шагом в режиме отладки в eclipse.

0 голосов
/ 04 февраля 2012

Создайте специальную цель в вашем buildscript, которая делает некоторые повторения, т. Е. Проверяет
, правильно ли разрешены свойства, путь ..
см. https://stackoverflow.com/a/6724412/130683 для ответа на аналогичный вопрос.
Для проверки деталей вашей установки муравья используйте ant -diagnostics

0 голосов
/ 03 февраля 2012

Это была бы полезная функция, но ее нелегко реализовать.

Make и ANT архитектурно довольно разные. ANT не выполняет внешние команды ОС, вместо этого большинство «задач» ANT выполняется в одном и том же потоке Java.

Можно было бы эмулировать «пробный прогон» следующим образом:

<project name="Dry run" default="step3">

    <target name="step1" unless="dry.run">
        <echo>1) hello world</echo>
    </target>

    <target name="step2" depends="step1" unless="dry.run">
        <echo>2) hello world</echo>
    </target>

    <target name="step3" depends="step2" unless="dry.run">
        <echo>3) hello world</echo>
    </target>

</project>

Запуск ANT следующим образом напечатает имя цели, но не выполнит вложенные задачи:

$ ant -Ddry.run=1

Buildfile: build.xml

step1:

step2:

step3:

BUILD SUCCESSFUL
Total time: 0 seconds
0 голосов
/ 03 февраля 2012

Нет, я верю. В Ant нет такого способа по умолчанию. И много неудачных попыток вы найдете в Google. Но я искал один раз и безуспешно.

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