Multi project build task dependencies


(Jean-Yves Roda) #1

I have a flat multi-project with a build.gradle file at the root. Basic project dependencies are working fine, but I have two different source sets. The first one is the default Java sourceset and compiles fine. The second one is located at src/import/java in each project, and depends on the corresponding sourceset of each of its subprojects. How can Gradle resolve these dependencies ? This sourceset should only be compiled by a certain task, a default build should not process these (just like tests, except I cannot make it work).

Here is what I currently have (the projects share the same structure so all gradle.build files are importing the same one) :

task buildImportModule(type: Jar, dependsOn: ['jar']) {
    description 'Permet de compiler le dossier src/import du projet'
    from(sourceSets.importSet.output) {
        include '**/*.class'
    }
    archiveName = project.name + "Import.jar"
}

artifacts {
    importCompile buildImportModule
}

if (project.properties.containsKey("modules")) {
	String deps = project.properties.modules
	def depsSplit = deps.split(',')
	depsSplit.each {dep ->
		buildImportModule.dependsOn tasks.getByPath(':' + dep + ':buildImportModule')
	}
}