Создание программы, которая будет выполняться до и после компиляции в Eclipse

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

Программа работает, единственное, чего мне не хватает, так это добавить ее в процесс сборки. Спасибо всем помощникам!


person Mashiah    schedule 15.01.2012    source источник


Ответы (2)


Не используйте Eclipse для создания версии выпуска вашего приложения. Используйте Ant, Maven или любой другой инструмент сборки, который гораздо более гибок, чем Eclipse, не требует графического интерфейса пользователя, может быть создан в сценарии и использоваться сервером непрерывной интеграции.

Все эти инструменты можно легко использовать для включения задач до и после компиляции в процесс сборки.

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

if (TestUtil.FOR_TEST) {
}

Тогда у вас будет только одно место для изменения в коде, чтобы весь тестовый код был удален из скомпилированной версии. Для этого не нужна сложная программа на Java.

Или вы можете оставить весь тестовый код в выпущенной версии и активировать его при тестировании, например, с помощью системного свойства. Это даже не потребует какой-либо фазы прекомпиляции/посткомпиляции и, вероятно, будет иметь незначительную стоимость.

person JB Nizet    schedule 15.01.2012
comment
Но будет ли он компилировать приведенный выше код? Я знаю, что в компиляторе C/C++ некоторые вещи игнорируются компилятором, но я не уверен насчет Java. У меня есть класс, который добавляет журналы в код, и он выглядит так: Log.l(stuff); и я хочу, чтобы в производстве не было вызовов, поэтому вопрос в том, предотвратит ли добавление этого в класс Log некоторые избыточные вычисления, когда пользователи будут использовать мою программу? - это связано с Android, поэтому я хочу сделать его максимально простым для устройства. Еще раз спасибо! - person Mashiah; 21.02.2012
comment
Если TestUtil.FOR_TEST — логическая константа, оценивающая значение false, то код в блоке if, как я уже сказал, будет удален из скомпилированного класса. Он должен быть синтаксически правильным и компилироваться, но компилятор не будет включать блок if в байтовый код. - person JB Nizet; 21.02.2012

В Eclipse щелкните проект правой кнопкой мыши, выберите «Построители свойств» и нажмите «Создать». Вы можете добавить сценарий Ant или командную строку, которую Eclipse будет запускать при сборке проекта. Вы также можете управлять порядком строителей в этом же диалоге.

Однако я согласен с JB Nizet, что использование Ant или Maven для создания вашего проекта дает много преимуществ.

person Eli Acherkan    schedule 15.01.2012