質問

以下を含む独自の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 パスにコピーされます。

いいえ、ありません。コピータスクは、ビルドフォルダーにリソースをコピーする正しい方法です。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top