0

プラグイン内から Maven ゴールを呼び出したいのですが、初期化としてプロセスを fork するコストを受け入れるのは気が進まないのです。これを行う方法はありますか?

4

2 に答える 2

0

私が言及し損ねたのはこれでした:

http://timmoore.github.com/mojo-executor/

于 2012-07-19T14:10:14.160 に答える
0

これがサポートされているアプローチであるとは思えませんが、私にとってはうまくいきました。

/**
 * @parameter expression="${session}"
 * @required
 * @readonly
 */
 private MavenSession session;

/**
 * @component
 * @readonly
 */
 private Maven maven;
/**
 * @parameter default-value="${project.remoteArtifactRepositories}"
 * @readonly
 **/
protected List<ArtifactRepository> remoteArtifactRepositories;
/**
 * The project's remote repositories to use for the resolution of plugins
 * and their dependencies.
 * 
 * @parameter default-value="${project.pluginArtifactRepositories}"
 * @readonly
 */
private List<ArtifactRepository> pluginArtifactRepositories;
/**
 * @parameter default-value="${localRepository}"
 * @readonly
 * */
private ArtifactRepository localRepository;

...

List<String> goals = ...
File pomFile = ...
MavenExecutionRequest req = new DefaultMavenExecutionRequest();
req.setPom(pomFile);
req.setBaseDirectory(pomFile.getParentFile());
req.setGoals(goals);
req.setProxies(session.getSettings().getProxies());
req.setMirrors(session.getSettings().getMirrors());
req.setLocalRepository(localRepository);
req.setRemoteRepositories(remoteArtifactRepositories);
req.setPluginArtifactRepositories(pluginArtifactRepositories);
MavenExecutionResult result = session.execute(req);

処理をイントロスペクトするには、AbstractExecutionListener をサブクラス化し、req.setExecutionListener() を使用して適用します。

于 2012-07-17T19:15:33.097 に答える