带有maven-compiler-plugin和xlint的spring-data-neo4j会导致编译器警告

时间:2015-02-11 17:48:21

标签: spring-data-neo4j maven-compiler-plugin

我的任务是将spring-data-neo4j Maven依赖项集成到一个项目中,该项目使用maven-compiler-plugin和Xlint以及-Werror标志。我有一些需要解决的编译问题。

构建依赖于spring-data-neo4j的Maven项目,此构建配置会发出编译警告,导致构建失败。我无权改变这个项目的构建配置,所以我试图找到一种消除编译器警告的方法。

我通过将http://github.com/spring-guides/gs-accessing-data-neo4j项目分配到https://github.com/spencerhrob/gs-accessing-data-neo4j来重现该问题。

with-xlint 分支中,pom.xml文件“build”部分已更改为以下内容:

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.2</version>
            <configuration>
                <source>1.7</source>
                <target>1.7</target>
                <encoding>UTF-8</encoding>
                <showDeprecation>true</showDeprecation>
                <showWarnings>true</showWarnings>
                <debug>true</debug>
                <compilerArguments>
                    <Xlint/>
                    <Werror />
                </compilerArguments>
            </configuration>
        </plugin>
    </plugins>
</build>

在此分支的完整文件夹中运行 mvn clean package 会返回以下编译错误:

[WARNING] COMPILATION WARNING :  
[INFO]-------------------------------------------------------------  
[WARNING] No processor claimed any of these annotations: org.springframework.context.annotation.Bean, org.springframework.data.neo4j.config.EnableNeo4jRepositories, org.springframework.data.neo4j.annotation.NodeEntity,org.springframework.data.neo4j.annotation.GraphId,org.springframework.data.neo4j.annotation.RelatedTo,org.springframework.data.neo4j.annotation.Fetch,org.springframework.context.annotation.Configuration,org.springframework.beans.factory.annotation.Autowired
[INFO] 1 warning    
[INFO]------------------------------------------------------------- 
[INFO] ------------------------------------------------------------- 
[ERROR] COMPILATION ERROR :   
[INFO]------------------------------------------------------------- 
[ERROR] warnings found and -Werror specified [INFO] 1 error

通过删除-Xlint标志(如 without-xlint 分支中),可预测会导致不发出编译器警告。此外,删除-Werror标志(如 without-werror 分支)会导致发出警告,但Maven构建仍然成功完成。

我也尝试将Xlint与spring-boot-maven-plugin构建插件一起使用,如父gs-acces-data-neo4j项目中所使用的那样。我的存储库中的 without-maven-compiler-plugin 分支具有以下配置:

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <configuration>
                <source>1.7</source>
                <target>1.7</target>
                <encoding>UTF-8</encoding>
                <showDeprecation>true</showDeprecation>
                <showWarnings>true</showWarnings>
                <debug>true</debug>
                <compilerArguments>
                    <Xlint/>
                    <Werror />
                </compilerArguments>
            </configuration>
        </plugin>
    </plugins>
</build>

在此分支上运行 mvn clean package 不会返回编译器警告,即使在编译器参数中指定了Xlint(尽管我承认我并不完全确定Xlint正在运行)。

我知道我可以通过删除maven-compiler-plugin或删除-Xlint或-Werror标志来解决这个问题,但这不是一个选项,因为我无法更改项目的构建配置我正在努力(这不是引用的GitHub存储库)。

为什么有一个已知的原因,为什么使用带有-Xlint和-Werror标志的maven-compiler-plugin构建一个spring-data-neo4j依赖项目会导致“No processor声明任何这些注释”编译器警告?并且,有没有办法消除编译器警告而不删除maven-compiler-plugin或-Xlint和-Werror标志?

0 个答案:

没有答案