java - Gradle::在sourceSets中设置outputDir时找不到参数main()作为参数

标签 java gradle build.gradle gradle-plugin

请在下面找到脚本以使用gradle清理和构建项目。

在我将outputDir添加到java块中的sourceSets之前,一切工作正常。

在注释outputDir行时,gradle清理和构建成功,但是类文件在我不想要的“build / classes // main”中生成。我想要将类放在目录“build / classes //”中,而不是创建主文件夹并将类文件放在其中。

apply plugin: 'java'

//Declarations
def projectName="SomeProject"
def projectDir="build//classes"

sourceSets {
   main {
      java {
         srcDir 'src'
         outputDir = file("${projectDir}")
        }
      }
   }


dependencies { 
    compile fileTree(include: ['*.jar'],dir: 'lib')
}


jar{
    manifest {
        attributes 'Main-Class': 'Foo'  
        attributes 'Class-Path': 'lib/com.jcraft.jsch_0.1.31.jar lib/commons-io-2.6.jar lib/commons-net-3.6.jar lib/javax.mail.jar lib/jsch-0.1.54.jar lib/json-simple-1.1.1.jar lib/jxl-2.6.jar lib/ojdbc8.jar'
    }
    baseName = '${projectName}'
}

还尝试了outputdir 'build//classes/,但发生了与以下相同的错误
Could not find method main() for arguments [build_3eivce3rhjp4go01pnr2m3vvmq$_run_closure1_closure6@87800a] on root project 'SomeProject'.

请提出我想念的东西。对我来说似乎是一些基本问题,但无法破解。

最佳答案

请参阅此文档:https://docs.gradle.org/current/dsl/org.gradle.api.tasks.SourceSetOutput.html
outputDir是属性,而不是方法,因此您没有使用正确的语法来设置属性值:请改用以下内容:

sourceSets {
    main {
        java {
            srcDir 'src'
            outputDir = file("${projectName}")
        }
    }
}

注意:您在'${projectName}'中使用简单的引号',而不是double
quote“:这不能工作,因为您的变量projectName将不会被评估。

关于java - Gradle::在sourceSets中设置outputDir时找不到参数main()作为参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54779313/

相关文章:

c++11 - Android NDK 链接器错误:错误:未定义对 std::basic_string 的引用

java - 从 URL 绘制图像

java - 如何在 android 中使用 UnboundID LDAP?

licensing - 是否有 Gradle 许可证插件或处理依赖项许可证的最佳方法是什么?

java - 基于 Jenkins 的 Gradle 构建失败

android - "This app contains code that attempts to bypass android' 安全保护的原因"

gradle - 编译具有不同Java源兼容性的项目

java - 工厂模式与工厂方法模式

Java将字节数组索引范围重建为新的字节数组

Gradle fileTree 排除某些目录以外的所有目录