如何从命令行将参数传递给gradle
问题描述:
我尝试从命令行向gradle传递参数。如何从命令行将参数传递给gradle
我的build.gradle是:
task execute(type:JavaExec) {
main = mainClass
classpath = sourceSets.main.output
}
当我做:
gradle -PmainClass=Hello execute
我得到这个:
FAILURE: Build failed with an exception.
* Where:
Build file '/home/example2/build.gradle' line: 7
* What went wrong:
A problem occurred evaluating root project 'example2'.
> Could not find property 'sourceSets' on task ':execute'.
我的问题是,我应该提供主?任何java文件包的名称?任何特定的路径?实际上应该是什么sourceSet?
答
你最小的build.gradle文件应该是这样的:
apply plugin: 'java'
task execute(type:JavaExec) {
main = mainClass
classpath = sourceSets.main.output
}
而你需要放在src /主/ JAVA/Hello.java这样的java类:
public class Hello {
public static void main(String[] a) {}
}
BTW我下面是这个:http://*.com/questions/21358466/gradle-to-execute-java-class-without-modifying-build-gradle如果它的工作原因为什么不适合我? – user3409650 2014-09-10 09:06:18
如果您的项目结构遵循Gradle标准,那么您不需要定义sourceSet {... main {..} test {..} .. blahTest {..} ..}部分。如果您的项目没有遵循默认结构,那么您必须在build.gradle文件中定义sourceSets部分。你可以在下面的链接中看到一个build.gradle文件来获得一个想法,你还必须应用插件:'java'或者其他:http://*.com/questions/18879250/jacoco-unit-and-integration- test-coverage-individual-and-overall – 2014-09-11 15:19:40
它为他工作的一个原因可能是,如果他的结构匹配sourceSets的默认Gradle项目结构(在这种情况下,您不需要为main,test等定义sourceSets部分)。其他可以是,如果sourceSet节在全局Gradle级别文件中定义,即在$ GRADLE_HOME/init.d/common.gradle文件中的任何.gradle文件,则不需要在任何项目的build.gradle中指定sourceSet节它使用Gradle。 - 或者他只是没有在他的文章中展示这件作品(假设他的帖子中他的问题的范围并不重要)。 – 2014-09-11 15:23:28