首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Maven执行插件:通过命令行指定规则

Maven执行插件:通过命令行指定规则
EN

Stack Overflow用户
提问于 2017-10-06 11:12:09
回答 2查看 4.9K关注 0票数 7

我想通过命令行执行Maven执行器插件

我试过:

代码语言:javascript
复制
mvn enforcer:enforce -Drules=[requireReleaseDeps]
mvn enforcer:enforce -Drules=requireReleaseDeps

我总是会犯这个错误:

代码语言:javascript
复制
[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参数?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-10-06 12:40:10

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

这里有一个针对插件的公开发行,所以你可以投票支持它。

同时,如果您的规则选择可以被归类为少量的选择,那么您也许可以创建概要文件并将规则与概要文件关联,从而允许通过指定配置文件来运行对所选规则子集的构建。在下面的示例中,有两个概要文件,每个概要都有不同的执行规则:

代码语言:javascript
复制
<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>

当然,如果您在运行时指定强制执行规则的要求可以通过一些固定配置来满足,那么这只是一个跑步者。但是,如果需要支持任何可能的强制执行规则,那么您就不走运了,因为插件不支持这种规则。

票数 4
EN

Stack Overflow用户

发布于 2017-10-07 18:56:33

您也可以在POM的主部分预配置您的<executions>,然后使用<execution><id>从命令行调用它们(有关此语法的更多信息,请参见配置插件指南 ),而不是像另一个答案所建议的那样使用配置文件:

代码语言:javascript
复制
mvn enforcer:enforcer@my-execution-id

但是,由于默认情况下的任何<execution>都将目标绑定到validate阶段,所以my-execution-id执行也运行在正常的mvn clean install上。如果不希望这样做,请使用true配置执行,并在命令行中重写此操作:

代码语言:javascript
复制
mvn enforcer:enforcer@my-execution-id -Denforcer.skip=false

这是否比将maven-enforcer-plugin配置扩展到POM的主要部分和<profiles>更清晰,这是个人偏好的问题。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46604457

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档