Как изменить переменные кода с помощью аргументов командной строки Gradle - PullRequest
0 голосов
/ 20 октября 2019

Мы учащиеся в старшей школе по робототехнике. Нам нужно создать робота, а затем собрать еще одну «копию» того же робота (поэтому у нас есть два идентичных робота). Тем не менее, есть некоторые различия между роботами. Например, коэффициенты трения их колес немного отличаются.

У нас есть класс Java, содержащий константы первого робота, и другой класс, содержащий константы второго робота. Весь другой код идентичен для обоих роботов. У нас есть логический флаг, который указывает, какой набор констант мы хотим использовать сейчас (для первого или второго робота). В настоящее время нам необходимо изменить этот флаг вручную в коде, каждый раз, когда мы хотим развернуть код на одном из роботов.

Мы пишем наш код на Java 12 и собираем его с помощью Gradle 5.1.1. Есть ли способ использовать аргументы командной строки с Gradle, чтобы изменить рассматриваемый флаг? Скажем, где-то в коде у нас есть этот флаг с именем isFirstRobotUsed:

public static final boolean isFirstRobotUsed = true;

Есть ли возможность создать код, подобный этому: .\gradlew build first или .\gradlew build second, который изменит isFirstRobotUsed внутрикод?

Большое спасибо!

1 Ответ

0 голосов
/ 20 октября 2019

ваша основная функция:

public static void main(String[] args)  {
    System.out.println(args);
    boolean firstRobotUsed = Boolean.valueOf(args[0]);
    ...

}

ваш build.gradle

run {
    if ( project.hasProperty("isFirstRobotUsed") ) {
        args Eval.me(isFirstRobotUsed)
    }
}

приглашение командной строки:

gradle run  -PisFirstRobotUsed="['true']"

В качестве альтернативы используйте системные аргументы -D JVM(как в этой ссылке: https://www.lesscoder.com/java/how-to-pass-arguments-to-gradle-run/), и вы можете прочитать системные свойства, используя System.getProperty ().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...