【问题标题】:Get MavenProject from just the POM.xml - pom parser?仅从 POM.xml - pom 解析器获取 MavenProject?
【发布时间】:2011-05-21 20:30:54
【问题描述】:

是否可以仅从 pom.xml 文件中获取 org.apache.maven.project.MavenProject 或其他一些 POM 对象形式的实例?

提前致谢。

【问题讨论】:

  • 你为什么想要它——你想要达到什么目的?

标签: java maven pom.xml


【解决方案1】:

是的,你可以。这是代码。你需要 maven-model-3.0.4.jar 和 plexus-utils-2.0.6.jar 和 maven-core-3.0.4.jar

Model model = null;
FileReader reader = null;
MavenXpp3Reader mavenreader = new MavenXpp3Reader();
try {
    reader = new FileReader(pomfile);
    model = mavenreader.read(reader);
    model.setPomFile(pomfile);
}catch(Exception ex){}
MavenProject project = new MavenProject(model);

【讨论】:

  • 试过你的解决方案,但它没有填充我期望的 MavenProject 对象的某些字段,例如 getCompileSourceRoots() 返回空列表。
  • 读取 pom 文件不涉及数据插值,例如变量、从父级(及其原始父级)继承的设置等。
【解决方案2】:

如果你想获得基于 groupid、artifactId 和 version 的 MavenProject,你必须在 maven 插件中运行。这段代码将完成这项工作:

ProjectBuildingRequest configuration = new DefaultProjectBuildingRequest();
configuration.setProcessPlugins( false );
configuration.setRepositorySession( session );
org.apache.maven.artifact.Artifact artifact = new org.apache.maven.artifact.DefaultArtifact(groupId, artifactId, version, "compile", "", "", new DefaultArtifactHandler());
MavenProject project = projectBuilder.build(artifact, configuration).getProject();

可以将缺失的属性注入到 maven 插件中。

【讨论】:

    猜你喜欢
    • 2014-09-04
    • 2016-05-29
    • 2018-10-07
    • 1970-01-01
    • 1970-01-01
    • 2015-01-07
    • 2019-10-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多