2011-01-29 7 views

答えて

19

MavenXpp3Readermaven-modelの一部です。サンプルコード:

MavenXpp3Reader reader = new MavenXpp3Reader(); 
Model model = reader.read(new FileReader(mypom)); 
29

まず、私はそこに利用できるAPIとそれを達成する簡単な方法があるので、あなたはすでにMavenプラグイン内で実行されていないと仮定しています。

先ほど投稿した解決策では、POMを簡単に読み取ることができますが、親の継承と式の補間は考慮されていません。

そのためには、ModelBuilderクラスを使用する必要があります。この

使用はArchivaから、たとえば、このコードの断片である、非常に簡単です:

ModelBuildingRequest req = new DefaultModelBuildingRequest(); 
req.setProcessPlugins(false); 
req.setPomFile(file); 
req.setModelResolver(new RepositoryModelResolver(basedir, pathTranslator)); 
req.setValidationLevel(ModelBuildingRequest.VALIDATION_LEVEL_MINIMAL); 

Model model; 
try 
{ 
    model = builder.build(req).getEffectiveModel(); 
} 
catch (ModelBuildingException e) 
{ 
    ... 
} 

あなたはこのかかわらず実行するために2つのことを行う必要があります。

  1. インスタンス化し、ワイヤーModelBuilderのインスタンスをそのプライベートフィールドを含めて
  2. 親POMを見つけるためのMavenのリゾルバの1つを使用するか、自分で作成してください(上のスニペットのように)

これは、既に使用しているDIフレームワークやMavenのデフォルトコンテナを埋め込みたいかどうかによって異なります。

+0

私が理解する限り、これはMaven 3のやり方です。 Maven 2.2.xのアプローチは何でしょうか、私たちに教えてください。前もって感謝します。 – carlspring

+1

ライブラリは互換性があるので、埋め込みには関係なくmaven 3ライブラリを使用することをお勧めします。実際にMaven 2ライブラリを使用する必要がある場合は、ここで例を見つけることができます:https://github.com/brettporter/centrepoint/blob/master/centrepoint/modules/maven-importer/src/main/java/com/ effectivemaven/centrepoint/maven/repository/CentralRepositoryService.java –

+0

その明確化のおかげで!とても有難い! – carlspring

2

これは達成しようとしているものによって異なります。埋め込まれたXMLファイルをXMLとして扱いたいだけなら、既に提供されている提案に従ってください。

アプリにMavenの機能を実装する場合は、新しいaetherライブラリをお試しください。私はそれを使用していませんが、それは統合するのに十分にシンプルに見えますし、あなたの努力のためにMavenの機能を提供する必要があります。

現時点では、このライブラリはMaven 2ではなくMaven 3ライブラリです(タグに指定されています)。それがあなたに大きな違いをもたらすかどうかわからない

+0

aetherでプラグイン設定を読むことはできますか? –

+1

うわー、ゾンビの話題。とにかく、私が言ったように、あなたがしようとしていることに依存します。外部の設定をmavenに解析するだけであれば、通常のXMLパーサを使用することになります。あなたがプラグインを書いているなら、できると思いますが、より新しいライブラリが利用できるかもしれません(私は今、Mavenの開発者をいなくなっています)。いくつかのプラグインのドキュメントを見ることができます。http://maven.apache.org/plugin-developers/ PS。私はaetherへのリンクはもはや新しいリンクが動作していないことに気づいた - http://www.eclipse.org/aether/ – GKelly

関連する問題