0

Ant を使用してアプリケーションをビルドし、アプリケーションの main() メソッドを実行し、junit テストを実行し、すべてを jar ファイル (source+build+libraries+build.xml) にパッケージ化しようとしています。クラスには、main() メソッド エントリ ポイントを持つランナー クラスが含まれます。

ただし、目的は、使用されるすべてのライブラリ (junit.jar など) と ant build.xml 自体を含めることです。

main() メソッドだけでなく、実行可能なjarファイルがantビルドファイルの選択されたターゲットを実行する方法があるかどうか疑問に思っていました。明らかに、コンパイル ターゲットを再度実行する必要はありませんが、main() メソッド (実行ターゲットの Java 要素) と junit ターゲットのみを実行します。それは可能ですか?

洞察力を前もって感謝します!

4

1 に答える 1

3

「実行可能なjar」は、あなたが思っているものではありません。これにより、すべてクラスをまとめて (ソースを追加することもできますが、その意味はほとんどわかりません)、jar マニフェストで Main-Class 属性を使用してメイン クラスを宣言できます。詳細はこちら

java -jar my.jar次に、指定したクラスのメソッドを呼び出す " " コマンドラインを使用して、その jar を起動main()できます。アプリケーションで必要な他の jar を指すマニフェスト ファイルの属性を介してクラスパスを指定することもできます。Class-Pathこれは、これらの jar が jar 内にアーカイブされているという意味ではありません。実際、そうすると、特別な予防措置を講じてカスタム クラスローダーを作成しない限り、JVM はこれらの jar からクラスをロードできなくなります。

于 2009-08-01T05:40:38.387 に答える