# Dependencies on source set of different projects

**URL:** <https://discuss.gradle.org/t/dependencies-on-source-set-of-different-projects/12906>\
**Category:** Help/Discuss\
**Created:** [November 24, 2015, 1:24am UTC](https://discuss.gradle.org/t/dependencies-on-source-set-of-different-projects/12906 "2015-11-24T01:24:33Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![tberne](https://sea1.discourse-cdn.com/gradle/user_avatar/discuss.gradle.org/tberne/32/3711_2.png) [@tberne](https://discuss.gradle.org/u/tberne)\
**Post date:** [November 24, 2015, 1:24am UTC](https://discuss.gradle.org/t/dependencies-on-source-set-of-different-projects/12906/1 "2015-11-24T01:24:33Z")

</div>

I’m working in a multiproject system (with 40+ subprojects). Each subproject has its own layout (most follows a common layout, but some differ). Among the subprojects I have these two:

- testjunit

- basicservices

I need to make the source set **basicservices-testacceptance** depend on the output of source set **testjunit-lptfExperimental**.

I tried to do:

```
dependencies{
    testacceptanceCompile project(':testjunit').sourceSets.lptfExperimental.output
}

```

And

```
dependencies{
    project.parent.subprojects.each{prj ->
        if(prj.name == "testjunit")
            testacceptanceCompile prj.sourceSets.findByName('lptfExperimental').output
}

```

But in both cases I receive the following error:

> FAILURE: Build failed with an exception.
> 
> Where: Script ‘C:\Lumis\Development\Lumis\_PortalJava\defaults.gradle’ line: 144
> 
> What went wrong: A problem occurred evaluating script. Could not find property ‘lptfExperimental’ on SourceSet container.

Just an extra info: this dependency is declared in a file named defaults.gradle that is applied in build.gradle of project basicservices.

# /defaults.gradle:

```
apply plugin: 'java'
apply plugin: 'eclipse'
...
sourceSets {
    ...
    // test acceptance
    testacceptance{

        java{
            srcDir 'test/acceptance/src/java'
        }

        resources {
            srcDir 'test/acceptance/src/java'
        }
    }
    ...
}

// default dependencies
dependencies{
    testacceptanceCompile project(':testjunit')
    testacceptanceCompile project(':testjunit').sourceSets.lptfExperimental.output
}
...

```

# /testjunit/build.gradle:

```
...
sourceSets{
    ...
    lptfExperimental{

    java {
        srcDir 'lptf-experimental/src/java'
    }

    resources {
        srcDir 'lptf-experimental/src/java'
    }
}
...

```

# /basicservices/build.gradle:

```
apply plugin: 'java'
apply plugin: 'eclipse'
apply from: '../defaults.gradle'

dependencies{
    ...
    compile project(':testjunit')
    ...
}

```

---

<div class="post-metadata">

**Author:** ![edeesis](https://sea1.discourse-cdn.com/gradle/user_avatar/discuss.gradle.org/edeesis/32/3886_2.png) [@edeesis](https://discuss.gradle.org/u/edeesis)\
**Post date:** [December 10, 2015, 7:09am UTC](https://discuss.gradle.org/t/dependencies-on-source-set-of-different-projects/12906/2 "2015-12-10T07:09:53Z")

</div>

Try defining an artifact for lptfExperimental source set:

```
configurations {
    lptfExperimental
}

task lptfExperimentalJar(type:Jar) {
    from sourceSets.lptfExperimental.output
}

artifacts {
    lptfExperiemental lptfExperimentalJar
}

```

Then in basicservices/build.gradle:

```
dependencies {
    compile project(path: ':testjunit', configuration: 'lptfExperimental')
}
```

---

<div class="post-metadata">

**Author:** ![grv87](https://sea1.discourse-cdn.com/gradle/user_avatar/discuss.gradle.org/grv87/32/5767_2.png) [@grv87](https://discuss.gradle.org/u/grv87)\
**Post date:** [August 21, 2018, 4:13pm UTC](https://discuss.gradle.org/t/dependencies-on-source-set-of-different-projects/12906/3 "2018-08-21T16:13:51Z")

</div>

What is the difference if I use `lptfExperimentalRuntimeElements` configuration?
