【问题标题】:Is it possible to use XML attributes in a Maven plugin's configuration block?是否可以在 Maven 插件的配置块中使用 XML 属性?
【发布时间】:2015-09-27 02:53:13
【问题描述】:

我想开发一个 Maven 插件,作为其配置的一部分(将映射到 mojo 字段),我想在几个标签上提供 XML 属性。不幸的是,official guide 没有提到在配置块中使用属性(这可能意味着也可能不意味着它根本不可能。)

我想要的是这个:

<plugin>
  <configuration>
    <my_option attr="x" /> <!-- is this possible? -->
  </configuration>
</plugin>

这可能吗?如果是这样,这将如何映射到我的 mojo 中的字段?

【问题讨论】:

  • 如果 maven 开发人员将 XML 属性合并到 pom 设计中,那将是非常有益的。不幸的是,不这样做的结果是冗长而冗长的。对于我的插件,我需要配置一些键不是有效 XML 标记的映射,因此我不得不采用更冗长的 &lt;entry&gt;&lt;key&gt;key&lt;/key&gt;&lt;value&gt;value&lt;/value&gt;&lt;/entry&gt; 样式。以&lt;properties&gt; 开头的内容一直是​​一团糟。

标签: maven maven-plugin


【解决方案1】:

不。 Maven 不支持属性。但是,您可以使用字符串映射。查看例如编译器插件如何执行 compilerArguments 或 Android Maven 插件(您正在使用的)如何在 dex mojo 配置中执行 jvmArguments。

【讨论】:

  • 谢谢曼弗雷德;我最终创建了一个包含配置的 POJO。我宁愿让它类似于用于在清单中定义相同设置的语法,但据我所知,这些方法中的任何一种都不可能。
  • 我相信这个答案并不完整,事实上,如果 mojo 的参数类型为PlexusConfiguration,则可以使用自定义属性(请参阅@chapman-flack 下面stackoverflow.com/a/32800814/547270 的答案中的详细信息)
【解决方案2】:

我知道我迟到了这个问题,但我认为答案是不同的。毕竟,Maven antrun plugin 的工作方式完全符合 OP 的要求;看看target 可以提供您可以在ant 构建文件中使用的任何XML 的方式。

在 mojo 中通过使用类型 PlexusConfiguration 声明该参数来完成, 见around lines 164-171

PlexusConfiguration 没有扩展任何众所周知的 XML API,例如 DOM,而且它似乎不支持命名空间、PI 等,但它具有基本的getChildren/getAttributeNames/getAttribute 方法大多数用途都需要。

我不知道是否还有一种方法可以以newer JSR-330 (non-Plexus) 的方式进行,但就 Plexus API 而言,文档确实说“这些 API 将永远受到支持,或者至少在 Maven 之前完全放弃对 Maven 2 的支持。”

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-05-02
  • 2020-12-22
  • 1970-01-01
  • 1970-01-01
  • 2015-07-10
  • 1970-01-01
  • 2018-04-28
相关资源
最近更新 更多