如何使用Maven获取完整的javac编译器错误信息?

4

我当前正在学习如何使用Maven构建我用Java编写的项目。之前,我只用过javac来编译我的项目,并且我已经习惯了它产生的错误信息。我尝试使用mvn compile编译以下有错的测试程序,然后手动使用javac

public class App {
    public static void main( String[] args )
    {
        System.out.print(a);
    }
}

javac 产生的结果:

App.java:5: error: cannot find symbol
    System.out.print(a);
                     ^
  symbol:   variable a
  location: class App
1 error

但是mvn compile生成了以下内容(以及其他一堆堆的堆栈跟踪和输出):

...     
[ERROR] /home/htor/maven-test/cflat/src/main/java/no/uio/ifi/cflat/App.java:[5,25] error: cannot find symbol
[ERROR] -> [Help 1]
...

后者不如第一个错误信息有用,它也不包含来自javac的完整错误信息。我尝试使用-e-X,但错误报告是相同的,只是周围有更多的噪音。

我该如何在Maven的错误消息中获取完整的Javac错误消息?

1个回答

3

经过进一步搜索,似乎这种行为是由Maven编译器插件中的一个错误引起的。这个问题的解决方案解决了我的问题:maven "cannot find symbol" message unhelpful。只需将以下内容添加到您的pom.xml文件以使用最新的compiler插件即可:

<project>
    ...
    <build>
        ....
        <plugins>
            <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>
        </plugins>
    </build>
</project>

你很棒。当前版本的Swagger Codegen(2.1.4)创建了一个带有旧的、不好的值的pom.xml。这使得错误变得明显了。 - Steve Broberg

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接