Как скомпилировать классы Xtend + Java с помощью Gradle

Я пытаюсь перенести проект, содержащий классы Java и Xtend, в Gradle. К сожалению, мне не удалось найти возможности автоматической компиляции части Xtend.

Я хорошо знаком с подключаемыми модулями Xtext Gradle (http://xtext.github.io/xtext-gradle-plugin/), который, насколько мне известно, подключается к этапу компиляции подключаемого модуля Java.

Однако задача CompileJava не может быть завершена в первую очередь из-за различных ошибок ссылок, вызванных отсутствием классов Xtend (которые еще не созданы...). В общем, подходящий рабочий процесс должен быть

  1. Скомпилируйте Java и игнорируйте ошибки
  2. Скомпилировать расширение
  3. Скомпилируйте Java снова

Чтобы заставить его работать, мне нужен способ компилировать Java и игнорировать ошибки без сбоя задачи, для которой я не нашел решения. И затем мне нужно повторно выполнить компиляцию, которая, я думаю, может потребовать какого-то другого трюка, чтобы обойти механизм проверки обновлений Gradle. Или я полностью ошибаюсь?


person ChrisR    schedule 23.02.2017    source источник


Ответы (1)


Правильная последовательность должна заключаться в том, чтобы сначала сгенерировать исходники Xtend, а затем все скомпилировать. Просто добавьте плагин и добавьте новые наборы источников следующим образом.

plugins {
  id "org.xtext.xtend" version "1.0.0"
}

apply plugin: 'org.xtext.xtend'

sourceSets {
  main.xtendOutputDir = 'xtend-gen'
  test.xtendOutputDir = 'test/xtend-gen'
}

сборка должна работать после этого.

person Martin Linha    schedule 23.02.2017
comment
вы должны использовать org.xtext.xtend версии 1.0.17 - person Christian Dietrich; 23.02.2017
comment
Отлично, сработало (кроме опечатки, это apply plugin: 'org.xtext.xtend'). Я не знаю, почему он не работал в первую очередь, но все равно спасибо! - person ChrisR; 24.02.2017
comment
Исправлено в ответе. - person Martin Linha; 26.02.2017