2

maven pom.xmlファイルを入力として受け取り、次のことを行うJavaプログラムを作成しようとしています。

  1. すべての依存関係をダウンロードします
  2. クラスパスにjarを追加します
  3. Javaコードを実行します(jarからロードされます)

出来ますか?上記の#1を達成するためのサンプルコードは大歓迎です

4

2 に答える 2

4

あなたの要件は、Maven Exec プラグインがすでに行っていることとまったく同じです。

于 2012-08-06T20:08:32.963 に答える
0

どうしてもこれをJavaアプリに埋め込んで行う必要がある場合は、次のようにします。

Mavenが依存関係の解決を行うために内部で使用するライブラリはAetherと呼ばれます。Sonatypeサイトのドキュメントを見ると、手順1の実行方法の例があります。依存関係の解決プロセスの一部で、依存関係のリストにアクセスし、ループしてクラスパスを作成できます。

ステップ3では、ProcessBuilderを使用して、Aetherを使用してクラスパスを構築したJVMのサブプロセスとしてターゲットJavaアプリを起動できます。

シェルスクリプトを使用できる場合:

mvn dependency:get -Dartifact=[group]:[artifact]:[version]アーティファクトをローカルリポジトリにダウンロードするために使用できます。

次に、を使用mvn dependency:build-classpathしてクラスパス文字列を生成できます。

次に、-cpオプションを指定してJavaを実行するだけです。必要なメインクラスも知っている必要があります。または、アーティファクトとバージョン番号からプライマリjarの名前を計算し、それを-jarに渡すことができます。

デプロイメント環境でメインプロジェクトのpom.xmlを取得できる場合:

を使用できますmvn exec:java -DmainClass=com.company.package.YourMainClass。このオプションははるかに単純ですが、Maven JVM内で実行するという欠点があり、別のプロセスをフォークするオプションがないことがわかった限りです。また、この作業を行うには、本格的なpomが必要ですが、これは必ずしも便利ではありません。

于 2012-08-07T15:01:15.333 に答える