在InteliiJ社区版Ant构建出没有编译器错误(Ant build on InteliiJ Co

2019-07-03 19:37发布

我有我想打造在Ubuntu 12.04.1 LTS的的IntelliJ社区版11.1.4上运行的现有项目

在Ant构建窗口,我增加了项目的build.xml通过点击+按钮,在窗口的左上角并导航到该文件。 与构建文件关联的Ant任务列出,我点击绿色的播放按钮,运行Ant构建其开始如预期。

我期待看到编译器错误,并已的IntelliJ CE介绍这些编译器错误,让我跳转到(违规)来源具有双重点击在消息窗口中的错误。

相反,消息窗口显示以下错误,当我双击它带我到javac蚂蚁任务中build.xml文件。

build.xml:389: Compile failed; see the compiler error output for details.

这是很好的建议,我非常想追随它,但我不能,因为没有任何地方在消息窗口中显示的编译错误。 下一步,上一封邮件不浏览到一个实际的编译器错误。

我想知道如何才能够看到的IntelliJ的编译器错误消息已经运行Ant构建。

我尝试添加-v标志蚂蚁命令行:场执行属性。 这使得该行为没有什么区别。

然后,我尝试从下降1.8蚂蚁分级到Ant 1.7。 这个时候我确实看到了行为的改变。 构建不运行在所有和我得到以下错误https://gist.github.com/4073149在终端。

javac Ant任务看起来是这样的。

<target name="compile-only" depends="">
    <stopwatch name="Compilation"/>
<javac destdir="${build.classes.dir}" debug="on" deprecation="off" 
       classpathref="base.path" excludes="/filtering/**/**">
    <src path="${src.dir}"/>
    <src path="${build.autogen.dir}"/>
</javac>
<!-- Copy all resource files to the output dir -->
<copy todir="${build.classes.dir}">
    <fileset dir="${src.dir}">
        <include name="**/*.properties"/>
        <include name="**/*.gif"/>
        <include name="**/*.png"/>
        <include name="**/*.jpg"/>
        <include name="**/*.svg"/>
        <include name="**/*.jpeg"/>
        <exclude name="**/.svn"/>
    </fileset>
</copy>
<stopwatch name="Compilation" action="total"/>

Answer 1:

IDEA只是打印Ant的输出。 尝试切换从树视图使用上的消息面板左侧的相应按钮纯文本视图的输出:

如果输出包含错误,你应该能够看到他们在那里。

此外,它的速度更快和更容易使用IDEA提供渐进式编译( Build | Make )。



Answer 2:

当使用普通的(不是树)输出,以蚂蚁的IntelliJ使用file (line,col): error msg的javac的错误格式。 但错误查看解析器既懂file:line: error msg格式。

你可以在PlainTextView类从antIntegration.jar调整它http://grepcode.com/file/repository.grepcode.com/java/ext/com.jetbrains/intellij-idea/10.0/com/intellij/lang/ant/config /execution/PlainTextView.java#98

我只是改变addJavacMessage方法如下并重新编译的类```的java

 public void addJavacMessage(AntMessage message, String url) {
    final VirtualFile file = message.getFile();
    if (message.getLine() > 0) {
      final StringBuilder builder = StringBuilderSpinAllocator.alloc();
      try {

        if (file != null) {
          ApplicationManager.getApplication().runReadAction(new Runnable() {
            public void run() {
              String presentableUrl = file.getPresentableUrl();
              builder.append(presentableUrl);
//              builder.append(' ');
            }
          });
        }
        else if (url != null) {
          builder.append(url);
//          builder.append(' ');
        }
//        builder.append('(');
        builder.append(':');
        builder.append(message.getLine());
        builder.append(':');
        builder.append(' ');
//        builder.append(message.getColumn());
//        builder.append(")");
        print(builder.toString(), ProcessOutputTypes.STDOUT);
      }
      finally {
        StringBuilderSpinAllocator.dispose(builder);
      }
    }
    print(message.getText(), ProcessOutputTypes.STDOUT);
  }

  public void addException(AntMessage exception, boolean showFullTrace) {
    String text = exception.getText();
    showFullTrace = false;
    if (!showFullTrace) {
      int index = text.indexOf("\r\n");
      if (index != -1) {
        text = text.substring(0, index) + "\n";
      }
    }
    print(text, ProcessOutputTypes.STDOUT);
  }

```

现在我有蚂蚁工具的“纯文本”输出模式,可点击的链接。 请注意,“树模式”显示行和列的正确 - 我用IDEA 13 CE。

这将是很好,如果有人来创建的IntelliJ对这个问题拉请求。



Answer 3:

蚂蚁正确的用法中的IntelliJ:

javac includeantruntime="false" srcdir="${src.dir}" fork="yes" executable="D:/jdk1.7/bin/javac"
      destdir="${classes.dir}" includes="**/*.java" source="7" classpathref="library.classpath" ...

最重要的:

executable="D:/jdk1.7/bin/javac"


文章来源: Ant build on InteliiJ Community Edition no compiler errors shown