如何在Java代码中访问gradle参数

我有一些java的经验,我是gradle的新手,我加入了一个项目,我必须修改gradle文件。

这是我的build.gradle文件

 apply plugin: 'java' apply plugin: 'idea' sourceCompatibility = 1.5 version = '1.0' dependencies { testCompile 'org.testng:testng:6.9.10', 'org.seleniumhq.selenium:selenium-java:2.53.0' } test { useTestNG() testLogging.showStandardStreams = true } 

然后我使用mac终端./build test的以下命令运行我的测试套件

我想传递一个名为environment的参数。根据这个参数的值,我需要配置我的url并为该环境运行测试。 像./build test environment=dev./build test environment=qa

在我的java代码中,我会做这样的事情

 if(env == 'dev') { url = "my dev url"; user = "my dev user name" } else if(env == 'qa') { url = "my qa url"; user = "my qa user name" } 

如何在终端中传递此参数? 我在代码中如何使用此参数的一小段内容将会有很大的帮助(我的java代码没有main方法)。

注意:我已经使用了属性文件并实现了此行为,但我的团队不希望在代码中进行更改以设置环境。 所以我不得不放弃这些改变。

从命令行到gradle,您可以使用系统属性或项目属性。 它将是:

 ./gradlew test -Denv=dev 

要么

 ./gradle test -Penv=dev 

现在可以在build.gradle读取上面的属性,您还需要将它们传递给测试,必须使用系统属性来完成:

 test { systemProperty 'env', System.properties['env'] ?: 'dev' } 

对于来自命令行的系统属性或:

 test { systemProperty 'env', project.hasProperty('env') ? project.env : 'dev' } 

在测试类中使用just:

 System.getProperty("env") 

获得你需要的价值。