如何在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")
获得你需要的价值。