#java #gradle
#java #gradle
Вопрос:
После долгого поиска я все еще не смог найти никаких официальных документов для этой gradle run
задачи. Я предполагаю, что это потому, что на самом деле это тип задачи JavaExec.
Также кажется, что run
задача доступна только с помощью плагина приложения. В его документах упоминаются некоторые из доступных аргументов, таких как --debug-jvm
и --args
(для передачи аргументов командной строки в основной метод приложения).
Что я на самом деле хотел выяснить, как я могу передавать аргументы JVM в командной строке, т.Е. Эквивалент setting application { applicationDefaultJvmArgs = ".." }
.
Помощь приветствуется!
Комментарии:
1. Проверьте это: baeldung.com/gradle-command-line-arguments
2. Спасибо!
--args="lorem ipsum dolor"
действительно, это то, что я искал.
Ответ №1:
Вы правы, run
задача поступает из плагина приложения, и это JavaExec
задача.
Список всех параметров конфигурации доступен в документации задачи JavaExec
Вы можете настроить параметры в своем (groovy-) файле gradle следующим образом:
tasks.named('run', JavaExec) {
mainClassName = '...MainKt'
applicationDefaultJvmArgs = [ System.getProperty("jvmArgs") ]
classpath = sourceSets.netMain.runtimeClasspath
}
Ответ №2:
Теперь я написал https://blog.jakubholy.net/2020/customizing-gradle-run-task / в котором описывается как настройка run
задачи, так и ее настройка в командной строке:
apply plugin: 'application'
mainClassName = "my.app.Main"
run {
debugOptions {
enabled = true
server = true
suspend = false
}
systemProperty("my.defaultLogLevel", "debug")
environment("OTEL_EXPORTER", "zipkin")
jvmArgs=["-javaagent:aws-opentelemetry-agent-0.9.0.jar"]
}
Как указано в документации к плагину приложения, вы также можете включить отладку с помощью —debug-jvm или указать аргументы с помощью —args=»foo —bar» . И вы можете настроить application {applicationDefaultJvmArgs= []} для применения как к сценариям запуска, так и к сгенерированным сценариям запуска вашего дистрибутива.