# How to force gradle build the project before task execution?

**URL:** <https://discuss.gradle.org/t/how-to-force-gradle-build-the-project-before-task-execution/7333>\
**Category:** Old Forum Archive\
**Created:** [September 19, 2014, 8:01am UTC](https://discuss.gradle.org/t/how-to-force-gradle-build-the-project-before-task-execution/7333 "2014-09-19T08:01:00Z")\
**Posts on this page:** 10\
**Page:** 1

<div class="post-metadata">

**Author:** ![Sergei\_Kobiakov](https://avatars.discourse-cdn.com/v4/letter/s/e95f7d/32.png) [@Sergei\_Kobiakov](https://discuss.gradle.org/u/Sergei_Kobiakov)\
**Post date:** [September 19, 2014, 8:01am UTC](https://discuss.gradle.org/t/how-to-force-gradle-build-the-project-before-task-execution/7333/1 "2014-09-19T08:01:00Z")

</div>

Hello,

I have the gradle task, but I want that gradle build the project before every time this task is executed. It sounds simple, but sorry, I didn’t find how to do it(

---

<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:** [September 19, 2014, 8:14am UTC](https://discuss.gradle.org/t/how-to-force-gradle-build-the-project-before-task-execution/7333/2 "2014-09-19T08:14:00Z")

</div>

Depending on what you mean by “build the project”, it could be something like ‘myTask.dependsOn(build)’.

---

<div class="post-metadata">

**Author:** ![Sergei\_Kobiakov](https://avatars.discourse-cdn.com/v4/letter/s/e95f7d/32.png) [@Sergei\_Kobiakov](https://discuss.gradle.org/u/Sergei_Kobiakov)\
**Post date:** [September 19, 2014, 8:25am UTC](https://discuss.gradle.org/t/how-to-force-gradle-build-the-project-before-task-execution/7333/3 "2014-09-19T08:25:00Z")

</div>

To build the project I use the following command: “gradle build”, and the project successfully builds. Which is default gradle task, I think. When I am trying myTask.dependsOn(build), I go the error that there is no task ‘buid’ in my project.

---

<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:** [September 19, 2014, 8:26am UTC](https://discuss.gradle.org/t/how-to-force-gradle-build-the-project-before-task-execution/7333/4 "2014-09-19T08:26:00Z")

</div>

More details would help (e.g. whether your build is single project or multi project, what the concrete use case is, etc.), but try ‘myTask.dependsOn(“build”)’.

---

<div class="post-metadata">

**Author:** ![Sergei\_Kobiakov](https://avatars.discourse-cdn.com/v4/letter/s/e95f7d/32.png) [@Sergei\_Kobiakov](https://discuss.gradle.org/u/Sergei_Kobiakov)\
**Post date:** [September 19, 2014, 8:52am UTC](https://discuss.gradle.org/t/how-to-force-gradle-build-the-project-before-task-execution/7333/5 "2014-09-19T08:52:00Z")

</div>

Lets consider that my project is just one file build.gradle and it looks like this:

```gradle
apply plugin: 'java'
  task mysTask << {
 println "myTask"
}

```

I can call the following commands: “gradle build”; “gradle myTask”. The “gradle build” task creates jar with the name of the folder where the build.gradle lies.

I want that always I am calling “gradle myTask”, “gradle build” invoked automatically.

---

<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:** [September 19, 2014, 8:54am UTC](https://discuss.gradle.org/t/how-to-force-gradle-build-the-project-before-task-execution/7333/6 "2014-09-19T08:54:00Z")

</div>

In this case, ‘myTask.dependsOn(build)’ will work, although you might want something more narrow such as ‘myTask.dependsOn(jar)’.

---

<div class="post-metadata">

**Author:** ![Sergei\_Kobiakov](https://avatars.discourse-cdn.com/v4/letter/s/e95f7d/32.png) [@Sergei\_Kobiakov](https://discuss.gradle.org/u/Sergei_Kobiakov)\
**Post date:** [September 19, 2014, 10:34am UTC](https://discuss.gradle.org/t/how-to-force-gradle-build-the-project-before-task-execution/7333/7 "2014-09-19T10:34:00Z")

</div>

Thank you for you help Peter! I think, we not far from solving this trouble.

When I do as you recommended: everything works nice, but if I have the subproject:

```gradle
apply plugin: 'java'
  task innerTask << {
 innerTask.dependsOn(build)
 println "InnerTask"
}

```

and the root project:

```gradle
task outerTask << {
 tasks.getByPath(':inner:innerTask').execute()
}

```

and when I am calling the ‘outerTask’ the inner project isn’t build, it just prints “InnerTask”. If there is way to force the inner project task build the inner project, when I calling the inner task from the outer task?

---

<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:** [September 20, 2014, 8:39am UTC](https://discuss.gradle.org/t/how-to-force-gradle-build-the-project-before-task-execution/7333/8 "2014-09-20T08:39:00Z")

</div>

‘TaskInternal#execute’ is an internal method that should never be called from user code (or bad things will happen). Instead, use ‘outerTask.dependsOn(":inner:innerTask")’.

---

<div class="post-metadata">

**Author:** ![Sergei\_Kobiakov](https://avatars.discourse-cdn.com/v4/letter/s/e95f7d/32.png) [@Sergei\_Kobiakov](https://discuss.gradle.org/u/Sergei_Kobiakov)\
**Post date:** [September 23, 2014, 7:53am UTC](https://discuss.gradle.org/t/how-to-force-gradle-build-the-project-before-task-execution/7333/9 "2014-09-23T07:53:00Z")

</div>

Thanks, I changed outerTask.dependsOn(":inner:innerTask"), but nothing changed. Still the inner task is called and prints “InnerTask”, but it isn’t call build of the inner project.

---

<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:** [September 23, 2014, 8:31am UTC](https://discuss.gradle.org/t/how-to-force-gradle-build-the-project-before-task-execution/7333/10 "2014-09-23T08:31:00Z")

</div>

It’s due to wrong usage of \<\< above (task dependencies can’t be declared when the task is already running; I’d expect recent Gradle version to give an error here). I recommend to study the first several chapters of the [Gradle User Guide](http://gradle.org/docs/current/userguide/userguide_single.html).
