2013-11-17 3 views
3

Я определил простую задачуКак перебрать зависимости проекта в Gradle

task printCompileTestLib { 
     configurations.testCompile.each { println it } 
} 

test.dependsOn(printCompileTestLib) 

Но когда я выполнить задание следующих ошибок происходит:

FAILURE: Build failed with an exception. 

* Where: 
Build file 'D:\projects\fwk\trunk-gradle\ext\build.gradle' line: 2 

* What went wrong: 
A problem occurred evaluating project ':ext'. 
> You can't change a configuration which is not in unresolved state! 

* Try: 
Run with --debug option to get more log output. 

* Exception is: 
org.gradle.api.GradleScriptException: A problem occurred evaluating project ':ext'. 
    at org.gradle.groovy.scripts.internal.DefaultScriptRunnerFactory$ScriptRunnerImpl.run(DefaultScriptRunnerFactory.java:54) 
    at org.gradle.configuration.DefaultScriptPluginFactory$ScriptPluginImpl.apply(DefaultScriptPluginFactory.java:132) 
    at org.gradle.configuration.project.BuildScriptProcessor.execute(BuildScriptProcessor.java:38) 
    at org.gradle.configuration.project.BuildScriptProcessor.execute(BuildScriptProcessor.java:25) 
    at org.gradle.configuration.project.ConfigureActionsProjectEvaluator.evaluate(ConfigureActionsProjectEvaluator.java:34) 
    at org.gradle.configuration.project.LifecycleProjectEvaluator.evaluate(LifecycleProjectEvaluator.java:55) 
    at org.gradle.api.internal.project.AbstractProject.evaluate(AbstractProject.java:468) 
    at org.gradle.api.internal.project.AbstractProject.evaluate(AbstractProject.java:76) 
    at org.gradle.configuration.DefaultBuildConfigurer.configure(DefaultBuildConfigurer.java:31) 
    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.exec.InProcessBuildActionExecuter$DefaultBuildController.run(InProcessBuildActionExecuter.java:64) 
    at org.gradle.launcher.cli.ExecuteBuildAction.run(ExecuteBuildAction.java:33) 
    at org.gradle.launcher.cli.ExecuteBuildAction.run(ExecuteBuildAction.java:24) 
    at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:35) 
    at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:26) 
    at org.gradle.launcher.cli.RunBuildAction.run(RunBuildAction.java:50) 
    at org.gradle.api.internal.Actions$RunnableActionAdapter.execute(Actions.java:171) 
    at org.gradle.launcher.cli.CommandLineActionFactory$ParseAndBuildAction.execute(CommandLineActionFactory.java:201) 
    at org.gradle.launcher.cli.CommandLineActionFactory$ParseAndBuildAction.execute(CommandLineActionFactory.java:174) 
    at org.gradle.launcher.cli.CommandLineActionFactory$WithLogging.execute(CommandLineActionFactory.java:170) 
    at org.gradle.launcher.cli.CommandLineActionFactory$WithLogging.execute(CommandLineActionFactory.java:139) 
    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:46) 
    at org.gradle.launcher.bootstrap.EntryPoint.run(EntryPoint.java:45) 
    at org.gradle.launcher.Main.main(Main.java:37) 
    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:23) 
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:120) 
Caused by: org.gradle.api.InvalidUserDataException: You can't change a configuration which is not in unresolved state! 
    at org.gradle.api.internal.artifacts.configurations.DefaultConfiguration.throwExceptionIfNotInUnresolvedState(DefaultConfiguration.java:425) 
    at org.gradle.api.internal.artifacts.configurations.DefaultConfiguration.access$500(DefaultConfiguration.java:45) 
    at org.gradle.api.internal.artifacts.configurations.DefaultConfiguration$VetoContainerChangeAction.run(DefaultConfiguration.java:525) 
    at org.gradle.api.internal.DefaultDomainObjectCollection.assertMutable(DefaultDomainObjectCollection.java:258) 
    at org.gradle.api.internal.DefaultDomainObjectCollection.add(DefaultDomainObjectCollection.java:158) 
    at org.gradle.api.internal.DelegatingDomainObjectSet.add(DelegatingDomainObjectSet.java:80) 
    at org.gradle.api.internal.artifacts.dsl.dependencies.DefaultDependencyHandler.doAdd(DefaultDependencyHandler.groovy:66) 
    at org.gradle.api.internal.artifacts.dsl.dependencies.DefaultDependencyHandler.this$2$doAdd(DefaultDependencyHandler.groovy) 
    at org.gradle.api.internal.artifacts.dsl.dependencies.DefaultDependencyHandler.methodMissing(DefaultDependencyHandler.groovy:102) 
    at org.gradle.api.internal.artifacts.dsl.dependencies.DefaultDependencyHandler.invokeMethod(DefaultDependencyHandler.groovy) 
    at build_1baeie9kemtfk46808kipbh9q9$_run_closure1.doCall(D:\projects\fwk\trunk-gradle\ext\build.gradle:2) 
    at org.gradle.api.internal.ClosureBackedAction.execute(ClosureBackedAction.java:58) 
    at org.gradle.util.ConfigureUtil.configure(ConfigureUtil.java:130) 
    at org.gradle.util.ConfigureUtil.configure(ConfigureUtil.java:91) 
    at org.gradle.api.internal.project.AbstractProject.dependencies(AbstractProject.java:883) 
    at org.gradle.api.internal.BeanDynamicObject$MetaClassAdapter.invokeMethod(BeanDynamicObject.java:246) 
    at org.gradle.api.internal.BeanDynamicObject.invokeMethod(BeanDynamicObject.java:134) 
    at org.gradle.api.internal.CompositeDynamicObject.invokeMethod(CompositeDynamicObject.java:147) 
    at org.gradle.groovy.scripts.BasicScript.methodMissing(BasicScript.java:79) 
    at build_1baeie9kemtfk46808kipbh9q9.run(D:\projects\fwk\trunk-gradle\ext\build.gradle:1) 
    at org.gradle.groovy.scripts.internal.DefaultScriptRunnerFactory$ScriptRunnerImpl.run(DefaultScriptRunnerFactory.java:52) 
    ... 31 more 

Вопрос заключается в том, как я могу перебирать зависимости проекта? Есть ли способ извлечь каждую группу зависимостей , модуль и версия в задаче?

ответ

5

Вам нужно перебирать зависимости в задаче выполнения времени, а не на задачах конфигурации время:

task printCompileTestLib { 
    // doLast adds a so-called task action, which will 
    // only get run if and when the task gets executed 
    doLast { 
     configurations.testCompile.each { println it } 
    } 
} 
+1

Спасибо за ответ, теперь проблема: configuration.testCompile является FileCollection, как я могу получить доступ к его «группе», «модулю» и «версии»? –

+2

Чтобы получить эту информацию, вы должны использовать либо конфигурацию Configuration.resolvedConfiguration, либо API 'Configuration.incoming'. Подробнее см. В [Справочник по языку сборки Gradle] (http://gradle.org/docs/current/dsl/index.html). –

Смежные вопросы