向声纳或詹金斯报告父版本的更新

report an update in parent version to sonar or jenkins

当 Maven 构建的父版本不是最新发布版本时,版本插件 display-parent-updates 的目标是很好地报告它,但我想以某种方式报告:

  1. 将构建标记为警告或不稳定状态(以便在 jenkins 中显示彩色视觉效果)
  2. 在 jacoco 报告中添加这个(不知道这是否可行,那就太好了)-> 在声纳中可见
  3. 也许使用 enforcer 插件(不知道这是否有帮助)

有什么建议吗?

I achieved this in 2 steps : 

1. Use of the following plugin 

`<plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>versions-maven-plugin</artifactId>
        <executions>
            <execution>
                <id>display-dkv-boot-starter-parent-updates</id>
                <phase>initialize</phase>
                <goals>
                    <goal>display-parent-updates</goal>
                </goals>
                <configuration>
                    <allowSnapshots>true</allowSnapshots>
                </configuration>
            </execution>
        </executions>
    </plugin>`
  1. 将 enforce 插件与自定义规则结合使用

    public class MyCustomRule 实施 EnforcerRule2 {

         private boolean fail = false;
    
         @Override
         public void execute(EnforcerRuleHelper helper) throws EnforcerRuleException {
             Log log = helper.getLog();
             List<String> lines = Collections.emptyList();
             try {
                 Path path = Paths.get((String) helper.evaluate("${versions.outputFile}"));
                 lines = Files.readAllLines(path);
                 fail = lines.stream()
                             .anyMatch(l -> l.contains("The parent project has a newer version"));
             } catch (Exception ex) {
                 log.warn(ex);
                 fail = false;
             }
    
             if (this.fail) {
                 throw new EnforcerRuleException(lines.toString());
             }
         }
    
         @Override
         public boolean isCacheable() {
             return false;
         }
    
         @Override
         public boolean isResultValid(EnforcerRule enforcerRule) {
             return fail;
         }
    
         @Override
         public String getCacheId() {
             return null;
         }
    
         @Override
         public EnforcerLevel getLevel() {
             return EnforcerLevel.WARN;
         }
     }