Is it possible to have a “compile project” dependency on a multiproject build.
For example, I have:
A (depends on B)
The project B structure above was imported from maven during the “gradle init” task.
The problem is when I run a “gradle dependencies” in A it does not include “B-api” or “B-impl”.
Am I doing something wrong here with my nested muliproject configurations?
Ok, so I think I dont fully understand the best practices regarding multi project builds.
Suppose I have developed a custom logging library that alot of my projects depend on. Lets call it “myLogger”, and the dependee “myApp”.
Would I consider myLogger to be a subproject of myApp?
If so, would it be in a subdirectory of all the dependee modules?
Would I nest it like the following?
A multi-project build needs to list all of its subprojects in settings.gradle. There are no “nested multi-projects”.
What you are looking for is called a composite build (a build including another build), which will be a new feature in Gradle 3.1.
Now as for the myLogger project: That should not be in the same repository as your app, since myLogger is used by other apps as well, right? Instead, myLogger should be in its own repository and app should have a binary dependency on it.
With composite build you will then be able to combine the myLogger and app builds into one composite, so you can e.g. test a bugfix in myLogger against app without first having to publish a new version of myLogger.
myLogger is indeed in its own repo. But what I was doing up until now was having a project dependency on it (and many other projects having a project dependency on it), which I now think might be the wrong thing to do. I was thinking either composite builds or a maven install (to mavenLocal) was a better way to do this.
So to clarify, a multi-project build is only used for a one-to-one relationship?