Gradle выполнить commandLine с динамическим списком параметров - PullRequest
0 голосов
/ 24 августа 2018

У нас есть приложение, которое можно запустить локально или на удаленном сервере. При локальном запуске необходимо установить прокси, поскольку приложение использует другой сервис в облаке. Это сделано так:

commandLine "java", "-Xmx227m",
        "-Dapplication.name=showcase-rest",
        "-Dserver.port=$applicationPort",
        "-Dspring.profiles.active=$springActiveProfiles",
        "-Didm.realm=develop",
        "-Dhttp.proxyHost=10.xx.xxx.129", "-Dhttp.proxyPort=3xxx",
        "-Dhttps.proxyHost=10.xx.xxx.129", "-Dhttps.proxyPort=3xxx",
        "-Dhttp.nonProxyHosts=localhost|127.0.0.1",
        "-jar", tasks.jar.destinationDir.toString() + "/showcase-rest-SNAPSHOT.jar"

Однако при запуске на соответствующем сервере в облаке нам не нужны настройки прокси:

commandLine "java", "-Xmx227m",
        "-Dapplication.name=showcase-rest",
        "-Dserver.port=$applicationPort",
        "-Dspring.profiles.active=$springActiveProfiles",
        "-Didm.realm=develop",
        "-jar", tasks.jar.destinationDir.toString() + "/showcase-rest-SNAPSHOT.jar"

Как этого достичь?

Я знаю, как предоставлять и анализировать аргументы jvm для gradle; вопрос в том, как я могу «внедрить» эти настройки прокси в commandLine динамически.

Пока я пытался:

    def proxyConfig = ["-Dhttp.proxyHost=10.xx.xxx.129", "-Dhttp.proxyPort=3xxx",
                       "-Dhttps.proxyHost=10.xx.xxx.129", "-Dhttps.proxyPort=3xxx",
                               "-Dhttp.nonProxyHosts=localhost|127.0.0.1"] as List<String>
commandLine "java", "-Xmx227m",
        "-Dapplication.name=showcase-rest",
        "-Dserver.port=$applicationPort",
        "-Dspring.profiles.active=$springActiveProfiles",
        "-Didm.realm=develop",
        proxyConfig,
        "-jar", tasks.jar.destinationDir.toString() + "/showcase-rest-SNAPSHOT.jar"

Но очевидно, что это не работает.

Ответы [ 2 ]

0 голосов
/ 24 августа 2018

Спасибо ToYonos.Мое решение, а не как groovy-ninja, ниже:

def proxyConfig = ["-Dhttp.proxyHost=10.xx.xxx.129",
                   "-Dhttp.proxyPort=3xxx",
                   "-Dhttps.proxyHost=10.xx.xxx.129",
                   "-Dhttps.proxyPort=3xxx",
                   "-Dhttp.nonProxyHosts=localhost|127.0.0.1"]
if (springActiveProfiles == 'cicd') {
    proxyConfig = []
}
println("proxy config: $proxyConfig")
def args = ["java", "-Xmx227m",
            "-Dapplication.name=showcase-rest",
            "-Dserver.port=$applicationPort",
            "-Dspring.profiles.active=$springActiveProfiles",
            "-Didm.realm=develop"]
def jarArg = ["-jar", tasks.jar.destinationDir.toString() + "/showcase-rest-SNAPSHOT.jar"]
args.addAll(proxyConfig)
args.addAll(jarArg)
println("Running with arguments: $args")
commandLine args
0 голосов
/ 24 августа 2018

Попробуйте это:

def params = ["java", "-Xmx227m",
        "-Dapplication.name=showcase-rest",
        "-Dserver.port=$applicationPort",
        "-Dspring.profiles.active=$springActiveProfiles",
        "-Didm.realm=develop",
        "-Dhttp.proxyHost=10.xx.xxx.129", "-Dhttp.proxyPort=3xxx",
        "-Dhttps.proxyHost=10.xx.xxx.129", "-Dhttps.proxyPort=3xxx",
        "-Dhttp.nonProxyHosts=localhost|127.0.0.1",
        "-jar", tasks.jar.destinationDir.toString() + "/showcase-rest-SNAPSHOT.jar"]

def withProxy = true

commandLine (*(params.findAll { withProxy || !it.toLowerCase().contains('proxy') }))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...