質問
以下を含む独自のbuild.xmlを作成しました:
<target name="compile">
<mkdir dir="build"/>
<javac destdir="build">
<src path="src"/>
</javac>
</target>
<target name="build" depends="compile">
<mkdir dir="dist"/>
<jar destfile="dist/app.jar" basedir="build" />
</target>
<target name="run" depends="compile">
<java classname="webserver.Loader" classpath="build" fork="true" />
</target>
それはうまく機能します。 ant runを呼び出すと、アプリケーションがコンパイルおよび実行されますが、アプリケーションにはアイコン付きのパッケージがあり、「ビルド」フォルダーに移動されません。そのため、アイコンを見つけられなかったという例外でアプリケーションが終了します。自分でそれらを移動すると、動作します。
使用しようとしました
<copy todir="build/app/icons">
<fileset dir="src/app/icons"/>
</copy>
動作しますが、コピーコマンドなしで実行したいと思います。 javacにパラメーターはありますか?または他に何か?
お返事ありがとうございます。
解決
申し訳ありませんが、Java以外のファイルを手動でコピーする必要があります。リソースは技術的には「ソース」ではありません。コマンドラインjavacは、ソースディレクトリから出力ディレクトリにリソースファイルをコピーしません。また、antのjavacタスクもコピーしません。
他のヒント
そのようなパラメーターはありません。次のコマンドを使用して、ディレクトリ間であらゆる種類のファイルをコピーできます。
<copy todir="build">
<fileset dir="src"
includes="**/*.xml,**/*.properties,**/*.txt,**/*.ico" />
</copy>
手動でファイルをコピーする代わりに、 jar
タスクの fileset
要素を使用してこれを行うことができます。例:
<jar destfile="dist/app.jar" basedir="build">
<fileset dir="src" includes="app/icons/**" />
</jar>
これにより、 src / app / icons /
のすべてが.jarファイルの app / icons
パスにコピーされます。
いいえ、ありません。コピータスクは、ビルドフォルダーにリソースをコピーする正しい方法です。
所属していません StackOverflow