Задача Ant javac, запускающая исполняемый файл вместо классов java - PullRequest
0 голосов
/ 09 июня 2011

Я почти уверен, что не смогу сделать это без написания собственных классов Task, но я все равно решил спросить. Есть ли какое-то магическое свойство или задача муравья, которая работает так же, как <javac>, но запускает мой исполняемый файл $JAVA_HOME/bin/javac вместо запуска кода из классов javac в $JAVA_HOME/lib/tools.jar? Причина, по которой я хотел бы сделать это, заключается в том, что я могу изменить двоичный файл javac, чтобы он всегда компилировался с Xlint, было бы неплохо, чтобы все файлы build.xml делали это тоже без их редактирования. (И некоторые имеют неявные вызовы javac через другие задачи ...) Атрибут компилятора <javac> предназначен для кода класса, он не позволяет просто указать файл для запуска.

Ответы [ 2 ]

1 голос
/ 09 июня 2011

Задача Javac имеет атрибут fork, а также атрибут executable. Объедините их.

Кроме того, вы можете установить compiler=extJavac, хотя я не уверен, что это что-то изменит.

Вот цитата из раздела примеров:

Если вы хотите запустить компилятор javac другого JDK, вы должны сообщить Ant: где найти компилятор и какую версию JDK вы будете использовать, чтобы он Можно выбрать правильные параметры командной строки. В следующем примере выполняется javac JDK 1.1 в новом процессе и использует правильные ключи командной строки даже когда Ant работает на Java VM другой версии:

  <javac srcdir="${src}"
         destdir="${build}"
         fork="yes"
         executable="/opt/java/jdk1.1/bin/javac"
         compiler="javac1.1"
  />
0 голосов
/ 09 июня 2011

Муравей может переопределить существующее, чтобы иметь новое поведение, используя пресет. Определение предустановки создает новое определение на основе текущего определения с некоторыми предустановленными атрибутами или элементами. Это с флагом compilerarg может помочь вам.

...