# \`gradlew tasks\` fails in 2.4 due to not finding GeneratePom task

**URL:** <https://discuss.gradle.org/t/gradlew-tasks-fails-in-2-4-due-to-not-finding-generatepom-task/10097>\
**Category:** Bugs\
**Tags:** gradle-3308, issue-acknowledged\
**Created:** [June 15, 2015, 8:16pm UTC](https://discuss.gradle.org/t/gradlew-tasks-fails-in-2-4-due-to-not-finding-generatepom-task/10097 "2015-06-15T20:16:13Z")\
**Posts on this page:** 9\
**Page:** 1

<div class="post-metadata">

**Author:** ![Peter\_Niederwieser](https://avatars.discourse-cdn.com/v4/letter/p/9f8e36/32.png) [@Peter\_Niederwieser](https://discuss.gradle.org/u/Peter_Niederwieser)\
**Post date:** [June 15, 2015, 8:16pm UTC](https://discuss.gradle.org/t/gradlew-tasks-fails-in-2-4-due-to-not-finding-generatepom-task/10097/1 "2015-06-15T20:16:13Z")

</div>

Reproducible example:

settings.gradle:

```gradle
include "sub", "sub2"

```

sub/build.gradle:

```gradle
apply plugin: "java"

```

sub2/build.gradle:

```gradle
apply plugin: "java"
apply plugin: "maven-publish"

dependencies {
  compile project(":sub")
}

publishing {
  publications {
    foo(MavenPublication) {
      from components.java
    }
  }
}

task sync(type: Sync) {
  from { tasks["generatePomFileForFooPublication"] }
  into "bar"
}

build.dependsOn(sync)

```

This works up until 2.3, but in 2.4 `gradlew tasks` fails as shown below.

Here are a few ways to make the problem go away (none of which is adequate of course):

- Change `apply plugin: "java"` to `apply plugin: "java-base"` in sub/build.gradle
- Remove the dependency declaration in sub2/build.gradle
- Remove `build.dependsOn(sync)` in sub2/build.gradle

How to fix this?

Thanks,  
Peter

```gradle
$ gradlew tasks
:tasks

------------------------------------------------------------
All tasks runnable from root project
------------------------------------------------------------

:tasks FAILED

FAILURE: Build failed with an exception.

* Where:
Build file '/swd/prj/publish/sub2/build.gradle' line: 17

* What went wrong:
Execution failed for task ':tasks'.
> Could not determine the dependencies of task ':sub2:sync'.

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

* Exception is:
org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':tasks'.
	at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:69)
	at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:46)
	at org.gradle.api.internal.tasks.execution.PostExecutionAnalysisTaskExecuter.execute(PostExecutionAnalysisTaskExecuter.java:35)
	at org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter.execute(SkipUpToDateTaskExecuter.java:64)
	at org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:58)
	at org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:42)
	at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:52)
	at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:53)
	at org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter.execute(ExecuteAtMostOnceTaskExecuter.java:43)
	at org.gradle.api.internal.AbstractTask.executeWithoutThrowingTaskFailure(AbstractTask.java:310)
	at org.gradle.execution.taskgraph.AbstractTaskPlanExecutor$TaskExecutorWorker.executeTask(AbstractTaskPlanExecutor.java:79)
	at org.gradle.execution.taskgraph.AbstractTaskPlanExecutor$TaskExecutorWorker.processTask(AbstractTaskPlanExecutor.java:63)
	at org.gradle.execution.taskgraph.AbstractTaskPlanExecutor$TaskExecutorWorker.run(AbstractTaskPlanExecutor.java:51)
	at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor.process(DefaultTaskPlanExecutor.java:23)
	at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter.execute(DefaultTaskGraphExecuter.java:88)
	at org.gradle.execution.SelectedTaskExecutionAction.execute(SelectedTaskExecutionAction.java:37)
	at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:62)
	at org.gradle.execution.DefaultBuildExecuter.access$200(DefaultBuildExecuter.java:23)
	at org.gradle.execution.DefaultBuildExecuter$2.proceed(DefaultBuildExecuter.java:68)
	at org.gradle.execution.DryRunBuildExecutionAction.execute(DryRunBuildExecutionAction.java:32)
	at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:62)
	at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:55)
	at org.gradle.initialization.DefaultGradleLauncher.doBuildStages(DefaultGradleLauncher.java:149)
	at org.gradle.initialization.DefaultGradleLauncher.doBuild(DefaultGradleLauncher.java:106)
	at org.gradle.initialization.DefaultGradleLauncher.run(DefaultGradleLauncher.java:86)
	at org.gradle.launcher.exec.InProcessBuildActionExecuter$DefaultBuildController.run(InProcessBuildActionExecuter.java:90)
	at org.gradle.tooling.internal.provider.ExecuteBuildActionRunner.run(ExecuteBuildActionRunner.java:28)
	at org.gradle.launcher.exec.ChainingBuildActionRunner.run(ChainingBuildActionRunner.java:35)
	at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:41)
	at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:28)
	at org.gradle.launcher.exec.DaemonUsageSuggestingBuildActionExecuter.execute(DaemonUsageSuggestingBuildActionExecuter.java:50)
	at org.gradle.launcher.exec.DaemonUsageSuggestingBuildActionExecuter.execute(DaemonUsageSuggestingBuildActionExecuter.java:27)
	at org.gradle.launcher.cli.RunBuildAction.run(RunBuildAction.java:40)
	at org.gradle.internal.Actions$RunnableActionAdapter.execute(Actions.java:169)
	at org.gradle.launcher.cli.CommandLineActionFactory$ParseAndBuildAction.execute(CommandLineActionFactory.java:237)
	at org.gradle.launcher.cli.CommandLineActionFactory$ParseAndBuildAction.execute(CommandLineActionFactory.java:210)
	at org.gradle.launcher.cli.JavaRuntimeValidationAction.execute(JavaRuntimeValidationAction.java:35)
	at org.gradle.launcher.cli.JavaRuntimeValidationAction.execute(JavaRuntimeValidationAction.java:24)
	at org.gradle.launcher.cli.CommandLineActionFactory$WithLogging.execute(CommandLineActionFactory.java:206)
	at org.gradle.launcher.cli.CommandLineActionFactory$WithLogging.execute(CommandLineActionFactory.java:169)
	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:33)
	at org.gradle.launcher.bootstrap.EntryPoint.run(EntryPoint.java:45)
	at org.gradle.launcher.bootstrap.ProcessBootstrap.runNoExit(ProcessBootstrap.java:54)
	at org.gradle.launcher.bootstrap.ProcessBootstrap.run(ProcessBootstrap.java:35)
	at org.gradle.launcher.GradleMain.main(GradleMain.java:23)
	at org.gradle.wrapper.BootstrapMainStarter.start(BootstrapMainStarter.java:30)
	at org.gradle.wrapper.WrapperExecutor.execute(WrapperExecutor.java:127)
	at org.gradle.wrapper.GradleWrapperMain.main(GradleWrapperMain.java:61)
Caused by: org.gradle.api.GradleException: Could not determine the dependencies of task ':sub2:sync'.
	at org.gradle.api.internal.tasks.CachingTaskDependencyResolveContext.resolve(CachingTaskDependencyResolveContext.java:65)
	at org.gradle.api.internal.tasks.AbstractTaskDependency.getDependencies(AbstractTaskDependency.java:27)
	at org.gradle.api.internal.tasks.DefaultTaskContainer$1.getNodeValues(DefaultTaskContainer.java:195)
	at org.gradle.api.internal.tasks.DefaultTaskContainer$1.getNodeValues(DefaultTaskContainer.java:193)
	at org.gradle.internal.graph.CachingDirectedGraphWalker$GraphWithEmpyEdges.getNodeValues(CachingDirectedGraphWalker.java:200)
	at org.gradle.internal.graph.CachingDirectedGraphWalker.doSearch(CachingDirectedGraphWalker.java:112)
	at org.gradle.internal.graph.CachingDirectedGraphWalker.findValues(CachingDirectedGraphWalker.java:64)
	at org.gradle.api.internal.tasks.DefaultTaskContainer.realize(DefaultTaskContainer.java:193)
	at org.gradle.api.internal.project.DefaultProjectTaskLister.listProjectTasks(DefaultProjectTaskLister.java:29)
	at org.gradle.api.tasks.diagnostics.TaskReportTask.generate(TaskReportTask.java:66)
	at org.gradle.api.tasks.diagnostics.AbstractReportTask.generate(AbstractReportTask.java:80)
	at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:75)
	at org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$StandardTaskAction.doExecute(AnnotationProcessingTaskFactory.java:226)
	at org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$StandardTaskAction.execute(AnnotationProcessingTaskFactory.java:219)
	at org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$StandardTaskAction.execute(AnnotationProcessingTaskFactory.java:208)
	at org.gradle.api.internal.AbstractTask$TaskActionWrapper.execute(AbstractTask.java:589)
	at org.gradle.api.internal.AbstractTask$TaskActionWrapper.execute(AbstractTask.java:572)
	at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:80)
	at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:61)
	... 49 more
Caused by: org.gradle.api.UnknownTaskException: Task with name 'generatePomFileForFooPublication' not found in project ':sub2'.
	at org.gradle.api.internal.tasks.DefaultTaskCollection.createNotFoundException(DefaultTaskCollection.java:80)
	at org.gradle.api.internal.DefaultNamedDomainObjectCollection.getByName(DefaultNamedDomainObjectCollection.java:210)
	at org.gradle.api.internal.DefaultNamedDomainObjectCollection.getAt(DefaultNamedDomainObjectCollection.java:222)
	at org.gradle.api.internal.tasks.DefaultTaskCollection.getAt(DefaultTaskCollection.java:31)
	at org.gradle.api.tasks.TaskCollection$getAt.call(Unknown Source)
	at build_dg9qg6497psxkeuxiysdceieo$_run_closure3_closure6.doCall(/swd/prj/publish/sub2/build.gradle:17)
	at build_dg9qg6497psxkeuxiysdceieo$_run_closure3_closure6.doCall(/swd/prj/publish/sub2/build.gradle)
	at org.gradle.api.internal.file.collections.DefaultFileCollectionResolveContext.doResolve(DefaultFileCollectionResolveContext.java:112)
	at org.gradle.api.internal.file.collections.DefaultFileCollectionResolveContext.resolveAsFileTrees(DefaultFileCollectionResolveContext.java:75)
	at org.gradle.api.internal.file.collections.BuildDependenciesOnlyFileCollectionResolveContext$BuildableFileTreeInternalConverter.convertInto(BuildDependenciesOnlyFileCollectionResolveContext.java:50)
	at org.gradle.api.internal.file.collections.DefaultFileCollectionResolveContext.doResolve(DefaultFileCollectionResolveContext.java:98)
	at org.gradle.api.internal.file.collections.DefaultFileCollectionResolveContext.resolveAsFileTrees(DefaultFileCollectionResolveContext.java:75)
	at org.gradle.api.internal.file.CompositeFileCollection$1.resolve(CompositeFileCollection.java:88)
	at org.gradle.api.internal.file.CompositeFileTree$FilteredFileTree.resolve(CompositeFileTree.java:91)
	at org.gradle.api.internal.file.collections.DefaultFileCollectionResolveContext.resolveNested(DefaultFileCollectionResolveContext.java:143)
	at org.gradle.api.internal.file.collections.DefaultFileCollectionResolveContext.doResolve(DefaultFileCollectionResolveContext.java:101)
	at org.gradle.api.internal.file.collections.DefaultFileCollectionResolveContext.resolveAsFileTrees(DefaultFileCollectionResolveContext.java:75)
	at org.gradle.api.internal.file.collections.BuildDependenciesOnlyFileCollectionResolveContext$BuildableFileTreeInternalConverter.convertInto(BuildDependenciesOnlyFileCollectionResolveContext.java:50)
	at org.gradle.api.internal.file.collections.DefaultFileCollectionResolveContext.doResolve(DefaultFileCollectionResolveContext.java:98)
	at org.gradle.api.internal.file.collections.DefaultFileCollectionResolveContext.resolveAsFileCollections(DefaultFileCollectionResolveContext.java:82)
	at org.gradle.api.internal.file.collections.BuildDependenciesOnlyFileCollectionResolveContext.resolveAsBuildables(BuildDependenciesOnlyFileCollectionResolveContext.java:43)
	at org.gradle.api.internal.file.CompositeFileCollection.addDependencies(CompositeFileCollection.java:136)
	at org.gradle.api.internal.file.CompositeFileCollection$3.resolve(CompositeFileCollection.java:124)
	at org.gradle.api.internal.tasks.CachingTaskDependencyResolveContext$TaskGraphImpl.getNodeValues(CachingTaskDependencyResolveContext.java:86)
	at org.gradle.internal.graph.CachingDirectedGraphWalker$GraphWithEmpyEdges.getNodeValues(CachingDirectedGraphWalker.java:200)
	at org.gradle.internal.graph.CachingDirectedGraphWalker.doSearch(CachingDirectedGraphWalker.java:112)
	at org.gradle.internal.graph.CachingDirectedGraphWalker.findValues(CachingDirectedGraphWalker.java:64)
	at org.gradle.api.internal.tasks.CachingTaskDependencyResolveContext.doResolve(CachingTaskDependencyResolveContext.java:74)
	at org.gradle.api.internal.tasks.CachingTaskDependencyResolveContext.resolve(CachingTaskDependencyResolveContext.java:63)
	... 67 more

BUILD FAILED

Total time: 5.128 secs

```

---

<div class="post-metadata">

**Author:** ![Francois\_Guillot](https://sea1.discourse-cdn.com/gradle/user_avatar/discuss.gradle.org/francois_guillot/32/8566_2.png) [@Francois\_Guillot](https://discuss.gradle.org/u/Francois_Guillot)\
**Post date:** [June 16, 2015, 12:49pm UTC](https://discuss.gradle.org/t/gradlew-tasks-fails-in-2-4-due-to-not-finding-generatepom-task/10097/3 "2015-06-16T12:49:26Z")

</div>

Is it because in 2.4, with the transition to the rule based model, tasks are only created when used (i.e. directly called, or being a dependency from another task in the thask graph) ?  
@mark_vieira I think you explained me sth like that in a previous thread

---

<div class="post-metadata">

**Author:** ![Peter\_Niederwieser](https://avatars.discourse-cdn.com/v4/letter/p/9f8e36/32.png) [@Peter\_Niederwieser](https://discuss.gradle.org/u/Peter_Niederwieser)\
**Post date:** [June 16, 2015, 2:03pm UTC](https://discuss.gradle.org/t/gradlew-tasks-fails-in-2-4-due-to-not-finding-generatepom-task/10097/4 "2015-06-16T14:03:47Z")

</div>

I’m aware of these changes, but I need a way to make this work in 2.4. The fact that `gradlew sync` works but `gradlew tasks` doesn’t makes me think this is a bug.

---

<div class="post-metadata">

**Author:** ![Francois\_Guillot](https://sea1.discourse-cdn.com/gradle/user_avatar/discuss.gradle.org/francois_guillot/32/8566_2.png) [@Francois\_Guillot](https://discuss.gradle.org/u/Francois_Guillot)\
**Post date:** [June 16, 2015, 2:26pm UTC](https://discuss.gradle.org/t/gradlew-tasks-fails-in-2-4-due-to-not-finding-generatepom-task/10097/5 "2015-06-16T14:26:22Z")

</div>

Found the topic I was thinking about, and @luke_daley answer

> [@Change of behaviour for @Finalize between 2.3 and 2.4 release](https://discuss.gradle.org/t/change-of-behaviour-for-finalize-between-2-3-and-2-4-release/9564/6):
>
> The basic problem here is that Gradle no longer creates all tasks. Part of the rules based mechanism is the ability to not create something unless it is needed. Where it’s falling down here is that the constructs you are using don’t actually express that it is needed. Unfortunately, there’s no way right now to express that all CustomTask objects depend on all PublishToIvyRepository tasks. That’s what you really need. It’s coming. Your options for right now are to: Call tasks.realize() at the …

So I did not test it, and it’s not supposed to be used externally, but `tasks.realize()` shall do the trick, if I understand correctly.

---

<div class="post-metadata">

**Author:** ![Peter\_Niederwieser](https://avatars.discourse-cdn.com/v4/letter/p/9f8e36/32.png) [@Peter\_Niederwieser](https://discuss.gradle.org/u/Peter_Niederwieser)\
**Post date:** [June 22, 2015, 11:45am UTC](https://discuss.gradle.org/t/gradlew-tasks-fails-in-2-4-due-to-not-finding-generatepom-task/10097/6 "2015-06-22T11:45:17Z")

</div>

Bump

Not having much success getting my issues tracked.

---

<div class="post-metadata">

**Author:** ![Rene](https://sea1.discourse-cdn.com/gradle/user_avatar/discuss.gradle.org/rene/32/8082_2.png) [@Rene](https://discuss.gradle.org/u/Rene)\
**Post date:** [June 22, 2015, 1:56pm UTC](https://discuss.gradle.org/t/gradlew-tasks-fails-in-2-4-due-to-not-finding-generatepom-task/10097/7 "2015-06-22T13:56:16Z")

</div>

Hey Peter, sorry for the delay. I’ve created GRADLE-3308 to track this problem

---

<div class="post-metadata">

**Author:** ![Peter\_Niederwieser](https://avatars.discourse-cdn.com/v4/letter/p/9f8e36/32.png) [@Peter\_Niederwieser](https://discuss.gradle.org/u/Peter_Niederwieser)\
**Post date:** [June 22, 2015, 2:12pm UTC](https://discuss.gradle.org/t/gradlew-tasks-fails-in-2-4-due-to-not-finding-generatepom-task/10097/8 "2015-06-22T14:12:25Z")

</div>

Thanks René. For the record, here is my current workaround:

```gradle
if (GradleVersion.current() >= GradleVersion.version("2.4")
    && gradle.startParameter.taskNames.any { 
        it == "tasks" || it.endsWith(":tasks") }) {
  allprojects { tasks.realize() }
}

```

---

<div class="post-metadata">

**Author:** ![Peter\_Niederwieser](https://avatars.discourse-cdn.com/v4/letter/p/9f8e36/32.png) [@Peter\_Niederwieser](https://discuss.gradle.org/u/Peter_Niederwieser)\
**Post date:** [June 22, 2015, 3:29pm UTC](https://discuss.gradle.org/t/gradlew-tasks-fails-in-2-4-due-to-not-finding-generatepom-task/10097/9 "2015-06-22T15:29:53Z")

</div>

Spoke too soon. The workaround given above solves the problem for my reproducible example, but not for my real-world builds. There I’m getting:

```gradle
Caused by: java.lang.IllegalStateException: Cannot create 'tasks.clean' using creation rule 'tasks.addPlaceholderAction(clean)' as model element 'tasks' is no longer mutable.

```

If I’m changing this to `allprojects { afterEvaluate { tasks.realize() } }`, I’m getting:

```gradle
Caused by: java.lang.IllegalStateException: Cannot create 'tasks.help' using creation rule 'tasks.addPlaceholderAction(help)' as model element 'tasks' is no longer mutable.

```

If I’m changing this to `gradle.projectsEvaluated { allprojects { tasks.realize() } }`, I’m back to the original problem

Hence this issue is preventing me from upgrading to Gradle 2.4 and higher.

---

<div class="post-metadata">

**Author:** ![luke\_daley](https://sea1.discourse-cdn.com/gradle/user_avatar/discuss.gradle.org/luke_daley/32/9890_2.png) [@luke\_daley](https://discuss.gradle.org/u/luke_daley)\
**Post date:** [June 23, 2015, 3:07am UTC](https://discuss.gradle.org/t/gradlew-tasks-fails-in-2-4-due-to-not-finding-generatepom-task/10097/10 "2015-06-23T03:07:54Z")

</div>

@Peter_Niederwieser I’m still finding the root cause, but adding this to the end of `sub2/build.gradle` should unblock you…

```gradle
tasks.getByPath(":sub2:generatePomFileForFooPublication") 

```
