私はもともとこれを持っていました:
<echo file="${my.file}"
message="This is line #1"/>
<echo file="${my.file}"
append="true"
message="This is line #2"/>
<echo file="${my.file}"
append="true"
message="This is line #3"/>
そして、これを私のファイルに入れました:
This is line#1This is line #2This is line#3
だから、私は試しました:
<echo file="${my.file}">
This is line #1
This is line #2
This is line #3
</echo>
そして得た:
This is line#1This is line #2This is line#3
これは私がしました:
<echo file="${my.file}">
This is line #1${line.separator}
This is line #2${line.separator}
This is line #3${line.separator}
</echo>
そして得た:
This is line#1This is line #2This is line#3
これは私がしました:
<echo file="${my.file}">
This is line #1
This is line #2
This is line #3
</echo>
そして得た:
This is line#1This is line #2This is line#3
私もこれを試しました:
<concat destfile="${my.file}">
This is line #1
This is line #2
This is line #3
</concat>
それでも得た:
This is line#1This is line #2This is line#3
これらのいずれかをコンソールに実行すると、別の行に出力されます。それらをファイルに保存すると、行が表示されません。
私はWin7、Ant 1.8を使用しています。
何か案は?
窓のこと?
Macでこれらのそれぞれを試しました。最初のものは私に同じ結果を与えました。ただし、2 番目の方法では、ファイルに 3 行が含まれていました。追加された 3 番目の方法では、${line.separator}
1 行おきにスキップされます。4 番目の使用方法で &10;
は、1 行おき^M
に末尾に a が付きます (結局のところ、Mac は Unix であり、末尾に CRLF を使用せず、LF のみを使用します)。
そして、<concat>
作成した別の行も使用します。
詳しくは
build.xml
ファイルから次のスニペットまで問題を追跡しました。
これは宣伝どおりに機能します。NL
つまり、結果のファイルに空白と表示されます。
<target name="package"
depends="-resolve,compile"
description="Packaging of the artifact">
<!-- Build version.txt and let the user figure out how to use it -->
<mkdir dir="${target.dir}"/>
<echo file="${version.file}">
Jenkins Project: ${env.JOB_NAME}
Jenkins Build Number: ${env.BUILD_NUMBER}
Build Date: ${build.date}
</echo>
<!--
<antcall target="jar"/>
<antcall target="war"/>
<antcall target="ear"/>
-->
</target>
これはしません:
<target name="package"
depends="-resolve,compile"
description="Packaging of the artifact">
<!-- Build version.txt and let the user figure out how to use it -->
<mkdir dir="${target.dir}"/>
<echo file="${version.file}">
Jenkins Project: ${env.JOB_NAME}
Jenkins Build Number: ${env.BUILD_NUMBER}
Build Date: ${build.date}
</echo>
<antcall target="jar"/>
<antcall target="war"/>
<antcall target="ear"/>
</target>
これらのスニペットの唯一の違いは<antcall>
、ファイルを書き込んだ後に 3 つのタスクを実行することです。3 つの antcall タスクにはすべてif
句があるため、設定されているプロパティに基づいて実行される場合と実行されない場合があります。これは私たちの開発チーム向けのビルド テンプレートなので、ぜひ機能させたいと思っています。
<antcall>
が問題を引き起こしているのはなぜですか。ところで、ときどき壊れてしまうことがあるので、機能させるために新しいコンソール ウィンドウを再度開く必要がありますNL
。
以前に同様の問題に遭遇したことがありますが、それは Windows コードページの問題でした。