Java 在类中读取命令行gradle vars

Java 在类中读取命令行gradle vars,java,gradle,command-line,environment-variables,args,Java,Gradle,Command Line,Environment Variables,Args,在我的build.gradle中,我有一个任务: run { dependsOn ':jar' args = [ 'run', project.mainVerticleName, '-cluster', "-launcher-class=$mainClassName", '-Denvironment=development' ] } 我想指定命令行参数并在类中读取它们 我试过: .\gradlew.bat run -Dhttpport=8825 -Phttpport=8825 但我班

在我的
build.gradle
中,我有一个任务:

run {
  dependsOn ':jar'
  args = [ 'run', project.mainVerticleName, '-cluster', "-launcher-class=$mainClassName", '-Denvironment=development' ]
}
我想指定命令行参数并在类中读取它们

我试过:

.\gradlew.bat run -Dhttpport=8825 -Phttpport=8825
但我班上的台词是:

log.info "port = ${System.getProperty( 'httpport' )}"
log.info "port = ${System.getenv( 'httpport' )}"
两种情况下的日志
null
s

我错过了什么?

这个:

.\gradlew.bat run -Dhttpport=8825
您正在将系统属性传递给gradle本身,而不是它将启动的进程。要使其以这种方式工作,您需要按如下方式配置
运行

run {
  dependsOn ':jar'
  args = [ 'run', project.mainVerticleName, '-cluster', "-launcher-class=$mainClassName", '-Denvironment=development' ]
  systemProperties System.properties
}
以及:

您还可以使用项目属性(
-p
)配置系统属性,以便:

然后:

.\gradlew.bat run -Phttpport=8825
run {
  dependsOn ':jar'
  args = [ 'run', project.mainVerticleName, '-cluster', "-launcher-class=$mainClassName", '-Denvironment=development' ]
  systemProperties [httpport:project.httpport]
}
.\gradlew.bat run -Phttpport=8825