Apache Maven 模型转换器(已退休)

注意:此共享组件已从 Apache Maven 项目中退出,但已移至Apache Archiva项目。

这个共享组件用于在版本 3(由 Maven 1.x 使用)和版本 4(由 Maven 2.0 使用)之间转换 Maven POM。Maven One PluginArchiva使用它。

除了 POM 中不同元素的主要转换之外,还有一些扩展来处理插件及其配置。版本 4 POM 的 XML 模式中未指定哪些插件可用以及如何配置它们。该模式仅具有插件的通用定义,并且允许它们具有配置。

插件配置转换器

在 Maven 1 中,在project.properties文件中配置了一个插件。另一方面,在 Maven 2 中,配置是使用插件的<configuration>元素中的 XML 元素完成的。两者之间的转换由实现org.apache.maven.model.converter.plugins.PluginConfigurationConverter接口的 Plexus 组件处理。

该接口有一个主要方法convertConfiguration(...),它接受一个 Maven 1 模型、一个 Maven 2 模型和一个 Maven 1属性对象作为参数。如果要添加新的插件配置转换器,建议您扩展AbstractPluginConfigurationConverter在/src/main/java/org/apache/maven/model/converter/plugins/目录中查看我们 SCM 中的一些其他实现,以了解需要什么。您基本上需要实现方法buildConfiguration(...)来构建 DOM 配置对象。

插件重定位器

需要注意的另一件事是,Maven 2 中的插件与 Maven 1 中的插件不同。有些已更改名称,而有些已完全移至其他项目。插件的这种重定位由实现org.apache.maven.model.converter.relocators.PluginRelocator接口的 Plexus 组件处理。

如果您想实现一个新的重定位器,您可以扩展类AbstractPluginRelocator以使您的工作更轻松。您只需指定新旧 groupId 和 artifactId。阅读Javadocs以获取一些重要说明。您还可以通过研究/src/main/java/org/apache/maven/model/converter/relocators/目录中的 SCM 中的其他实现并从中挑选出最好的来节省自己的一些工作。