1

我想通过命令行执行Maven Enforcer pluginMaven 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参数?

回答

0

执行者插件不允许通过命令行参数选择/启用规则。

针对此插件有一个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> 

当然,这是只有在运行时指定强制实施规则的要求,可以通过一些罐装的配置来满足一个亚军。但是,如果要求支持任何可能的执行者规则,那么你不走运,因为该插件不支持。

1

而不是使用配置文件,在另一个答案建议,也可以预先配置<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配置中可以清晰是个人喜好的问题。