重写Maven插件参数

重写Maven插件参数,maven,Maven,我有一个Maven插件,它在POM文件中配置为 com.example maven插件示例 剧本 现在我想从命令行重写scriptsPath,以便运行 mvn -X example-maven-plugin:goal -DscriptsPath=scripts1 我可以看到scriptsPath的值仍然是scripts,而不是scripts1。是否可以从命令行重写配置参数 不幸的是,没有通过使用属性覆盖maven插件配置的通用方法。如果插件文档未明确允许您使用属性设置配置值,则可以使用以下

我有一个Maven插件,它在POM文件中配置为


com.example
maven插件示例
剧本
现在我想从命令行重写
scriptsPath
,以便运行

mvn -X example-maven-plugin:goal -DscriptsPath=scripts1

我可以看到
scriptsPath
的值仍然是
scripts
,而不是
scripts1
。是否可以从命令行重写配置参数

不幸的是,没有通过使用属性覆盖maven插件配置的通用方法。如果插件文档未明确允许您使用属性设置配置值,则可以使用以下模式:

<properties>
    <scripts.path>scripts</scripts.path>
</properties>
<build>
    <plugins>
        <plugin>
            <groupId>com.example</groupId>
            <artifactId>example-maven-plugin</artifactId>
            <configuration>
                <scriptsPath>${scripts.path}</scriptsPath>
            </configuration>
        </plugin>
    </plugins>
</build>

可以,但这取决于maven插件的实现(和支持),以及它是否应用与xml元素名相同的名称(情况并非总是如此)。要在插件官方文档中查看,如果任何情况下
example maven plugin
支持命令行参数,您可以通过运行
mvn help:descripe-Dcmd=example maven plugin:goal-Ddetail
查看它们的名称,这正是链接副本的答案。你应该改为标记为复制。好吧,它使用相同的方法。然而,在链接的答案中,它是通过属性设置的
,对于没有经验的maven用户来说,它可能看起来像是对不同问题的回答。这就是为什么我回答他的问题时没有将其标记为重复。是的,看起来是重复的。而@StepanVavra方法才是有效的方法。@Tunaki另一个问题对于想要解决这个问题的人来说并不太有用(比需要的时间长,覆盖而不是覆盖,问题中没有给出pom),而且非常不同,即如何覆盖属性与如何覆盖配置。stephan的答案是完美的——他给出了事实上正确的答案(“没有一般的方法”),并使用属性进行了变通
mvn -X example-maven-plugin:goal -Dscripts.path=scripts1