覆盖Maven插件参数

时间:2016-01-27 21:29:36

标签: maven

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

it('should return a 400 message if UserId is not supplied stating that "UserId expected"', function(done) {
    request.get('http://localhost:8080/api/v1/user/', function (error, response, body) {
        if (error) return done(error);
        if (response.statusCode != 400) return done(new Error("Not 400"));

        expect(body).to.be.equal('UserId expected');
        done();
    });
});

现在我想从命令行覆盖<build> <plugins> <plugin> <groupId>com.example</groupId> <artifactId>example-maven-plugin</artifactId> <configuration> <scriptsPath>scripts</scriptsPath> </configuration> </plugin> </plugins> </build> ,所以我运行

scriptsPath

我可以看到mvn -X example-maven-plugin:goal -DscriptsPath=scripts1 的值仍然是scriptsPath而不是scripts。是否可以从命令行覆盖配置参数?

1 个答案:

答案 0 :(得分:4)

不幸的是,没有通用的方法来使用属性覆盖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 as

mvn -X example-maven-plugin:goal -Dscripts.path=scripts1