Я искал вверх и вниз и не нашел решения для следующей проблемы.
У меня есть приложение LibGDX, которое связывается с сервером через REST-подобный API. Поскольку я хочу развернуть его, мне нужен способ указать адрес хоста API-сервера с помощью либо параметра сборки, либо аргумента / параметра времени выполнения (поскольку я хочу использовать localhost в качестве API-сервера при разработке). Мне в основном это нужно для HTML и рабочего стола. Если это работает на других платформах, это будет оценено. Я пробовал несколько разных вещей:
добавление флага -DpropertyName=value
к развертываемому контейнеру Tomcat и использование System.getProperty("propertyName")
в коде, очевидно, не работает, потому что в тот момент, когда код в Tomcat он был полностью обработан GWT. Я даже получил сообщение об ошибке GWT: Property 'propertyName' is not defined.
, которое привело меня к:
добавлению определения свойства к GdxDefinition.gwt.xml
, например:
<define-property name="propertyName" values="value,otherValue"/>
<set-property name="propertyName" value="value"/>
remove ошибка и успешно компилирует приложение. System.getProperty("propertyName")
получает значение value
, а GWT компилирует только следующее с веткой value
. (Я не нашел упоминания о втором URL-адресе в скомпилированном коде в каталоге dist, а только о первом URL-адресе)
switch (System.getProperty("propertyName")) {
case "value":
HOST_ADDRESS = "https://my.domain.me/api";
break;
case "otherValue":
HOST_ADDRESS = "http://localhost:8080/api";
break;
default:
throw new IllegalStateException("Unexpected value: " + System.getProperty("propertyName"));
}
Поэтому я предполагаю, что мне нужно указать значение свойства в качестве аргумента компилятора. Для GWT это будет -setProperty propertyName=otherValue
. Но как я могу пропустить это, когда я создаю веб-приложение с Gradle ./gradlew html:dist
. -DpropertyName=otherValue
не работает.
Есть ли у вас какие-либо идеи, как этот подход работает, или у вас есть другой метод? В Maven есть какой-то метод ${propertyName}
для установки свойств Maven в файлах конфигурации. Это возможно и в Gradle?