Я разрабатываю приложение (Groovy), которое я создаю через Gradle (на сервере непрерывной интеграции). Это приложение должно быть скомпилировано в две версии: одна сборка разработки (включая некоторые функции, которые я только хочу включить для себя), и одну публичную сборку (которая не включала бы или не отключала бы эти «функции разработки»).Установка «жестко закодированного» флага в источниках во время процесса сборки
Одним из решений этого было бы иметь что-то вроде глобального флага непосредственно в главном классе приложения, что-то вроде static final boolean PUBLIC_RELEASE
. Затем в моем коде я мог проверить этот флаг и включить или отключить определенную функцию.
Теперь в моем скрипте сборки Gradle я мог проверить переменную среды (установленную сервером непрерывной интеграции). Если эта переменная установлена, то я могу установить (то есть изменить) текущее значение флага либо true
, либо false
до того, как источники будут скомпилированы.
Я уверен, что подход будет работать. Тем не менее, не всегда правильно изменять сами источники во время процесса сборки. С другой стороны, я бы предположил, что это стандартная задача для многих программных проектов.
Есть ли «лучшая практика» для решения этого требования?
Ну, я не хочу, чтобы пользователи могли включать эти скрытые функции. Таким образом, варианты 1 и 3 не являются решением моего требования. – Matthias
Вот что я подумал. Таким образом, кажется, что вы можете использовать фильтрацию исходного кода. – Opal
@ Matthias, если на вопрос ответьте, пожалуйста, примите ответ. – Opal