gradle - 添加项目依赖后出错

标签 gradle

我使用 Gradle 构建多个项目,布局如下:

ares/build.gradle
ares/settings.gradle
ares/ares-gui/build.gradle
ares/ares-persistence/build.gradle
ares/ares-entities/build.gradle
ares/ares-persistence-config/build.gradle

所有项目都应用了 java 或 scala gradle 插件。

在项目 ares-gui 我添加了两个项目依赖项:

dependencies {
    ...
    myConfiguration project(':ares-entities')
    myConfiguration project(':ares-persistence')
    ...
}

当我运行 gradle eclipse 时,我收到此错误:
A problem occurred evaluating project ':ares-gui'.
> Could not resolve all dependencies for configuration ':ares-gui:runtime'.
   > Module version group:ares, module:ares-gui, version:1.0.0.SNAPSHOT, configuration:runtime declares a dependency on configuration 'default' which is not declared in the module descriptor for group:ares, module:ares-persistence, version:1.0.0.SNAPSHOT

有趣的是,当我只留下一个依赖项(到 ares-entities )时,一切都很好。

知道为什么会这样吗?

编辑:这实际上很有趣:当我将 ares-persistence 的名称更改为 ares-bpersistence (按字典顺序在 ares-gui 之前)时,问题就消失了!一个错误?

EDIT2:这是有关该问题的更多信息:

Gradle 版本:
------------------------------------------------------------
Gradle 1.0-milestone-9
------------------------------------------------------------

Gradle build time: wtorek, 13 marzec 2012 16:10:09 UTC
Groovy: 1.8.6
Ant: Apache Ant(TM) version 1.8.2 compiled on December 20 2010
Ivy: 2.2.0
JVM: 1.6.0_26 (Sun Microsystems Inc. 20.1-b02)
OS: Linux 2.6.38-13-generic amd64

堆栈跟踪:
org.gradle.api.GradleScriptException: A problem occurred evaluating project ':ares-gui'.
    at org.gradle.groovy.scripts.internal.DefaultScriptRunnerFactory$ScriptRunnerImpl.run(DefaultScriptRunnerFactory.java:54)
    at org.gradle.configuration.DefaultScriptPluginFactory$ScriptPluginImpl.apply(DefaultScriptPluginFactory.java:127)
    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:462)
    at org.gradle.api.internal.project.AbstractProject.evaluate(AbstractProject.java:74)
    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:438)
    at org.gradle.api.internal.project.AbstractProject.allprojects(AbstractProject.java:433)
    at org.gradle.configuration.DefaultBuildConfigurer.configure(DefaultBuildConfigurer.java:35)
    at org.gradle.initialization.DefaultGradleLauncher.doBuildStages(DefaultGradleLauncher.java:139)
    at org.gradle.initialization.DefaultGradleLauncher.doBuild(DefaultGradleLauncher.java:110)
    at org.gradle.initialization.DefaultGradleLauncher.run(DefaultGradleLauncher.java:78)
    at org.gradle.launcher.cli.ExecuteBuildAction.run(ExecuteBuildAction.java:45)
    at org.gradle.launcher.daemon.protocol.Build.run(Build.java:67)
    at org.gradle.launcher.daemon.protocol.Build.run(Build.java:63)
    at org.gradle.launcher.daemon.server.exec.ExecuteBuild.doBuild(ExecuteBuild.java:45)
    at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:34)
    at org.gradle.launcher.daemon.server.exec.DaemonCommandExecution.proceed(DaemonCommandExecution.java:122)
    at org.gradle.launcher.daemon.server.exec.WatchForDisconnection.execute(WatchForDisconnection.java:45)
    at org.gradle.launcher.daemon.server.exec.DaemonCommandExecution.proceed(DaemonCommandExecution.java:122)
    at org.gradle.launcher.daemon.server.exec.ResetDeprecationLogger.execute(ResetDeprecationLogger.java:24)
    at org.gradle.launcher.daemon.server.exec.DaemonCommandExecution.proceed(DaemonCommandExecution.java:122)
    at org.gradle.launcher.daemon.server.exec.ReturnResult.execute(ReturnResult.java:34)
    at org.gradle.launcher.daemon.server.exec.DaemonCommandExecution.proceed(DaemonCommandExecution.java:122)
    at org.gradle.launcher.daemon.server.exec.ForwardClientInput$4.call(ForwardClientInput.java:116)
    at org.gradle.launcher.daemon.server.exec.ForwardClientInput$4.call(ForwardClientInput.java:114)
    at org.gradle.util.Swapper.swap(Swapper.java:38)
    at org.gradle.launcher.daemon.server.exec.ForwardClientInput.execute(ForwardClientInput.java:114)
    at org.gradle.launcher.daemon.server.exec.DaemonCommandExecution.proceed(DaemonCommandExecution.java:122)
    at org.gradle.launcher.daemon.server.exec.LogToClient.doBuild(LogToClient.java:60)
    at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:34)
    at org.gradle.launcher.daemon.server.exec.DaemonCommandExecution.proceed(DaemonCommandExecution.java:122)
    at org.gradle.launcher.daemon.server.exec.EstablishBuildEnvironment.doBuild(EstablishBuildEnvironment.java:61)
    at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:34)
    at org.gradle.launcher.daemon.server.exec.DaemonCommandExecution.proceed(DaemonCommandExecution.java:122)
    at org.gradle.launcher.daemon.server.exec.StartBuildOrRespondWithBusy.doBuild(StartBuildOrRespondWithBusy.java:49)
    at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:34)
    at org.gradle.launcher.daemon.server.exec.DaemonCommandExecution.proceed(DaemonCommandExecution.java:122)
    at org.gradle.launcher.daemon.server.exec.HandleStop.execute(HandleStop.java:36)
    at org.gradle.launcher.daemon.server.exec.DaemonCommandExecution.proceed(DaemonCommandExecution.java:122)
    at org.gradle.launcher.daemon.server.exec.CatchAndForwardDaemonFailure.execute(CatchAndForwardDaemonFailure.java:32)
    at org.gradle.launcher.daemon.server.exec.DaemonCommandExecution.proceed(DaemonCommandExecution.java:122)
    at org.gradle.launcher.daemon.server.exec.HandleClientDisconnectBeforeSendingCommand.execute(HandleClientDisconnectBeforeSendingCommand.java:21)
    at org.gradle.launcher.daemon.server.exec.DaemonCommandExecution.proceed(DaemonCommandExecution.java:122)
    at org.gradle.launcher.daemon.server.exec.StopConnectionAfterExecution.execute(StopConnectionAfterExecution.java:27)
    at org.gradle.launcher.daemon.server.exec.DaemonCommandExecution.proceed(DaemonCommandExecution.java:122)
    at org.gradle.launcher.daemon.server.exec.DefaultDaemonCommandExecuter.executeCommand(DefaultDaemonCommandExecuter.java:55)
    at org.gradle.launcher.daemon.server.Daemon$1$1.run(Daemon.java:123)
    at org.gradle.messaging.concurrent.DefaultExecutorFactory$StoppableExecutorImpl$1.run(DefaultExecutorFactory.java:66)
Caused by: org.gradle.api.artifacts.ResolveException: Could not resolve all dependencies for configuration ':ares-gui:runtime'.
    at org.gradle.api.internal.artifacts.ivyservice.ErrorHandlingArtifactDependencyResolver.wrapException(ErrorHandlingArtifactDependencyResolver.java:47)
    at org.gradle.api.internal.artifacts.ivyservice.ErrorHandlingArtifactDependencyResolver.access$000(ErrorHandlingArtifactDependencyResolver.java:26)
    at org.gradle.api.internal.artifacts.ivyservice.ErrorHandlingArtifactDependencyResolver$BrokenResolvedConfiguration.rethrowFailure(ErrorHandlingArtifactDependencyResolver.java:127)
    at org.gradle.api.internal.artifacts.configurations.DefaultConfiguration$ConfigurationFileCollection.getFiles(DefaultConfiguration.java:458)
    at org.gradle.api.internal.artifacts.configurations.DefaultConfiguration.getFiles(DefaultConfiguration.java:203)
    at org.gradle.api.internal.artifacts.configurations.DefaultConfiguration_Decorated.getFiles(Unknown Source)
    at org.gradle.api.internal.file.AbstractFileCollection$1.getFiles(AbstractFileCollection.java:88)
    at build_12d77nfltt9q8t8qb7c0m6lmai$_run_closure4_closure7.doCall(/home/ghik/iosr/ares/ares-gui/build.gradle:45)
    at org.gradle.util.ConfigureUtil.configure(ConfigureUtil.java:141)
    at org.gradle.util.ConfigureUtil.configure(ConfigureUtil.java:90)
    at org.gradle.api.plugins.osgi.OsgiPluginConvention.osgiManifest(OsgiPluginConvention.java:65)
    at org.gradle.api.internal.BeanDynamicObject$MetaClassAdapter.invokeMethod(BeanDynamicObject.java:196)
    at org.gradle.api.internal.BeanDynamicObject.invokeMethod(BeanDynamicObject.java:102)
    at org.gradle.api.internal.plugins.DefaultConvention$ExtensionsDynamicObject.invokeMethod(DefaultConvention.java:212)
    at org.gradle.api.internal.CompositeDynamicObject.invokeMethod(CompositeDynamicObject.java:99)
    at org.gradle.api.internal.project.DefaultProject_Decorated.invokeMethod(Unknown Source)
    at org.gradle.groovy.scripts.BasicScript.methodMissing(BasicScript.groovy:73)
    at build_12d77nfltt9q8t8qb7c0m6lmai$_run_closure4.doCall(/home/ghik/iosr/ares/ares-gui/build.gradle:39)
    at org.gradle.util.ConfigureUtil.configure(ConfigureUtil.java:141)
    at org.gradle.util.ConfigureUtil.configure(ConfigureUtil.java:109)
    at org.gradle.api.internal.AbstractTask.configure(AbstractTask.java:392)
    at org.gradle.api.internal.AbstractTask.configure(AbstractTask.java:57)
    at org.gradle.util.ConfigureUtil.configure(ConfigureUtil.java:133)
    at org.gradle.util.ConfigureUtil.configure(ConfigureUtil.java:90)
    at org.gradle.api.internal.DefaultNamedDomainObjectCollection$ContainerElementsDynamicObject.invokeMethod(DefaultNamedDomainObjectCollection.java:315)
    at org.gradle.api.internal.CompositeDynamicObject.invokeMethod(CompositeDynamicObject.java:99)
    at org.gradle.api.internal.project.DefaultProject_Decorated.invokeMethod(Unknown Source)
    at org.gradle.groovy.scripts.BasicScript.methodMissing(BasicScript.groovy:73)
    at build_12d77nfltt9q8t8qb7c0m6lmai.run(/home/ghik/iosr/ares/ares-gui/build.gradle:38)
    at org.gradle.groovy.scripts.internal.DefaultScriptRunnerFactory$ScriptRunnerImpl.run(DefaultScriptRunnerFactory.java:52)
    ... 52 more
Caused by: java.lang.RuntimeException: Module version group:ares, module:ares-gui, version:1.0.0.SNAPSHOT, configuration:runtime declares a dependency on configuration 'default' which is not declared in the module descriptor for group:ares, module:ares-persistence-config, version:1.0.0.SNAPSHOT
    at org.gradle.api.internal.artifacts.ivyservice.resolveengine.DependencyGraphBuilder$DependencyEdge.calculateTargetConfigurations(DependencyGraphBuilder.java:322)
    at org.gradle.api.internal.artifacts.ivyservice.resolveengine.DependencyGraphBuilder$DependencyEdge.attachToTargetConfigurations(DependencyGraphBuilder.java:283)
    at org.gradle.api.internal.artifacts.ivyservice.resolveengine.DependencyGraphBuilder.traverseGraph(DependencyGraphBuilder.java:117)
    at org.gradle.api.internal.artifacts.ivyservice.resolveengine.DependencyGraphBuilder.resolve(DependencyGraphBuilder.java:53)
    at org.gradle.api.internal.artifacts.ivyservice.resolveengine.DefaultDependencyResolver.resolve(DefaultDependencyResolver.java:67)
    at org.gradle.api.internal.artifacts.ivyservice.CacheLockingArtifactDependencyResolver$1.create(CacheLockingArtifactDependencyResolver.java:36)
    at org.gradle.api.internal.artifacts.ivyservice.CacheLockingArtifactDependencyResolver$1.create(CacheLockingArtifactDependencyResolver.java:34)
    at org.gradle.cache.internal.DefaultCacheAccess.useCache(DefaultCacheAccess.java:126)
    at org.gradle.cache.internal.DefaultPersistentDirectoryStore.useCache(DefaultPersistentDirectoryStore.java:99)
    at org.gradle.api.internal.artifacts.ivyservice.DefaultCacheLockingManager.useCache(DefaultCacheLockingManager.java:49)
    at org.gradle.api.internal.artifacts.ivyservice.CacheLockingArtifactDependencyResolver.resolve(CacheLockingArtifactDependencyResolver.java:34)
    at org.gradle.api.internal.artifacts.ivyservice.SelfResolvingDependencyResolver.resolve(SelfResolvingDependencyResolver.java:42)
    at org.gradle.api.internal.artifacts.ivyservice.ShortcircuitEmptyConfigsArtifactDependencyResolver.resolve(ShortcircuitEmptyConfigsArtifactDependencyResolver.java:78)
    at org.gradle.api.internal.artifacts.ivyservice.ErrorHandlingArtifactDependencyResolver.resolve(ErrorHandlingArtifactDependencyResolver.java:36)
    at org.gradle.api.internal.artifacts.configurations.DefaultConfiguration.getResolvedConfiguration(DefaultConfiguration.java:236)
    at org.gradle.api.internal.artifacts.configurations.DefaultConfiguration_Decorated.getResolvedConfiguration(Unknown Source)
    at org.gradle.api.internal.artifacts.configurations.DefaultConfiguration$ConfigurationFileCollection.getFiles(DefaultConfiguration.java:456)
    ... 78 more

事实证明,当我从构建脚本中删除一行时,问题就消失了:

war {
    manifest = osgiManifest {
        ...
        // this line is causing problems
        def someLibs = classpath.files.collect{ 'WEB-INF/lib/'+it.name }
        ...
    }
}

最佳答案

classpath.files上面的代码在构建配置时解析文件集合。应尽可能避免这种情况。一方面,这意味着文件集合将为每个构建(可能涉及下载)解析,无论哪个项目执行哪个任务。在这种特殊情况下,它还会导致项目对 :ares-persistence 的依赖。得到解决,因为该项目的构建脚本尚未评估而失败。

解决方案是确保文件集合仅在执行时得到解决。如何做到这一点取决于您要达到的目标的确切情况。常见的解决方案是使用惰性 Gradle API,在使用 Gradle 提供的众多钩子(Hook)之一注册的回调中完成工作,或者在 doFirst {} 中完成工作。堵塞。

关于gradle - 添加项目依赖后出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9959922/

相关文章:

java - 更新Google App Engine的Gradle版本

java - org.springframework.beans.factory.UnsatisfiedDependencyException:创建名称为 'voteService'的bean时出错

android - 无法实例化自定义 View 充气器 android.support.v7.app.AppCompatViewInflater

gradle - 基于 Copy 的任务似乎未执行()

android - 找不到方法 commandLine()

java - Grade-wrapper.properties与实际版本之间的Gradle版本不一致

android-studio - 构建 Gradle 7.2 时出现问题,仍然写着找不到 Gradle 6.1.1

android - 如何配置 Dagger +gradle

intellij-idea - 是否有引用网站/手册记录了intellij的.iml,.iws和.ipr文件的结构?

gradle - 如何让Gradle使用不正确的元数据正确下拉传递依赖关系?