对于 Maven 3 插件,解决工件的最新方法是什么
For a Maven 3 plugin what is the latest way to resolve a artifact
在 Maven 3.2.5 插件中解析工件的最新方法是什么。 ArtifactResolver 和 ArtifactFactory(depreciated) 在 compat 库中,这意味着有一种 newer/better 解决方法,但我找不到任何不使用上述方法的示例、文档或搜索。
谢谢
迈克尔
sonatype 的一篇博客就是关于这个的:
http://blog.sonatype.com/2011/01/how-to-use-aether-in-maven-plugins
这是博客条目中的代码(那里显然描述了完整的细节):
public MyMojo extends AbstractMojo {
/**
* The entry point to Aether, i.e. the component doing all the work.
*/
@Component
private RepositorySystem repoSystem;
/**
* The current repository/network configuration of Maven.
*/
@Parameter(defaultValue = "${repositorySystemSession}", readonly = true)
private RepositorySystemSession repoSession;
/**
* The project's remote repositories to use for the resolution of plugins and their dependencies.
*/
@Parameter(defaultValue = "${project.remotePluginRepositories}", readonly = true)
private List<RemoteRepository> remoteRepos;
public void execute() throws MojoExecutionException, MojoFailureException {
ArtifactRequest request = new ArtifactRequest();
request.setArtifact(new DefaultArtifact( "org.apache.maven:maven-model:3.0" ) );
request.setRepositories( remoteRepos );
ArtifactResult result = repoSystem.resolveArtifact( repoSession, request );
}
}
然后您可以使用 result.getArtifact()
获取工件,如果需要,可以使用 result.getArtifact().getFile()
获取工件的文件。
在 Maven 3.2.5 插件中解析工件的最新方法是什么。 ArtifactResolver 和 ArtifactFactory(depreciated) 在 compat 库中,这意味着有一种 newer/better 解决方法,但我找不到任何不使用上述方法的示例、文档或搜索。
谢谢
迈克尔
sonatype 的一篇博客就是关于这个的:
http://blog.sonatype.com/2011/01/how-to-use-aether-in-maven-plugins
这是博客条目中的代码(那里显然描述了完整的细节):
public MyMojo extends AbstractMojo {
/**
* The entry point to Aether, i.e. the component doing all the work.
*/
@Component
private RepositorySystem repoSystem;
/**
* The current repository/network configuration of Maven.
*/
@Parameter(defaultValue = "${repositorySystemSession}", readonly = true)
private RepositorySystemSession repoSession;
/**
* The project's remote repositories to use for the resolution of plugins and their dependencies.
*/
@Parameter(defaultValue = "${project.remotePluginRepositories}", readonly = true)
private List<RemoteRepository> remoteRepos;
public void execute() throws MojoExecutionException, MojoFailureException {
ArtifactRequest request = new ArtifactRequest();
request.setArtifact(new DefaultArtifact( "org.apache.maven:maven-model:3.0" ) );
request.setRepositories( remoteRepos );
ArtifactResult result = repoSystem.resolveArtifact( repoSession, request );
}
}
然后您可以使用 result.getArtifact()
获取工件,如果需要,可以使用 result.getArtifact().getFile()
获取工件的文件。