【问题标题】:Gradle : :Could not find method main() for arguments" on setting outputDir in sourceSetsGradle : : 在 sourceSets 中设置 outputDir 时找不到方法 main()
【发布时间】:2019-02-20 05:19:45
【问题描述】:

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

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

在注释掉 outputDir 行时,gradle clean 和 build 是成功的,但是类文件是在我不想要的 ''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'.

请建议我缺少什么。对我来说似乎是一些基本问题,但无法破解。

【问题讨论】:

    标签: java gradle build.gradle gradle-plugin


    【解决方案1】:

    请参阅此文档:https://docs.gradle.org/current/dsl/org.gradle.api.tasks.SourceSetOutput.html

    outputDirproperty,而不是 method,因此您没有使用正确的语法来设置属性值:请改用以下内容:

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

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

    【讨论】:

    • 进行了@M.Ricciuti 建议的更改(编辑了现有代码)。这次收到错误为:No such property: outputDir for class: org.gradle.api.internal.file.DefaultSourceDirectorySet
    • 您似乎使用的是旧版本的 Gradle:此属性 outputDir 自 4.x 版起可用
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-27
    • 2015-06-02
    • 1970-01-01
    • 1970-01-01
    • 2021-10-24
    • 1970-01-01
    相关资源
    最近更新 更多