【问题标题】:Maven plugin buildMaven 插件构建
【发布时间】:2014-12-22 12:56:08
【问题描述】:

我有一个 maven 驱动的项目(目前我们使用 maven 3.0.5) 我们得出的结论是,我们必须开发我们的自定义 maven 插件,对我们的资源进行一些处理 + 对其运行验证(这涉及一些独特的逻辑,因此我们不能使用现有的 maven 插件)

应该做的例子有:

  1. 验证添加到模块的资源。如果它是 XML,请检查它是否符合架构, 检查这些 XML 之间是否没有重复(根据某些逻辑)等等。 例如,如果我有 XML:

约翰

我想确保没有其他同名的 XML。

如果它是基于 JSON 的资源,则检查它是否进行了基于自定义逻辑的验证。

主要是因为有太多人(项目非常大)在更改这些 XML,所以我们希望在编译时检查这些内容,至少我们可以检查的内容。

  1. 从这些 XML 中准备一个自定义分发(例如,我们创建 ZIP 的 ZIP,每个内部 zip 存档都包含一些这些 XML)

  2. 根据在这些 XML 中找到的信息生成一些元数据并将其添加到内部/外部 zip 中

现在,我想在项目的构建中一起构建 maven 插件。 这些验证可以随着逻辑而改变。例如,如果我创建新类型的 XML 资源,我可以开发新类型的验证,这些验证超出了针对模式的验证。 然后我希望这些验证运行每个构建。

据我了解,在 gradle 中有一个 buildSrc 目录用于此类事情,但是在 Maven 中我找不到类似的东西。

所以我的问题是我们如何在 Maven 中做到这一点?

非常感谢,祝您有美好的一天

【问题讨论】:

标签: java maven build


【解决方案1】:

您可以通过以下方式获取这些文件夹:

/**
 * The list of resources we want to transfer.
 */
@Parameter( defaultValue = "${project.resources}", required = true, readonly = true )
private List<Resource> resources;

【讨论】:

  • 谢谢,如果我没听错的话,这就是我可以访问 maven 插件内部资源的方式。感谢您的信息,但这对我有什么帮助?我想在与项目相同的构建中构建这个插件。示例:我有模块 A 和模块 P。A 包含我的代码,P 包含我的插件。我想在包含它们的主 pom 上使用“mvn install”,我希望首先解析 P,构建插件,然后 A 定义这个插件。据我了解,plexus 在开始实际构建之前会解析所有内容,因此 A 无效,因为插件 P 在解析时不可用
  • 在您使用的同一构建(反应器)中构建插件通常不是一个好主意,特别是如果您不想检查构建中的某些内容。这意味着您应该拥有处于已定义版本(已发布)状态的插件。你知道怎么create a Mojo吗?
  • 是的,我知道如何创建 maven 插件...这不是关于 如何 创建插件,它只是关于如何使这个插件与构建一起运行. AFAIK Gradle 具有此功能,通过引入“buildSrc”目录,我在询问 maven 是否有类似的东西......我认为要求这样的检查并没有“错误”,至少在 Gradle 中很容易,所以如果 maven 不能做到这一点,那就是 maven 的一个限制......问题是我不确定 maven 不能做到这一点,这就是我问的原因:)
猜你喜欢
  • 2010-10-07
  • 1970-01-01
  • 1970-01-01
  • 2019-03-30
  • 2016-02-20
  • 2013-12-12
  • 1970-01-01
  • 1970-01-01
  • 2013-10-25
相关资源
最近更新 更多