Как использовать параметры командной строки в LibGDX - PullRequest
0 голосов
/ 12 марта 2020

Я искал вверх и вниз и не нашел решения для следующей проблемы.

У меня есть приложение 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?

...