Gradle 当然是 Java 相关项目的绝佳构建工具。如果我们的项目中有任务需要执行 Java 应用程序,我们可以使用
JavaExec
任务。当我们需要将 Java 系统属性传递给 Java 应用程序时,我们可以设置
JavaExec
任务的
systemProperties
属性。我们可以为
systemProperties
属性分配一个值,或者使用方法
systemProperties
将属性添加到已分配的现有属性中。现在,如果我们想在运行 Gradle 时从命令行定义系统属性,我们必须将属性传递给任务。因此,我们必须重新配置
JavaExec
任务并将
System.properties
分配给
systemProperties
属性。
在下面的构建脚本中,我们重新配置项目中的所有
JavaExec
任务。我们使用
systemProperties
方法并使用值
System.properties
。这意味着来自命令行的任何系统属性都会传递给
JavaExec
任务。
apply plugin: 'groovy'
apply plugin: 'application'
mainClassName = 'com.mrhaki.sample.Application'
repositories.jcenter()
dependencies {
compile 'org.codehaus.groovy:groovy-all:2.4.4'
}
// The run task added by the application plugin
// is also of type JavaExec.
tasks.withType(JavaExec) {
// Assign all Java system properties from
// the command line to the JavaExec task.
systemProperties System.properties
}
我们编写一个简单的 Groovy 应用程序,它使用 Java 系统属性
app.greeting
将消息打印到控制台:
apply plugin: 'groovy'
apply plugin: 'application'
mainClassName = 'com.mrhaki.sample.Application'
repositories.jcenter()
dependencies {
compile 'org.codehaus.groovy:groovy-all:2.4.4'
}
// The run task added by the application plugin
// is also of type JavaExec.
tasks.withType(JavaExec) {
// Assign all Java system properties from
// the command line to the JavaExec task.
systemProperties System.properties
}
现在,当我们执行
run
任务(类型为
JavaExec
)并在我们的命令中定义 Java 系统属性
app.greeting
时,应用程序将使用它:
$ gradle -Dapp.greeting=Gradle! -q run
Hello Gradle!
用 Gradle 2.7 编写。