简体   繁体   中英

subprojects dependencies failure with Gradle

I'm struggling with Gradle and the build configuration of the following project structure (pretty simple...):

/projA
   /projB
   /projC

projC using classes from projB.

In projA/settings.gradle:

include 'projB'
include 'projC'

In projC/build.gradle:

dependencies{
 compile project(':projB')
}

In IntelliJ I have no problem of dependency resolution, but when I'm running a ./gradlew build in projA, I'm facing a compilation error:

ClassC: Unresolved reference: ClassB

(where ClassC is the class of projC which is failing on the use of ClassB which is a class from projB, obviously...)

Notice that the code is in Kotlin language, that I do not have any problem to run the app in IntelliJ (spring boot run), but any build with Gradle give me an error (both in Intellij and command line).

What am I missing?

Regards, Adrien

It's a common Gradle idiom to have an additional top level directory for your rootProject . That's a special project that's the parent to all other projects in your build, in a multi-project build .

That's where your settings.gradle file goes:

include ':projA:projB'
include ':projA:projC'

Then, I'd recommend having projA as a subdirectory of your rootProject, so your hierarchy would look as follows:

/myProject
  settings.gradle
  /projA
    build.gradle
    /projB
      build.gradle
    /projC
      build.gradle

Also, in projC/build.gradle , you'll want instead:

dependencies {
  compile project(':projA:projB')
}

That should do it.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM