Maven Enforcer插件:通过命令行指定规则
问题描述:
我想通过命令行执行Maven Enforcer plugin。Maven Enforcer插件:通过命令行指定规则
我已经试过:
mvn enforcer:enforce -Drules=[requireReleaseDeps]
mvn enforcer:enforce -Drules=requireReleaseDeps
我总是收到此错误:
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-enforcer-plugin:1.4.1:enforce (default-cli) on project lkww-util-app-wurm-admin-rs-api: The parameters 'rules' for goal org.apache.maven.plugins:maven-enforcer-plugin:1.4.1:enforce are missing or invalid -> [He
lp 1]
如何做我必须指定rules
参数?
答
执行者插件不允许通过命令行参数选择/启用规则。
针对此插件有一个open issue,因此您可以为此投票。同时,如果您的规则选择可以分为少量选择,那么您可以创建配置文件并将规则与配置文件相关联,从而允许通过指定配置文件为选定的规则子集运行构建。在下面的例子中有两个配置文件,各自有不同的执法规则:
<profiles>
<profile>
<id>EnforceBannedPlugins</id>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-enforcer-plugin</artifactId>
<version>3.0.0</version>
<executions>
<execution>
<id>enforce-banned-plugins</id>
<goals>
<goal>enforce</goal>
</goals>
<configuration>
<rules>
<bannedPlugins>
...
</bannedPlugins>
</rules>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</profile>
<profile>
<id>EnforceMavenVersion</id>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-enforcer-plugin</artifactId>
<version>3.0.0</version>
<executions>
<execution>
<id>enforce-maven-version</id>
<goals>
<goal>enforce</goal>
</goals>
<configuration>
<rules>
<requireMavenVersion>
...
</requireMavenVersion>
</rules>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</profile>
</profiles>
当然,这是只有在运行时指定强制实施规则的要求,可以通过一些罐装的配置来满足一个亚军。但是,如果要求支持任何可能的执行者规则,那么你不走运,因为该插件不支持。
答
而不是使用配置文件,在另一个答案建议,也可以预先配置<executions>
在你的POM的主要部分,然后使用<execution>
的<id>
在命令行中调用它们(见Guide to Configuring Plug-ins为在此语法的详细信息):
mvn enforcer:[email protected]
作为enforce
goal由缺省值进行任何<execution>
结合目标到validate
相,然而,my-execution-id
执行也运行在一个正常mvn clean install
。如果不理想,与<skip>true</true>
配置执行和覆盖此在命令行:
mvn enforcer:[email protected] -Denforcer.skip=false
不管这是不是散布在整个POM的主要部分和<profiles>
的maven-enforcer-plugin
配置中可以清晰是个人喜好的问题。