生命周期配置未涵盖插件执行:com.mycila.maven-license-plugin

时间:2016-02-17 09:52:42

标签: java maven plugins sonarqube

我正在尝试使用java创建一个Sonar插件。为此,我创建了一个java项目,并按照本教程将其转换为Maven项目,并为其添加了一些功能 -

http://docs.sonarqube.org/display/DEV/Writing+Custom+Rules+using+Java

我的pom.xml现在看起来像这样 -

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>

<parent>
    <groupId>org.codehaus.sonar-plugins</groupId>
    <artifactId>parent</artifactId>
    <version>18</version>
</parent>


<groupId>org.sonar.samples</groupId>
<artifactId>java-custom-rules</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>sonar-plugin</packaging>

<properties>
    <java.plugin.version>3.8</java.plugin.version>
</properties>

<name>Java Custom Rules</name>
<description>Java Custom Rules</description>

<dependencies>
    <dependency>
        <groupId>org.codehaus.sonar</groupId>
        <artifactId>sonar-plugin-api</artifactId>
        <version>4.5.4</version>
        <scope>provided</scope>
    </dependency>

    <dependency>
        <groupId>org.sonarsource.java</groupId>
        <artifactId>sonar-java-plugin</artifactId>
        <version>${java.plugin.version}</version>
        <scope>provided</scope>
    </dependency>

    <dependency>
        <groupId>org.sonarsource.java</groupId>
        <artifactId>java-squid</artifactId>
        <version>${java.plugin.version}</version>
    </dependency>

    <dependency>
        <groupId>org.sonarsource.sslr-squid-bridge</groupId>
        <artifactId>sslr-squid-bridge</artifactId>
        <version>2.6.1</version>
        <exclusions>
            <exclusion>
                <groupId>org.codehaus.sonar.sslr</groupId>
                <artifactId>sslr-core</artifactId>
            </exclusion>
        </exclusions>
    </dependency>

    <dependency>
        <groupId>org.sonarsource.java</groupId>
        <artifactId>java-checks-testkit</artifactId>
        <version>${java.plugin.version}</version>
        <scope>test</scope>
    </dependency>

    <dependency>
        <groupId>org.codehaus.sonar.sslr</groupId>
        <artifactId>sslr-testing-harness</artifactId>
        <version>1.19.2</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.11</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.easytesting</groupId>
        <artifactId>fest-assert</artifactId>
        <version>1.4</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>ch.qos.logback</groupId>
        <artifactId>logback-classic</artifactId>
        <version>0.9.30</version>
        <scope>test</scope>
    </dependency>
</dependencies>

<build>
    <pluginManagement>
        <plugins>
            <plugin>
                <groupId>org.codehaus.sonar</groupId>
                <artifactId>sonar-packaging-maven-plugin</artifactId>
                <version>1.13</version>
                <extensions>true</extensions>
                <configuration>
                    <pluginClass>org.sonar.samples.java.MyJavaRulesPlugin</pluginClass>
                </configuration>
            </plugin>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.1</version>
                <configuration>
                    <source>1.7</source>
                    <target>1.7</target>
                </configuration>
            </plugin>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-dependency-plugin</artifactId>
                <version>2.10</version>
                <executions>
                    <execution>
                        <id>copy</id>
                        <phase>test-compile</phase>
                        <goals>
                            <goal>copy</goal>
                        </goals>
                        <configuration>
                            <artifactItems>
                                <artifactItem>
                                    <groupId>org.apache.commons</groupId>
                                    <artifactId>commons-collections4</artifactId>
                                    <version>4.0</version>
                                    <type>jar</type>
                                </artifactItem>
                            </artifactItems>
                            <outputDirectory>${project.build.directory}/test-jars</outputDirectory>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            <!--This plugin's configuration is used to store Eclipse m2e settings only. It has no influence on the Maven build itself.-->
            <!--
            <plugin>
                <groupId>org.eclipse.m2e</groupId>
                <artifactId>lifecycle-mapping</artifactId>
                <version>1.0.0</version>
                <configuration>
                    <lifecycleMappingMetadata>
                        <pluginExecutions>
                            <pluginExecution>
                                <pluginExecutionFilter>
                                    <groupId>
                                        com.mycila.maven-license-plugin
                                    </groupId>
                                    <artifactId>
                                        maven-license-plugin
                                    </artifactId>
                                    <versionRange>
                                        [1.9.0,)
                                    </versionRange>
                                    <goals>
                                        <goal>check</goal>
                                    </goals>
                                </pluginExecutionFilter>
                                <action>
                                    <ignore></ignore>
                                </action>
                            </pluginExecution>
                        </pluginExecutions>
                    </lifecycleMappingMetadata>
                </configuration>
            </plugin>
            -->
        </plugins> 
    </pluginManagement>
</build>

但是,当我正在进行干净的包或清理编译时,它会给出错误:
Plugin execution not covered by lifecycle configuration: com.mycila.maven-license-plugin:maven-license-plugin:1.9.0:check (execution: enforce-license-headers, phase: validate)

并且,它显示了行的错误 -

<parent>
        <groupId>org.codehaus.sonar-plugins</groupId>
        <artifactId>parent</artifactId>
        <version>18</version>
    </parent>

可以使用一些快速修复程序 -

  1. 发现新的m2e连接 - 什么都不返回。
  2. 在Eclipse首选项中的Eclipse构建中将目标检查标记为忽略。
  3. 永久性地在pom.xml中将目标检查标记为在Eclipse构建中被忽略.-这解决了编译问题,但我不确定它的后期效果。
  4. 任何想法,在这种情况下该怎么做?

    谢谢!

2 个答案:

答案 0 :(得分:2)

您可以通过运行mvn license:format向所有文件添加许可证标头来消除错误。这就是错误告诉你的 - 预期的许可证头没有到位。

但是,您应该更改父pom(不确定是否也会删除错误)。

<parent>
  <groupId>org.sonarsource.parent</groupId>
  <artifactId>parent</artifactId>
  <version>24</version>
</parent>

是目前使用的。

答案 1 :(得分:0)

尝试从gourpIdartifactIdversionRange节点中删除未使用的空格:

<configuration>
    <lifecycleMappingMetadata>
        <pluginExecutions>
            <pluginExecution>
                <pluginExecutionFilter>
                    <groupId>com.mycila.maven-license-plugin</groupId>
                    <artifactId>maven-license-plugin</artifactId>
                    <versionRange>[1.9.0,)</versionRange>
                    <goals>
                        <goal>check</goal>
                    </goals>
                </pluginExecutionFilter>
                <action>
                    <ignore/>
                </action>
            </pluginExecution>
        </pluginExecutions>
    </lifecycleMappingMetadata>
</configuration>

您也可以将versionRange设置为[0,)