【发布时间】:2019-02-24 01:44:06
【问题描述】:
我正在研究一个 maven 生命周期扩展类,并且需要检查给定项目的 dependencyManagement 块中列出的 pom (bom) 的坐标详细信息。我需要能够在我在扩展类中覆盖的 afterProjectsRead 方法中执行此操作。我了解<scope>import</scope> 标记会导致dependencyManagement 依赖项部分被导入的pom(bom)中列出的依赖项替换。但是我需要在我的扩展类中查看 pom (bom) 的坐标详细信息,但似乎导入已经发生,并且当我进入我的 afterProjectsRead 扩展方法时这些详细信息不可用。
需要明确的是,给定 maven 项目中的 dependencyManagement 块如下所示:
<dependencyManagement>
<dependencies>
<dependency>
<groupId>some.project</groupId>
<artifactId>some-project-bom</artifactId>
<version>0.1-SNAPSHOT</version>
<scope>import</scope>
<type>pom</type>
</dependency>
</dependencies>
</dependencyManagement>
我的 Maven 生命周期扩展类正在尝试这样做:
@Override
public void afterProjectsRead(MavenSession session) {
MavenProject proj = session.getCurrentProject();
DependencyManagement depMgmt = proj.getDependencyManagement();
for (Dependency dep : depMgmt.getDependencies()) {
System.out.println(dep.getArtifactId() + ":" + dep.getVersion());
}
}
为了获取引用的pom(bom)的坐标细节
当时我希望获得 pom (bom) 本身的 groupId、artifactId 和版本,但这些信息已经被 some-project-bom.xml 中实际列出的依赖项所取代。因此,我正在检索 pom (bom) xml 文件中指定的依赖项的坐标详细信息。
这可能吗?也许通过 MavenSession 对象?
【问题讨论】:
标签: maven maven-3 maven-plugin