эхо к файлу распечатка лишних вкладок - PullRequest
2 голосов
/ 27 марта 2012

Когда echo в файл. echo печатает дополнительные вкладки перед тем, как печатать.

Мне не нужны эти вкладки, почему ant делает это и как мне это предотвратить?

Только с использованием ant и / или ant-contrib. Ничего другого.

<target 
    name="doThis">
    <delete 
        file="${PATH}/install.bat" 
        failonerror="true">
    </delete>

    <touch file="${PATH}/install.bat"></touch>

    <echo
        file="${PATH}/install.bat"
        level="verbose"
        append="true"
        message="if exist preinstall.bat call preinstall.bat${line.separator}">
    </echo>

    <foreach 
        trim="true"
        target="printStuff"
        param="stuffName">
        <path>
            <fileset dir="${basedir}/stuff/"></fileset>
        </path>
    </foreach>
</target>

<target 
    name="printStuff">
    <basename file="${stuffName}" property="stuffNameSmall"/>
    <echo
        file="${PATH}/install.bat"
        append="true"
        level="verbose"
        message="${stuffNameSmall}${line.separator}">
    </echo>
</target>

Пример вывода, который печатается в данный момент:

<tab><tab>filename
<tab><tab>filename
<tab><tab>filename

Ответы [ 2 ]

2 голосов
/ 28 марта 2012

Мое предположение: у вас есть 2 символа табуляции внутри элемента xml ...

Попробуйте:

<echo
    file="${PATH}/install.bat"
    append="true"
    level="verbose"
    message="${stuffNameSmall}${line.separator}" />

Задача 'echo' распечатает значение атрибута 'message', а также все внутри вложенного текстового узла. Поэтому лучше всегда немедленно закрывать тег, если вам не нужно распечатывать дополнительные материалы (например, многострочное ASCII-изображение, о да!).

0 голосов
/ 27 марта 2012

Вместо того, чтобы бороться с заданием ANT echo, я бы предложил использовать groovy для генерации пакетного сценария.

Следующий пример немного сложнее, потому что я использую ivy для загрузки зависимостей сборки.

Структура проекта

$ tree
.
|-- build.xml
|-- ivy.xml
`-- stuff
    |-- script1
    |-- script2
    `-- script3

1 directory, 5 files

build.xml

<project name="demo" default="generate-script" xmlns:ivy="antlib:org.apache.ivy.ant">

    <target name="init">
        <ivy:resolve/>
        <ivy:cachepath pathid="build.path" conf="build"/>

        <mkdir dir="build"/>
    </target>

    <target name="generate-script" depends="init">
        <taskdef name="groovy" classname="org.codehaus.groovy.ant.Groovy" classpathref="build.path"/>

        <fileset id="files" dir="stuff"/> 

        <groovy>
        def batchScript = new File("build/install.bat")

        batchScript.withWriter() { writer ->
            writer.println "if exist preinstall.bat call preinstall.bat"

            project.references.files.each {
                def stuffFile = new File(it.toString())

                writer.println stuffFile.name 
            }
        }
        </groovy>
    </target>

    <target name="clean">
        <delete dir="build"/>
    </target>

</project>

ivy.xml

<ivy-module version="2.0">
    <info organisation="org.myspotontheweb" module="demo"/>
    <configurations>
        <conf name="build" description="ANT tasks"/>
    </configurations>
    <dependencies>
        <!-- Build dependencies -->
        <dependency org="org.codehaus.groovy" name="groovy-all" rev="1.8.2" conf="build->default"/>
    </dependencies>
</ivy-module>

Обновление

Это не былоЭто не оправдание использования плюща, но все, что доступно в Maven Central, может быть установлено.

Например ant-contrib :

  <dependency org="ant-contrib" name="ant-contrib" rev="1.0b3"/>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...