From 5d4065d141eda7133d31c5e8ce9b5954a0b861ed Mon Sep 17 00:00:00 2001 From: Manuel Fuhr Date: Fri, 5 Apr 2024 23:11:58 +0200 Subject: [PATCH] Use conventions instead of cross-project configuration gradle userguide suggests to avoid allprojects/subprojects and use conventions instead https://docs.gradle.org/current/userguide/sharing_build_logic_between_subprojects.html#sec:convention_plugins_vs_cross_configuration --- brouter-codec/build.gradle | 3 +- brouter-core/build.gradle | 3 +- brouter-expressions/build.gradle | 3 +- brouter-map-creator/build.gradle | 4 +- brouter-mapaccess/build.gradle | 3 +- brouter-routing-app/build.gradle | 7 +++ brouter-server/build.gradle | 6 +-- brouter-util/build.gradle | 6 +-- build.gradle | 47 ------------------- buildSrc/build.gradle | 3 ++ .../brouter.application-conventions.gradle | 8 ++++ .../groovy/brouter.java-conventions.gradle | 25 ++++++++++ .../groovy/brouter.library-conventions.gradle | 21 +++++++++ .../groovy/brouter.version-conventions.gradle | 7 +++ settings.gradle | 4 +- 15 files changed, 80 insertions(+), 70 deletions(-) create mode 100644 buildSrc/build.gradle create mode 100644 buildSrc/src/main/groovy/brouter.application-conventions.gradle create mode 100644 buildSrc/src/main/groovy/brouter.java-conventions.gradle create mode 100644 buildSrc/src/main/groovy/brouter.library-conventions.gradle create mode 100644 buildSrc/src/main/groovy/brouter.version-conventions.gradle diff --git a/brouter-codec/build.gradle b/brouter-codec/build.gradle index 22faffe..7224590 100644 --- a/brouter-codec/build.gradle +++ b/brouter-codec/build.gradle @@ -1,8 +1,7 @@ plugins { - id 'java-library' + id 'brouter.library-conventions' } dependencies { implementation project(':brouter-util') - testImplementation 'junit:junit:4.13.1' } diff --git a/brouter-core/build.gradle b/brouter-core/build.gradle index cb7dde5..e4c865f 100644 --- a/brouter-core/build.gradle +++ b/brouter-core/build.gradle @@ -1,5 +1,5 @@ plugins { - id 'java-library' + id 'brouter.library-conventions' } dependencies { @@ -7,7 +7,6 @@ dependencies { implementation project(':brouter-util') implementation project(':brouter-expressions') implementation project(':brouter-codec') - testImplementation 'junit:junit:4.13.2' } // MapcreatorTest generates segments which are used in tests diff --git a/brouter-expressions/build.gradle b/brouter-expressions/build.gradle index ff146d6..fd71fbf 100644 --- a/brouter-expressions/build.gradle +++ b/brouter-expressions/build.gradle @@ -1,9 +1,8 @@ plugins { - id 'java-library' + id 'brouter.library-conventions' } dependencies { implementation project(':brouter-util') implementation project(':brouter-codec') - testImplementation 'junit:junit:4.13.1' } diff --git a/brouter-map-creator/build.gradle b/brouter-map-creator/build.gradle index 7c48259..3f8c263 100644 --- a/brouter-map-creator/build.gradle +++ b/brouter-map-creator/build.gradle @@ -1,5 +1,5 @@ plugins { - id 'java-library' + id 'brouter.application-conventions' } dependencies { @@ -8,6 +8,4 @@ dependencies { implementation project(':brouter-expressions') implementation group: 'org.openstreetmap.osmosis', name: 'osmosis-osm-binary', version: '0.48.3' - - testImplementation('junit:junit:4.13.1') } diff --git a/brouter-mapaccess/build.gradle b/brouter-mapaccess/build.gradle index 40189cb..b17e589 100644 --- a/brouter-mapaccess/build.gradle +++ b/brouter-mapaccess/build.gradle @@ -1,12 +1,11 @@ plugins { - id 'java-library' + id 'brouter.library-conventions' } dependencies { implementation project(':brouter-util') implementation project(':brouter-codec') implementation project(':brouter-expressions') - testImplementation 'junit:junit:4.13.2' } // MapcreatorTest generates segments which are used in tests diff --git a/brouter-routing-app/build.gradle b/brouter-routing-app/build.gradle index c69c192..73b1a63 100644 --- a/brouter-routing-app/build.gradle +++ b/brouter-routing-app/build.gradle @@ -2,6 +2,8 @@ import org.gradle.nativeplatform.platform.internal.DefaultNativePlatform plugins { id 'com.android.application' + id 'checkstyle' + id 'brouter.version-conventions' } android { @@ -88,6 +90,11 @@ android { } } +repositories { + mavenCentral() + google() +} + dependencies { implementation 'androidx.appcompat:appcompat:1.6.1' implementation "androidx.constraintlayout:constraintlayout:2.1.4" diff --git a/brouter-server/build.gradle b/brouter-server/build.gradle index 4af5535..9206872 100644 --- a/brouter-server/build.gradle +++ b/brouter-server/build.gradle @@ -1,13 +1,10 @@ plugins { - id 'application' + id 'brouter.application-conventions' } - application { mainClass.set('btools.server.BRouter') - distTar.enabled = false - jar { manifest { attributes "Main-Class": getMainClass(), "Implementation-Version": project.version @@ -78,6 +75,5 @@ dependencies { implementation project(':brouter-mapaccess') implementation project(':brouter-util') - testImplementation 'junit:junit:4.13.2' testImplementation 'org.json:json:20180813' } diff --git a/brouter-util/build.gradle b/brouter-util/build.gradle index 3dc5565..80c7d8c 100644 --- a/brouter-util/build.gradle +++ b/brouter-util/build.gradle @@ -1,7 +1,3 @@ plugins { - id 'java-library' -} - -dependencies { - testImplementation('junit:junit:4.13.1') + id 'brouter.library-conventions' } diff --git a/build.gradle b/build.gradle index f1348b5..c316d1c 100644 --- a/build.gradle +++ b/build.gradle @@ -1,7 +1,6 @@ // Top-level build file where you can add configuration options common to all sub-projects/modules. buildscript { - repositories { mavenCentral() google() @@ -9,57 +8,11 @@ buildscript { dependencies { classpath 'com.android.tools.build:gradle:8.3.1' - // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files } } -allprojects { - // NOTE: - // there are four places to change the version number - // this file - // app: build.gradle (versionCode only) - // OsmTrack (version and versionDate) - // docs revisions.md (version and versionDate) - project.version "1.7.3" - group 'org.btools' - - repositories { - mavenCentral() - google() - } - - apply plugin: "maven-publish" - publishing { - repositories { - maven { - name = "GitHubPackages" - url = uri("https://maven.pkg.github.com/$System.env.REPO") - credentials { - username = project.findProperty("gpr.user") ?: System.getenv("USERNAME") - password = project.findProperty("gpr.key") ?: System.getenv("TOKEN") - } - } - } - publications { - gpr(MavenPublication) - } - } - - apply plugin: "checkstyle" - apply plugin: "pmd" - - pmd { - consoleOutput = true - toolVersion = "7.0.0" - rulesMinimumPriority = 5 - ruleSetFiles = files("${rootProject.rootDir}/config/pmd/pmd-ruleset.xml") - ruleSets = [] - // ignoreFailures = true - } -} - task clean(type: Delete) { delete rootProject.buildDir } diff --git a/buildSrc/build.gradle b/buildSrc/build.gradle new file mode 100644 index 0000000..6784052 --- /dev/null +++ b/buildSrc/build.gradle @@ -0,0 +1,3 @@ +plugins { + id 'groovy-gradle-plugin' +} diff --git a/buildSrc/src/main/groovy/brouter.application-conventions.gradle b/buildSrc/src/main/groovy/brouter.application-conventions.gradle new file mode 100644 index 0000000..da0466c --- /dev/null +++ b/buildSrc/src/main/groovy/brouter.application-conventions.gradle @@ -0,0 +1,8 @@ +plugins { + id 'application' + id 'brouter.java-conventions' +} + +application { + distTar.enabled = false +} diff --git a/buildSrc/src/main/groovy/brouter.java-conventions.gradle b/buildSrc/src/main/groovy/brouter.java-conventions.gradle new file mode 100644 index 0000000..390704a --- /dev/null +++ b/buildSrc/src/main/groovy/brouter.java-conventions.gradle @@ -0,0 +1,25 @@ +plugins { + id 'java' + id 'checkstyle' + id 'pmd' + id 'brouter.version-conventions' +} + +group 'org.btools' + +repositories { + mavenCentral() +} + +dependencies { + testImplementation 'junit:junit:4.13.2' +} + +pmd { + consoleOutput = true + toolVersion = '7.0.0' + rulesMinimumPriority = 5 + ruleSetFiles = files("${rootProject.rootDir}/config/pmd/pmd-ruleset.xml") + ruleSets = [] + // ignoreFailures = true +} diff --git a/buildSrc/src/main/groovy/brouter.library-conventions.gradle b/buildSrc/src/main/groovy/brouter.library-conventions.gradle new file mode 100644 index 0000000..3fd5d46 --- /dev/null +++ b/buildSrc/src/main/groovy/brouter.library-conventions.gradle @@ -0,0 +1,21 @@ +plugins { + id 'java-library' + id 'maven-publish' + id 'brouter.java-conventions' +} + +publishing { + repositories { + maven { + name = 'GitHubPackages' + url = uri("https://maven.pkg.github.com/$System.env.REPO") + credentials { + username = project.findProperty('gpr.user') ?: System.getenv('USERNAME') + password = project.findProperty('gpr.key') ?: System.getenv('TOKEN') + } + } + } + publications { + gpr(MavenPublication) + } +} diff --git a/buildSrc/src/main/groovy/brouter.version-conventions.gradle b/buildSrc/src/main/groovy/brouter.version-conventions.gradle new file mode 100644 index 0000000..bfc1cc1 --- /dev/null +++ b/buildSrc/src/main/groovy/brouter.version-conventions.gradle @@ -0,0 +1,7 @@ +// NOTE: +// there are four places to change the version number +// this file +// app: build.gradle (versionCode only) +// OsmTrack (version and versionDate) +// docs revisions.md (version and versionDate) +version '1.7.3' diff --git a/settings.gradle b/settings.gradle index eaa63a4..9bded48 100644 --- a/settings.gradle +++ b/settings.gradle @@ -1,7 +1,7 @@ rootProject.name='brouter' if (file('local.properties').exists()) { - include ':brouter-routing-app' + include ':brouter-routing-app' } else { println "Note: To include Android app add 'local.properties' with 'sdk.dir=...' " } -include ':brouter-mapaccess', ':brouter-core', ':brouter-util', ':brouter-expressions', ':brouter-codec', ':brouter-map-creator', ':brouter-server' \ No newline at end of file +include ':brouter-mapaccess', ':brouter-core', ':brouter-util', ':brouter-expressions', ':brouter-codec', ':brouter-map-creator', ':brouter-server'