19

私の仕事のプロジェクトでは、最近、Java クラスを介して POM ファイルを生成するように依頼されました。問題は、私がMavenに非常に慣れていないことです(昨年12月以来)。

私が必要としているのは、必要なすべてのデータを指定して xml ファイル (pom ファイルですが、xml 作成コードを構成できれば問題ありません) を生成する何らかのコードです。そのため、手動で記述する必要はありません。自分で説明しているかどうかはわかりませんが、問題は、特定のデータで POM ファイルを生成または構築するライブラリまたはクラスがあるかどうかです。そうでない場合は、それが存在するかどうか、またはPOMオブジェクトを宣言してから簡単な Document d = generatePom(POM p)。POM ファイルを作成するのがどれほど難しいかについて誰も文句を言っていないので、簡単な方法があるはずだと思いますが、多くの API javadoc で自分自身を失い、元に戻る方法が見つからないと思います。

このためのコードがない場合の私の考えは、POM 辞書 (すべての要素をカバーするため) を検索し、XML ジェネレーターを使用して、特定の POM オブジェクト (提供されたデータを以前に入力したもの) を含む xml ファイルを作成することです。 JDOM、XOM、XStream など。すでにこれを行っているクラスがない場合は、これについての考えをいただければ幸いです (「やあ、間違ったことをしている」など)。

PS: Eclipse プロジェクトがいくつかの Maven 処理を行っており、実際のプロジェクトの pom.xml ファイルを生成する API があることを読みました。入力データなどをオーバーライドできれば、それは素晴らしいことです。

全てに感謝!

4

4 に答える 4

47

それはあなたがしようとしていることに依存します。特定のタイプの新しいプロジェクト用に POM を作成するだけの場合、最適な方法は Maven アーキタイプを使用することです (必要なテンプレートを使用して独自のアーキタイプを作成できます)。

プログラムで POM を作成する必要が本当にある場合は、次を使用できます。

import org.apache.maven.model.*;
import org.apache.maven.model.io.xpp3.MavenXpp3Writer;
...
Model model = new Model();
model.setGroupId( "some.group.id" );
...
new MavenXpp3Writer().write( w, model );

... ここで、w は java.io.Writer であり、必要なすべての例外処理を追加します。

Javadoc はこちら: http://maven.apache.org/ref/2.2.1/maven-model/apidocs/index.html

この API にアクセスするには、次の依存関係を追加する必要があります。

<dependency>
  <groupId>org.apache.maven</groupId>
  <artifactId>maven-model</artifactId>
  <version>2.2.1</version>
</dependency>

対応する読み取り API もありますが、継承や補間などのすべての Maven 操作を行うわけではないことに注意してください (これを行うには、より高度な API を使用する必要があります)。

于 2010-01-25T12:52:52.870 に答える
1

m2eclipse などの既存のツールを使用するのではなく、Java で実行する必要があるのはなぜですか。m2eclipse を使用して既存のプロジェクトの POM を作成するための ガイド
を 参照してください。

また、実装のソース コードを確認できるm2eclipse 開発者ガイドもご覧ください。

返信----
これは、プロジェクトを作成しようとするときに発生する一般的な問題です。
最大のハードルは、正しいMaven 座標を識別しようとすることです。
多くの場合、プロジェクトは名前が変更された jar ファイルを参照します。ここでは、グループ ID とバージョン番号が取り除かれています。

jar ファイル内のマニフェストを調べると、正しい依存アーティファクトに関するヒントが得られる場合があります。

于 2010-01-25T10:20:08.817 に答える