java - 如何在插件中解析 Maven 存储库中的工件?

标签 java maven-2 maven-plugin

在上一个问题中,我得到了 answer用于从 Maven 存储库下载工件。这对我来说效果很好,但我需要阅读 MavenProject 以获取下载的工件。

在我的插件中读取下载工件的 MavenProject 的最佳方式是什么?

最佳答案

您可以使用 MavenProjectBuilder 解析工件并将下载的 pom 读入 MavenProject。 buildFromRepository() 方法将从远程存储库获取工件(如果需要),因此在阅读之前无需下载它。

这些是先前答案解决 Maven 项目所需的更改:

//other imports same as previous answer
import org.apache.maven.project.MavenProject;
import org.apache.maven.project.MavenProjectBuilder;
import org.apache.maven.project.ProjectBuildingException;

/**
 * Obtain the artifact defined by the groupId, artifactId, and version from the
 * remote repository.
 * 
 * @goal bootstrap
 */
public class BootstrapAppMojo extends AbstractMojo {

    /**
     * Used to resolve the maven project.
     * 
     * @parameter expression=
     *            "${component.org.apache.maven.project.MavenProjectBuilder}"
     * @required
     * @readonly
     */
    private MavenProjectBuilder mavenProjectBuilder;

    //rest of properties same as before.

    /**
     * The target pom's version
     * 
     * @parameter expression="${bootstrapVersion}"
     * @required
     */
    private String bootstrapVersion;

    public void execute() throws MojoExecutionException, MojoFailureException {
        try {
            Artifact pomArtifact = this.factory.createArtifact(
                bootstrapGroupId, bootstrapArtifactId, bootstrapVersion,
                "", bootstrapType);

            MavenProject project = mavenProjectBuilder.buildFromRepository(
                pomArtifact, this.remoteRepositories, this.localRepository);

            //do something with the project...
        } catch (ProjectBuildingException e) {
            getLog().error("can't build bootstrapped pom", e);
        }
    }
}

关于java - 如何在插件中解析 Maven 存储库中的工件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1440486/

相关文章:

java - 自签名应用 itext 5.5.11 以来,文档已被更改或损坏

java - 悲伤的类型逻辑

java - Spring Hibernate 发现了不止一行具有给定外键的行

maven-2 - 我的profiles.xml有什么问题?

带有 Svn :Externals and a multi-module project 的 Maven 发布插件

java - Maven:一种跳过选定站点部署问题管理的方法

java - 单击 android webview 中的链接时启动打开的浏览器

maven-2 - 将 websphere 门户项目转换为 maven

Maven 在其他模块之前构建父级

maven - 如何从 jasperreports maven 插件中排除 jasperreports Artifact