繁体   English   中英

Maven 插件 CLI 参数覆盖<configuration>在 pom.xml 中

[英]Maven plugin CLI parameter overwriting <configuration> in pom.xml

Maven 插件如何/应该如何处理配置选项的顺序? 我希望通过 CLI 传递的属性会覆盖pom.xml <configuration>块中定义的属性。

这是一个例子。

pom.xml

<plugin>
    <groupId>group</groupId>
    <artifactId>artifact</artifactId>
    <version>1.2.3</version>
    <executions>
    ...
    </executions>
    <configuration>
        <url>foo.com</url>
    </configuration>
</plugin>

命令行界面

mvn group:artifact:1.2.3:doit -Dmymojo.url=bar.com

我目前正在调试一个插件(不是我的),它优先考虑 POM 中定义的url值,而不是通过 CLI 传递的值。 这就是 mojos 应该如何表现,即 Maven 功能而不是插件错误? 我没有找到参考指南中提到的任何内容。

根据https://issues.apache.org/jira/browse/MNG-4979这按设计工作。 我觉得这违反直觉,并且认为 MNG-4979 中给出的理由令人信服。

如果您的设置允许修改pom.xml您可以按照 JF Meier 的建议解决此行为(以及上述问题)。

<properties>
  <mymojo.url>foo.bar</mymojo.url>
</properties>

<plugin>
    <groupId>group</groupId>
    <artifactId>artifact</artifactId>
    <version>1.2.3</version>
    <executions>
    ...
    </executions>
    <configuration>
        <url>${mymojo.url}</url>
    </configuration>
</plugin>

通过命令行,您可以设置一个属性url 这将覆盖 POM 的<properties>部分中的条目<url>foo.com</url>

许多插件允许通过属性设置配置条目,但这些属性不会自动具有相同的名称。 在文档中,这通常称为user property 要查看示例,请查看例如

https://maven.apache.org/plugins/maven-dependency-plugin/get-mojo.html

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM