在外部项目中强制执行自定义规则

时间:2018-01-18 07:32:32

标签: java maven maven-3 pom.xml maven-enforcer-plugin

我有一个父maven项目和该项目中的4个模块:

enter image description here

现在我想提出一些自定义规则,说明不存在以字符串“master-”开头的项目版本或依赖版本。此规则适用于依赖于eBill软件的所有外部项目。

所以我创建了一个名为customRule的新模块,其父级也是eBill Software。我跟着writing-a-custom-rule,我的规则类在新模块中。

模块customRule中的CustomRule.java的相关部分:

 MavenProject project = (MavenProject) helper.evaluate( "${project}" );
 Set<Artifact> artifacts = project.getArtifacts();

            boolean containsInvalid = artifacts.stream()
                    .filter(item -> item.getVersion()
                    .startsWith("master-"))
                    .anyMatch(item -> true);

            if(containsInvalid) {
                this.shouldIfail = true;
            }

customRule模块pom.xml的相关部分:

<build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-enforcer-plugin</artifactId>
                <version>1.4</version>
                <executions>
                    <execution>
                        <id>enforce-no-master-versions</id>
                        <goals>
                            <goal>enforce</goal>
                        </goals>
                        <configuration>
                            <rules>
                                <myCustomRule implementation="org.apache.customRule.CustomRule">
                                    <shouldIfail>false</shouldIfail>
                                </myCustomRule>
                            </rules>
                        </configuration>

                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

现在我想在父模块eBill软件中访问此自定义规则:

那么我应该在其pom.xml和外部项目的pom.xml中输入什么才能获得适用于依赖于eBill软件的所有外部项目的自定义规则。

0 个答案:

没有答案