Gradle:: не удалось найти метод main () для аргументов "при настройке outputDir в sourceSets - PullRequest
0 голосов
/ 20 февраля 2019

Пожалуйста, найдите скрипт ниже, чтобы очистить и построить проект с использованием gradle.

Все работало нормально, пока я не добавил outputDir в sourceSets в блоке java.

При комментировании строки outputDir, очистка и сборка успешны, но файлы классов генерируются в '' 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'.

Пожалуйста, подскажите, что мне не хватает.Мне кажется, что это какая-то основная проблема, но я не могу ее решить.

1 Ответ

0 голосов
/ 20 февраля 2019

См. Эту документацию: https://docs.gradle.org/current/dsl/org.gradle.api.tasks.SourceSetOutput.html

outputDir - это свойство , а не метод , поэтому вы не используете правильный синтаксис для установкизначение свойства: вместо этого используйте следующее:

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

Примечание : вы используете простую кавычку 'в '${projectName}' вместо двойной кавычки ": эта переменная не может работать в качестве вашей переменной projectNameне будет оцениваться.

...