diff --git a/build.gradle b/build.gradle index ce2da2bc..23e1989d 100644 --- a/build.gradle +++ b/build.gradle @@ -4,13 +4,16 @@ plugins { id "com.diffplug.spotless" version "5.11.0" apply false // generation of project-wide javadocs id "io.freefair.aggregate-javadoc" version "5.3.0" + + // pom packaging for root + id "java-platform" } allprojects { group = "com.dumbdogdiner" - version = "3.0.0" + version = "3.0.1" - apply plugin: "java" + // java plugin is applied in subprojects apply plugin: "jacoco" // Apply here instead of in plugins {} above to solve @@ -69,6 +72,9 @@ allprojects { subprojects { apply plugin: "io.freefair.lombok" apply plugin: "com.diffplug.spotless" + + // apply the java plugin here since root uses java-platform + apply plugin: "java" // Spotless Options spotless { @@ -182,11 +188,20 @@ subprojects { } } -// Root build: create uber jar from subproject outputs -jar { from subprojects.sourceSets.main.output } +// Root build: include dependencies (see below) +javaPlatform.allowDependencies() + +// Root build: Add api dependency to all projects we wanna include +dependencies { + project.subprojects.each { + if (it.name != "serverversion") api (it) { + exclude group: "com.dumbdogdiner", module: "serverversion" + } + } +} // Root build: create uber sources from subproject sources -task rootSources(type: Jar, dependsOn: classes) { +task rootSources(type: Jar, dependsOn: subprojects.classes) { archiveClassifier.set("sources") // Use source code from all subprojects for sources. // TODO: Use certain subprojects only to allow for multiple jar outputs @@ -230,16 +245,20 @@ tasks.build.finalizedBy copySubprojectJars tasks.build.dependsOn rootSources // Root build: generate project wide test, coverage and javadoc results -tasks.test.finalizedBy rootTestReport, rootJacocoMergedReport, javadoc +tasks.build.finalizedBy rootTestReport, rootJacocoMergedReport, aggregateJavadoc -// Root build: also run aggregateJavadoc after javadoc to generate project-wide javadocs -tasks.javadoc.finalizedBy aggregateJavadoc +// Subproject Javadoc: Finalize :javadoc meta-task with :aggregateJavadoc +task javadoc { finalizedBy aggregateJavadoc } // Javadoc fixes (pt. 2, see above entries) aggregateJavadoc.options.encoding = "UTF-8" +// Root Javadoc: Set title and output dir +aggregateJavadoc.title = "StickyAPI $project.version API (Aggregated)" +aggregateJavadoc.destinationDir = file("$buildDir/docs/javadoc") + task browseJavadoc { - dependsOn javadoc + dependsOn aggregateJavadoc description "Browse javadoc" group = "documentation" doLast { @@ -253,7 +272,7 @@ publishing { // Uber-jar publication publications { gprRoot(MavenPublication) { - from(components.java) + from(components.javaPlatform) artifact rootSources // Publish the output of the (root) sources task } }