Gradle:生成文件不应包含包语句
我有一个gradle构建项目,它由buildSrc/build.gradle和项目级build.gradle组成。buildSrc/build.gradle编译一个jar依赖项,该依赖项包含项目级build.gradle需要的类。但是,当项目级build.gradle尝试实例化buildSrc/build.gradle拉入的类的实例时,构建失败。错误是: 无法打开生成文件~/git/project/build.gradle的no_buildscript类缓存-生成文件~/git/project/build.gradle不应包含包语句 特别是,项目级构建需要DIGSauceLabsUpdater类,该类位于buildSrc/build.gradle拉入的bacon测试实用程序中 我已经尝试将bacon测试实用程序包导入到项目级构建中,并在“def dashUpdater”行中从类中删除包名。这给了我同样的构建错误 有人能帮我理解为了访问项目级构建中buildSrc/gradle.build拉入的类,我还需要做什么吗 谢谢, -埃尔兹贝特 这是我的buildSrc/build.gradle文件:Gradle:生成文件不应包含包语句,gradle,build.gradle,gradlew,Gradle,Build.gradle,Gradlew,我有一个gradle构建项目,它由buildSrc/build.gradle和项目级build.gradle组成。buildSrc/build.gradle编译一个jar依赖项,该依赖项包含项目级build.gradle需要的类。但是,当项目级build.gradle尝试实例化buildSrc/build.gradle拉入的类的实例时,构建失败。错误是: 无法打开生成文件~/git/project/build.gradle的no_buildscript类缓存-生成文件~/git/project/
// vim:ft=groovy
apply plugin: 'base'
apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'maven'
apply plugin: 'groovy'
// automated test dependencies
// ---------------------------
dependencies {
def saucerestVersion = "1.0"
compile gradleApi()
// sauce lab's REST client
compile "com.saucelabs.saucerest:saucelabs-saucerest:$saucerestVersion"
// test utilities
// Note: Needed here for DIGSauceLabsUpdater use in main build.gradle
compile "com.drillinginfo.global:bacon-test-utilities:0.+"
}
// artifacts and maven stuff
// -------------------------
repositories {
maven {
url "${project.mavenPublicUrl}/"
}
}
以下是我的项目级build.gradle的相关部分:
// vim:ft=groovy
apply plugin: 'base'
apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'maven'
apply plugin: 'groovy'
// browser driver extensions for acceptance test tasks
ext.drivers = ["firefox", "chrome", "ie"]
// automated test dependencies
// ---------------------------
dependencies {
groovy "org.codehaus.groovy:groovy-all:1.8.6"
def gebVersion = "0.7.2"
def seleniumVersion = "2.31.0"
def lazerycodeVersion = "1.1"
def saucerestVersion = "1.0"
// spock
testCompile "org.codehaus.geb:geb-spock:$gebVersion"
testCompile "org.spockframework:spock-core:0.6-groovy-1.8"
// gradle plugin for test listener code
compile files('buildSrc/src/main/lib/gradle-plugins-1.2.jar')
// test utilities
testCompile "com.drillinginfo.global:bacon-test-utilities:0.+"
// Drivers
drivers.each { driver ->
testCompile "org.seleniumhq.selenium:selenium-$driver-driver:$seleniumVersion"
}
}
// automated acceptance tasks
// --------------------------
// define a TestListener implementation to report test results to Sauce Labs
// THE NEXT LINE IS WHERE THE BUILD CHOKES
def dashUpdater = new com.drillinginfo.global.test.utils.DIGSauceLabsUpdater()
// ensure the tests have access to properties passed in on the command line (-D)
tasks.withType(Test) {
gradle.addListener(dashUpdater)
}
以下是my./gradlew运行任务的堆栈跟踪输出:
FAILURE: Build failed with an exception.
* What went wrong:
Could not open no_buildscript class cache for build file '/home/account/git/project/build.gradle' (/home/account/.gradle/caches/1.2/scripts/build_7hf4r97619snd7in1srbtn16n6/ProjectScript/no_buildscript).
Build file '/home/account/git/project/build.gradle' should not contain a package statement.
* Try:
Run with --info or --debug option to get more log output.
* Exception is:
org.gradle.cache.CacheOpenException: Could not open no_buildscript class cache for build file '/home/ecarmean/git/bacon/build.gradle' (/home/account/.gradle/caches/1.2/scripts/build_7hf4r97619snd7in1srbtn16n6/ProjectScript/no_buildscript).
at org.gradle.cache.internal.DefaultPersistentDirectoryStore.open(DefaultPersistentDirectoryStore.java:54)
at org.gradle.cache.internal.DefaultPersistentDirectoryStore.open(DefaultPersistentDirectoryStore.java:26)
at org.gradle.cache.internal.DefaultCacheFactory$CacheFactoryImpl.doOpenDir(DefaultCacheFactory.java:71)
at org.gradle.cache.internal.DefaultCacheFactory$CacheFactoryImpl.open(DefaultCacheFactory.java:110)
at org.gradle.cache.internal.DefaultCacheRepository$PersistentCacheBuilder.doOpen(DefaultCacheRepository.java:183)
at org.gradle.cache.internal.DefaultCacheRepository$PersistentCacheBuilder.doOpen(DefaultCacheRepository.java:133)
at org.gradle.cache.internal.DefaultCacheRepository$AbstractCacheBuilder.open(DefaultCacheRepository.java:120)
at org.gradle.groovy.scripts.internal.FileCacheBackedScriptClassCompiler.compile(FileCacheBackedScriptClassCompiler.java:51)
at org.gradle.groovy.scripts.internal.ShortCircuitEmptyScriptCompiler.compile(ShortCircuitEmptyScriptCompiler.java:35)
at org.gradle.groovy.scripts.internal.CachingScriptClassCompiler.compile(CachingScriptClassCompiler.java:36)
at org.gradle.groovy.scripts.DefaultScriptCompilerFactory$ScriptCompilerImpl.compile(DefaultScriptCompilerFactory.java:60)
at org.gradle.configuration.DefaultScriptPluginFactory$ScriptPluginImpl.apply(DefaultScriptPluginFactory.java:121)
at org.gradle.configuration.BuildScriptProcessor.evaluate(BuildScriptProcessor.java:38)
at org.gradle.configuration.LifecycleProjectEvaluator.evaluate(LifecycleProjectEvaluator.java:43)
at org.gradle.api.internal.project.AbstractProject.evaluate(AbstractProject.java:463)
at org.gradle.api.internal.project.AbstractProject.evaluate(AbstractProject.java:75)
at org.gradle.configuration.ProjectEvaluationConfigurer.execute(ProjectEvaluationConfigurer.java:23)
at org.gradle.configuration.ProjectEvaluationConfigurer.execute(ProjectEvaluationConfigurer.java:21)
at org.gradle.configuration.DefaultBuildConfigurer$1.execute(DefaultBuildConfigurer.java:38)
at org.gradle.configuration.DefaultBuildConfigurer$1.execute(DefaultBuildConfigurer.java:35)
at org.gradle.api.internal.project.AbstractProject.configure(AbstractProject.java:439)
at org.gradle.api.internal.project.AbstractProject.allprojects(AbstractProject.java:434)
at org.gradle.configuration.DefaultBuildConfigurer.configure(DefaultBuildConfigurer.java:35)
at org.gradle.initialization.DefaultGradleLauncher.doBuildStages(DefaultGradleLauncher.java:142)
at org.gradle.initialization.DefaultGradleLauncher.doBuild(DefaultGradleLauncher.java:113)
at org.gradle.initialization.DefaultGradleLauncher.run(DefaultGradleLauncher.java:81)
at org.gradle.launcher.cli.ExecuteBuildAction.run(ExecuteBuildAction.java:38)
at org.gradle.launcher.exec.InProcessGradleLauncherActionExecuter.execute(InProcessGradleLauncherActionExecuter.java:39)
at org.gradle.launcher.exec.InProcessGradleLauncherActionExecuter.execute(InProcessGradleLauncherActionExecuter.java:25)
at org.gradle.launcher.cli.RunBuildAction.run(RunBuildAction.java:50)
at org.gradle.launcher.cli.ActionAdapter.execute(ActionAdapter.java:30)
at org.gradle.launcher.cli.ActionAdapter.execute(ActionAdapter.java:22)
at org.gradle.launcher.cli.CommandLineActionFactory$ParseAndBuildAction.execute(CommandLineActionFactory.java:200)
at org.gradle.launcher.cli.CommandLineActionFactory$ParseAndBuildAction.execute(CommandLineActionFactory.java:173)
at org.gradle.launcher.cli.CommandLineActionFactory$WithLogging.execute(CommandLineActionFactory.java:169)
at org.gradle.launcher.cli.CommandLineActionFactory$WithLogging.execute(CommandLineActionFactory.java:138)
at org.gradle.launcher.cli.ExceptionReportingAction.execute(ExceptionReportingAction.java:33)
at org.gradle.launcher.cli.ExceptionReportingAction.execute(ExceptionReportingAction.java:22)
at org.gradle.launcher.Main.doAction(Main.java:48)
at org.gradle.launcher.bootstrap.EntryPoint.run(EntryPoint.java:45)
at org.gradle.launcher.Main.main(Main.java:39)
at org.gradle.launcher.bootstrap.ProcessBootstrap.runNoExit(ProcessBootstrap.java:50)
at org.gradle.launcher.bootstrap.ProcessBootstrap.run(ProcessBootstrap.java:32)
at org.gradle.launcher.GradleMain.main(GradleMain.java:26)
at org.gradle.wrapper.BootstrapMainStarter.start(BootstrapMainStarter.java:33)
at org.gradle.wrapper.WrapperExecutor.execute(WrapperExecutor.java:130)
at org.gradle.wrapper.GradleWrapperMain.main(GradleWrapperMain.java:47)
Caused by: java.lang.UnsupportedOperationException: Build file '/home/account/git/project/build.gradle' should not contain a package statement.
at org.gradle.groovy.scripts.internal.DefaultScriptCompilationHandler.compileScript(DefaultScriptCompilationHandler.java:126)
at org.gradle.groovy.scripts.internal.DefaultScriptCompilationHandler.compileToDir(DefaultScriptCompilationHandler.java:67)
at org.gradle.groovy.scripts.internal.FileCacheBackedScriptClassCompiler$CacheInitializer.execute(FileCacheBackedScriptClassCompiler.java:80)
at org.gradle.groovy.scripts.internal.FileCacheBackedScriptClassCompiler$CacheInitializer.execute(FileCacheBackedScriptClassCompiler.java:65)
at org.gradle.cache.internal.DefaultPersistentDirectoryCache.buildCacheDir(DefaultPersistentDirectoryCache.java:100)
at org.gradle.cache.internal.DefaultPersistentDirectoryCache.access$100(DefaultPersistentDirectoryCache.java:36)
at org.gradle.cache.internal.DefaultPersistentDirectoryCache$1$1.run(DefaultPersistentDirectoryCache.java:82)
at org.gradle.cache.internal.DefaultFileLockManager$DefaultFileLock.doWriteAction(DefaultFileLockManager.java:162)
at org.gradle.cache.internal.DefaultFileLockManager$DefaultFileLock.writeFile(DefaultFileLockManager.java:151)
at org.gradle.cache.internal.DefaultPersistentDirectoryCache$1.execute(DefaultPersistentDirectoryCache.java:80)
at org.gradle.cache.internal.DefaultPersistentDirectoryCache$1.execute(DefaultPersistentDirectoryCache.java:70)
at org.gradle.cache.internal.DefaultPersistentDirectoryStore.withExclusiveLock(DefaultPersistentDirectoryStore.java:73)
at org.gradle.cache.internal.DefaultPersistentDirectoryCache.init(DefaultPersistentDirectoryCache.java:70)
at org.gradle.cache.internal.DefaultPersistentDirectoryStore.open(DefaultPersistentDirectoryStore.java:46)
... 46 more
我和一位同事发现了导致我的gradle构建失败的问题,出现了“build.gradle不应包含包语句”错误。包含依赖项的jar文件同时具有.class和.groovy文件。当我们重新编译jar以只包含.class文件时,gradle构建运行时没有错误,并且能够从(麻烦的!)依赖项实例化一个类 我还通过删除buildSrc/build.gradle简化了构建结构。不再需要它,因为该目录中没有生成源。为了引入项目级build.gradle中需要的(麻烦的!)依赖项,我使用了一个buildScript块 彼得·尼德维瑟,谢谢你阅读并回答这个问题 以下是最终构建脚本的相关部分:
// vim:ft=groovy
import com.drillinginfo.global.test.utils.DIGSauceLabsUpdater
apply plugin: 'base'
apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'maven'
apply plugin: 'groovy'
// automated test dependencies
// ---------------------------
dependencies {
groovy "org.codehaus.groovy:groovy-all:1.8.6"
def gebVersion = "0.7.2"
def seleniumVersion = "2.31.0"
def lazerycodeVersion = "1.1"
def saucerestVersion = "1.0"
// spock
testCompile "org.codehaus.geb:geb-spock:$gebVersion"
testCompile "org.spockframework:spock-core:0.6-groovy-1.8"
// test utilities
testCompile "com.drillinginfo.global:bacon-test-utilities:0.+"
// Drivers
drivers.each { driver ->
testCompile "org.seleniumhq.selenium:selenium-$driver-driver:$seleniumVersion"
}
}
buildscript {
repositories {
maven {
url "${project.mavenPublicUrl}/"
}
}
dependencies {
classpath group: 'com.drillinginfo.global', name: 'bacon-test-utilities', version: '0.0.1+17'
}
}
/ automated acceptance tasks
// --------------------------
// define a TestListener implementation to report test results to Sauce Labs
def dashUpdater = new DIGSauceLabsUpdater()
// ensure the tests have access to properties passed in on the command line (-D)
tasks.withType(Test) {
gradle.addListener(dashUpdater)
}
我和一位同事发现了导致我的gradle构建失败的问题,出现了“build.gradle不应包含包语句”错误。包含依赖项的jar文件同时具有.class和.groovy文件。当我们重新编译jar以只包含.class文件时,gradle构建运行时没有错误,并且能够从(麻烦的!)依赖项实例化一个类 我还通过删除buildSrc/build.gradle简化了构建结构。不再需要它,因为该目录中没有生成源。为了引入项目级build.gradle中需要的(麻烦的!)依赖项,我使用了一个buildScript块 彼得·尼德维瑟,谢谢你阅读并回答这个问题 以下是最终构建脚本的相关部分:
// vim:ft=groovy
import com.drillinginfo.global.test.utils.DIGSauceLabsUpdater
apply plugin: 'base'
apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'maven'
apply plugin: 'groovy'
// automated test dependencies
// ---------------------------
dependencies {
groovy "org.codehaus.groovy:groovy-all:1.8.6"
def gebVersion = "0.7.2"
def seleniumVersion = "2.31.0"
def lazerycodeVersion = "1.1"
def saucerestVersion = "1.0"
// spock
testCompile "org.codehaus.geb:geb-spock:$gebVersion"
testCompile "org.spockframework:spock-core:0.6-groovy-1.8"
// test utilities
testCompile "com.drillinginfo.global:bacon-test-utilities:0.+"
// Drivers
drivers.each { driver ->
testCompile "org.seleniumhq.selenium:selenium-$driver-driver:$seleniumVersion"
}
}
buildscript {
repositories {
maven {
url "${project.mavenPublicUrl}/"
}
}
dependencies {
classpath group: 'com.drillinginfo.global', name: 'bacon-test-utilities', version: '0.0.1+17'
}
}
/ automated acceptance tasks
// --------------------------
// define a TestListener implementation to report test results to Sauce Labs
def dashUpdater = new DIGSauceLabsUpdater()
// ensure the tests have access to properties passed in on the command line (-D)
tasks.withType(Test) {
gradle.addListener(dashUpdater)
}
我在
build.gradle
中遇到了以下问题:
buildscript {
dependencies {
classpath fileTree(
dir: "some/directory",
include: '**/*.jar')
}
}
some/directory
有源JAR,因此修复程序是:
buildscript {
dependencies {
classpath fileTree(
dir: "some/directory",
include: '**/*.jar',
exclude: '**/-sources.jar')
}
}
我在
build.gradle
中遇到了以下问题:
buildscript {
dependencies {
classpath fileTree(
dir: "some/directory",
include: '**/*.jar')
}
}
some/directory
有源JAR,因此修复程序是:
buildscript {
dependencies {
classpath fileTree(
dir: "some/directory",
include: '**/*.jar',
exclude: '**/-sources.jar')
}
}
如果遇到此错误:
Build file '...\build.gradle' should not contain a package statement.
您应该检查上面提到的路径,并删除
build.gradle
文件第一行中的package语句。如果遇到此错误,请提供帮助。:
Build file '...\build.gradle' should not contain a package statement.
您应该检查上面提到的路径并删除
build.gradle
文件第一行中的package语句。希望您能提供帮助。gradle抱怨的是一个package语句(例如package foo.bar
)。显然,您的构建脚本中有一个,这是不允许的。Gradle抱怨的“包语句”是行:Gradle抱怨的包语句是行:def dashUpdater=new com.drillinginfo.global.test.utils.DIGSauceLabsUpdater()。我不明白为什么它被解释为一个包而不是一个完全限定的类名。对不起,这篇文章太离谱了!我在编辑原始评论时被叫去参加一个会议。这不是一揽子声明。也许堆栈跟踪(-s
)有原因?这就是我感到困惑的原因。如果我删除那行代码,错误就会消失。问题可能是因为我需要在buildSrc/build.gradle和项目级build.gradle中编译相同的依赖项吗?gradle抱怨的是一个包语句(例如,package foo.bar
)。显然,您的构建脚本中有一个,这是不允许的。Gradle抱怨的“包语句”是行:Gradle抱怨的包语句是行:def dashUpdater=new com.drillinginfo.global.test.utils.DIGSauceLabsUpdater()。我不明白为什么它被解释为一个包而不是一个完全限定的类名。对不起,这篇文章太离谱了!我在编辑原始评论时被叫去参加一个会议。这不是一揽子声明。也许堆栈跟踪(-s
)有原因?这就是我感到困惑的原因。如果我删除那行代码,错误就会消失。问题可能是因为我需要在buildSrc/build.gradle和项目级build.gradle中编译相同的依赖项?