Ant построено на InteliiJ Community Edition, нет ошибок компилятора
У меня есть существующий проект, который я хочу построить в IntelliJ Community Edition 11.1.4, работающем на Ubuntu 12.04.1 LTS
В окне Ant Build я добавил проект build.xml
, нажав кнопку + в верхнем левом углу окна и перейдя к файлу. Задачи Ant, связанные с файлом сборки, перечислены, и я нажимаю зеленую кнопку воспроизведения, чтобы запустить конструкцию Ant, которая начинается, как ожидалось.
Я ожидал увидеть ошибки компилятора, и IntelliJ CE представит эти ошибки компилятора и позвольте мне перейти к (повреждающему) источнику, дважды щелкнув по ошибкам в окне "Сообщения".
Вместо этого в окне сообщений отображается следующая ошибка, которая при двойном щелчке меня приводит к задаче javac
Ant в файле build.xml
.
build.xml:389: Compile failed; see the compiler error output for details.
Это отличный совет, и я очень хочу следовать ему, но я не могу, потому что ошибка компилятора не отображается нигде в окне Сообщения. Следующее и предыдущее сообщение не переходят к фактической ошибке компилятора.
Я хочу знать, как видеть сообщения об ошибках компилятора в IntelliJ, запустив конструкцию Ant.
Я попытался добавить флаг -v в поле командной строки Ant: в свойствах выполнения. Это не имело никакого отношения к поведению.
Затем я попробовал сортировку с Ant 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"/>
Ответы
Ответ 1
IDEA просто печатает Ant вывод. Попробуйте переключить вывод из древовидного представления на вид обычного текста, используя соответствующую кнопку слева от панели сообщений:
![Plain Text View]()
Если вывод содержит ошибки, вы можете увидеть их там.
Кроме того, гораздо быстрее и проще использовать IDEA при условии инкрементной компиляции (Build
| Make
).
Ответ 2
При использовании простого (не дерева) вывода для ant 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);
}
`` `
И теперь у меня есть интерактивные ссылки в режиме вывода "обычного текста" инструмента ant.
Обратите внимание, что "режим дерева" показывает строку и столбцы правильно - я использовал IDEA 13 CE.
Было бы неплохо, если бы кто-нибудь создал запрос на загрузку Intellij в отношении этой проблемы.