# Task has not declared any outputs despite executing actions

**URL:** https://discuss.gradle.org/t/task-has-not-declared-any-outputs-despite-executing-actions/40214
**Category:** Help/Discuss
**Created:** [June 12, 2021, 1:50pm UTC](https://discuss.gradle.org/t/task-has-not-declared-any-outputs-despite-executing-actions/40214 "2021-06-12T13:50:07Z")
**Posts on this page:** 3
**Page:** 1

<div class="post-metadata">

### Author: ![PandaGeek1024](https://avatars.discourse-cdn.com/v4/letter/p/ecd19e/32.png) [@PandaGeek1024](https://discuss.gradle.org/u/PandaGeek1024)
#### Post date: [June 12, 2021, 1:50pm UTC](https://discuss.gradle.org/t/task-has-not-declared-any-outputs-despite-executing-actions/40214/1 "2021-06-12T13:50:08Z")

</div>

Hi, I’m an android developer and I have been trying to follow the doc to create an incremental task for my project. I have tried my best to follow the instructions as much as I can but still, it runs the task every time. Been struggled for whole night, what am I doing wrong? really need some help.

```gradle
Task 'convertSettingsToXML' is not up-to-date because:
  Task has not declared any outputs despite executing actions.

```

My gradle version:  
distributionUrl=https://services.gradle.org/distributions/gradle-6.6.1-bin.zip

build.gradle:

```gradle
class SettingsToXMLConverter extends DefaultTask {
  @InputFiles
  public FileCollection sources

  @OutputDirectory
  public File outputDir

  @TaskAction
  void execute() {
    println "sourceFiles: $sources"
    println "outputDir: $outputDir"
    sources.each {
      inputFile ->
        def outputFile = project.file("$outputDir/dma_settings_gen.xml")
        //Perform some actions...
    }
  }
}

```

```gradle
task convertSettingsToXML(type: SettingsToXMLConverter) {
  sources = fileTree(dir: System.getProperty('SharedDir'))
  outputDir = file("src/main/res/values")
}

```

The log:

```gradle
Task ':app:convertSettingsToXML' is not up-to-date because:

Task has not declared any outputs despite executing actions.

sourceFiles: directory 'Phone/Shared'

outputDir: /Users/test/Developer/Phone/android/Service/src/main/res/values

```

---

<div class="post-metadata">

### Author: ![Chris\_Dore](https://sea1.discourse-cdn.com/gradle/user_avatar/discuss.gradle.org/chris_dore/32/7592_2.png) [@Chris\_Dore](https://discuss.gradle.org/u/Chris_Dore)
#### Post date: [June 15, 2021, 5:55am UTC](https://discuss.gradle.org/t/task-has-not-declared-any-outputs-despite-executing-actions/40214/2 "2021-06-15T05:55:34Z")

</div>

In Groovy, specifying `public` on the class’s fields causes them to be fields (no getter/setter) rather than [properties](https://groovy-lang.org/objectorientation.html#properties). The `@InputFiles` and `@OutputDirectory` annotations are ignored when they are on fields.

Delete `public` from `sources` and `outputDir` and you should see what you expected.

---

<div class="post-metadata">

### Author: ![PandaGeek1024](https://avatars.discourse-cdn.com/v4/letter/p/ecd19e/32.png) [@PandaGeek1024](https://discuss.gradle.org/u/PandaGeek1024)
#### Post date: [June 15, 2021, 7:09am UTC](https://discuss.gradle.org/t/task-has-not-declared-any-outputs-despite-executing-actions/40214/3 "2021-06-15T07:09:13Z")

</div>

> [@Chris\_Dore](#):
>
> causes them to be fields (no getter/setter) rather than [properties](https://groovy-lang.org/objectorientation.html#properties)

thanks, it finally works now!
