# Add a folder as additional classes directory

**URL:** <https://discuss.gradle.org/t/add-a-folder-as-additional-classes-directory/22950>\
**Category:** Help/Discuss\
**Created:** [June 13, 2017, 3:20pm UTC](https://discuss.gradle.org/t/add-a-folder-as-additional-classes-directory/22950 "2017-06-13T15:20:51Z")\
**Posts on this page:** 8\
**Page:** 1

<div class="post-metadata">

**Author:** ![Sergey](https://avatars.discourse-cdn.com/v4/letter/s/9fc348/32.png) [@Sergey](https://discuss.gradle.org/u/Sergey)\
**Post date:** [June 13, 2017, 3:20pm UTC](https://discuss.gradle.org/t/add-a-folder-as-additional-classes-directory/22950/1 "2017-06-13T15:20:52Z")

</div>

In my project part of class files are generated by AspectJ from “aj” files.  
How can I add this generated classes directory to the regular _runtime_ configuration, so it will be added to jar and used during unit tests execution?  
initially I thought to just output classes to the standard sourceSets.main.output.classesDir, but it will not play nice with Gradle 4.0 build caching.

---

<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 13, 2017, 3:40pm UTC](https://discuss.gradle.org/t/add-a-folder-as-additional-classes-directory/22950/2 "2017-06-13T15:40:10Z")

</div>

Do you want the generated classes to be included in the main jar, a secondary jar, or something else?

---

<div class="post-metadata">

**Author:** ![Sergey](https://avatars.discourse-cdn.com/v4/letter/s/9fc348/32.png) [@Sergey](https://discuss.gradle.org/u/Sergey)\
**Post date:** [June 13, 2017, 3:44pm UTC](https://discuss.gradle.org/t/add-a-folder-as-additional-classes-directory/22950/3 "2017-06-13T15:44:39Z")

</div>

The main jar.  
I found meanwhile a possible solution [here](http://javagalleog.blogspot.co.il/2016/03/gradle-and-aspectj.html), but did not have time to check it yet.

---

<div class="post-metadata">

**Author:** ![Stefan\_Wolf](https://sea1.discourse-cdn.com/gradle/user_avatar/discuss.gradle.org/stefan_wolf/32/5519_2.png) [@Stefan\_Wolf](https://discuss.gradle.org/u/Stefan_Wolf)\
**Post date:** [June 13, 2017, 4:02pm UTC](https://discuss.gradle.org/t/add-a-folder-as-additional-classes-directory/22950/4 "2017-06-13T16:02:42Z")

</div>

How about adding it to `sourceSets.main.output.classesDirs` (note the trailing `s`)?

---

<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 13, 2017, 4:09pm UTC](https://discuss.gradle.org/t/add-a-folder-as-additional-classes-directory/22950/5 "2017-06-13T16:09:42Z")

</div>

> [@Stefan\_Wolf](#):
>
> How about adding it to `sourceSets.main.output.classesDirs` (note the trailing `s`)?

Where is `classesDirs` defined? Doesn’t appear in [SourceSetOutput - Gradle DSL Version 8.4](https://docs.gradle.org/current/dsl/org.gradle.api.tasks.SourceSetOutput.html)

I was going to suggest

```
sourceSets.main.output.dir( <the path containing classes>, builtBy: 'theTaskThatGensTheClasses')

```

As show in the example in the `SourceSetOutput` docs.

---

<div class="post-metadata">

**Author:** ![Stefan\_Wolf](https://sea1.discourse-cdn.com/gradle/user_avatar/discuss.gradle.org/stefan_wolf/32/5519_2.png) [@Stefan\_Wolf](https://discuss.gradle.org/u/Stefan_Wolf)\
**Post date:** [June 13, 2017, 4:18pm UTC](https://discuss.gradle.org/t/add-a-folder-as-additional-classes-directory/22950/6 "2017-06-13T16:18:59Z")

</div>

Using `dir` will work well. `classesDirs` is only available in Gradle 4.0: [https://docs.gradle.org/4.0-rc-3/dsl/org.gradle.api.tasks.SourceSetOutput.html#org.gradle.api.tasks.SourceSetOutput:classesDirs](https://docs.gradle.org/4.0-rc-3/dsl/org.gradle.api.tasks.SourceSetOutput.html#org.gradle.api.tasks.SourceSetOutput:classesDirs)

For Gradle 4.0 we have separate classes directories for the different language source sets. Adding the AspectJ output directory as an output directory via `dir` as @Chris_Dore suggested makes perfect sense and is compatible with Gradle 3.x and Gradle 4.0.

---

<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 13, 2017, 7:22pm UTC](https://discuss.gradle.org/t/add-a-folder-as-additional-classes-directory/22950/7 "2017-06-13T19:22:50Z")

</div>

> [@Stefan\_Wolf](#):
>
> classesDirs is only available in Gradle 4.0

Thanks for the clarification Stefan.

---

<div class="post-metadata">

**Author:** ![Sergey](https://avatars.discourse-cdn.com/v4/letter/s/9fc348/32.png) [@Sergey](https://discuss.gradle.org/u/Sergey)\
**Post date:** [June 14, 2017, 7:52am UTC](https://discuss.gradle.org/t/add-a-folder-as-additional-classes-directory/22950/8 "2017-06-14T07:52:07Z")

</div>

I went with @Chris_Dore suggestion since we are still using Gradle 3.x and it solved the problem.

Thanks a lot.
