我有一个多项目,我需要能够使用 gradle 从特定子项目中运行一个类。我试图简单地设置我的自定义 sourceSets 并运行 JavaExec 类型的任务,但是遇到了一个非常具体的问题。问题是我的自定义源文件夹中有太多Java文件,结果 JavaExec 任务试图创建的类路径(每个Java类的绝对路径)对于 JavaExec 尝试调用的> cmd 命令。
我找到了一种解决方法,建议使用所有 .java 文件创建一个 jar 文件,并将其作为 classpath 传递给我的 JavaExec 任务。这样,命令可以保持简洁。我做了应该执行的任务,但是没有用。
这是我的自定义 sourceSets :
sourceSets {
mySourceSet{
java {
srcDirs {
'projectOne/src/main/java/'
}}}}
这是我的任务,应该创建一个 jar ,但不会:
task launcherJar(type: Jar) {
manifest {
attributes "Class-Path": sourceSets.mySourceSet.java.srcDirs.join(" ")}}
这是我的javaExec任务,应该使用.jar文件:
task task1(type: JavaExec) {
classpath = launcherJar.outputs.files
main = "com.package1.MyClass"
}
问题是- jar 文件为空。
我尝试使用“ 清单”属性进行各种操作,但是似乎没有任何效果。
我需要jar文件包含类路径,以便可以在 JavaExec 中使用它。
先谢谢您。