Skip to content

Commit

Permalink
Add Convention Plugins for Java Modules
Browse files Browse the repository at this point in the history
  • Loading branch information
jjohannes committed Oct 18, 2024
1 parent 6e1fdd6 commit 7a73ff3
Show file tree
Hide file tree
Showing 22 changed files with 183 additions and 237 deletions.
21 changes: 21 additions & 0 deletions .github/workflows/build.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -40,3 +40,24 @@ jobs:
projectName: "gradle-project-setup-howto"
projectVersion: ${{ github.ref_name }}
autoCreate: true

package:
needs: gradle-build
strategy:
matrix:
os: [ubuntu-22.04, windows-2022, macos-13, macos-14]
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v4
- uses: actions/setup-java@v4
with:
distribution: temurin
java-version-file: gradle/jdk-version.txt
- uses: gradle/actions/setup-gradle@v3
with:
cache-read-only: false
- run: "./gradlew assemble${{ matrix.os }}"
- uses: actions/upload-artifact@v4
with:
name: Application Package ${{ matrix.os }}
path: app/build/packages/*/*
Binary file added app/src/main/resourcesPackage/linux/icon.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added app/src/main/resourcesPackage/macos/icon.icns
Binary file not shown.
Binary file added app/src/main/resourcesPackage/windows/icon.ico
Binary file not shown.
56 changes: 0 additions & 56 deletions gradle/libs.versions.toml

This file was deleted.

3 changes: 3 additions & 0 deletions gradle/modules.properties
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# override defaults as there are multiple options
jakarta.activation=com.sun.activation:jakarta.activation
jakarta.mail=com.sun.mail:jakarta.mail
4 changes: 4 additions & 0 deletions gradle/plugins/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,10 @@ dependencies {
implementation("com.gradle:develocity-gradle-plugin:3.18.1")
implementation("io.fuchs.gradle.classpath-collision-detector:classpath-collision-detector:1.0.0")
implementation("org.cyclonedx:cyclonedx-gradle-plugin:1.10.0")
implementation("org.gradlex:extra-java-module-info:1.9")
implementation("org.gradlex:java-module-dependencies:1.7")
implementation("org.gradlex:java-module-packaging:0.1")
implementation("org.gradlex:java-module-testing:1.4")
implementation("org.gradlex:jvm-dependency-conflict-resolution:2.1.2")
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,5 @@
plugins { id("org.gradle.base") }

// Set the group required to refer to a Module "from outside".
// I.e., when it is published or used in Included Builds.
group = "org.example.product.java"

// Set the version from 'version.txt'
version = providers.fileContents(isolated.rootProject.projectDirectory.file("gradle/version.txt")).asText.getOrElse("")

Expand All @@ -16,5 +12,5 @@ if (providers.environmentVariable("CI").getOrElse("false").toBoolean()) {
.asText
.get()
.trim()
version = "$version-$gitCommitTimestamp"
version = "$version.$gitCommitTimestamp"
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
plugins { id("org.gradlex.extra-java-module-info") }

extraJavaModuleInfo {
failOnAutomaticModules = true

module("com.github.virtuald:curvesapi", "com.github.virtuald.curvesapi")
module("com.google.code.findbugs:jsr305", "javax.annotations.jsr305")
module("com.google.errorprone:error_prone_annotations", "com.google.errorprone.annotations")
module("com.google.guava:failureaccess", "com.google.common.internal.failureaccess")
module("com.google.guava:guava", "com.google.common")
module("com.zaxxer:SparseBitSet", "SparseBitSet")
module("commons-codec:commons-codec", "org.apache.commons.codec")
module("commons-io:commons-io", "org.apache.commons.io")
module("org.apache.commons:commons-collections4", "org.apache.commons.collections4")
module("org.apache.commons:commons-compress", "org.apache.commons.compress")
module("org.apache.commons:commons-lang3", "org.apache.commons.lang3")
module("org.apache.commons:commons-math3", "commons.math3")
module("org.apache.velocity:velocity-engine-core", "velocity.engine.core")
module("org.hamcrest:hamcrest-core", "org.hamcrest.core")
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
import com.autonomousapps.DependencyAnalysisSubExtension
import com.autonomousapps.tasks.ProjectHealthTask
import org.gradlex.javamodule.dependencies.tasks.ModuleDirectivesScopeCheck

plugins {
id("org.gradle.java")
Expand All @@ -8,15 +7,12 @@ plugins {
id("org.example.gradle.base.lifecycle")
}

// Configure the dependency analysis plugin to fail if issues are found
configure<DependencyAnalysisSubExtension> { issues { onAny { severity("fail") } } }

tasks.named("qualityCheck") {
dependsOn(tasks.detectCollisions)
dependsOn(tasks.withType<ProjectHealthTask>())
dependsOn(tasks.withType<ModuleDirectivesScopeCheck>())
}

tasks.named("qualityGate") {
dependsOn(tasks.detectCollisions)
dependsOn(tasks.withType<ProjectHealthTask>())
dependsOn(tasks.withType<ModuleDirectivesScopeCheck>())
}
Original file line number Diff line number Diff line change
@@ -1,16 +1,9 @@
import org.example.gradle.spotless.SortDependenciesStep

plugins {
id("com.diffplug.spotless")
id("org.example.gradle.base.lifecycle")
}

spotless {
kotlinGradle {
ktfmt().kotlinlangStyle().configure { it.setMaxWidth(500) }
addStep(SortDependenciesStep.create())
}
}
spotless { kotlinGradle { ktfmt().kotlinlangStyle().configure { it.setMaxWidth(500) } } }

tasks.named("qualityCheck") { dependsOn(tasks.spotlessCheck) }

Expand Down
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
import org.example.gradle.spotless.SortDependenciesStep

plugins {
id("com.diffplug.spotless")
id("org.example.gradle.base.lifecycle")
Expand All @@ -9,6 +11,7 @@ spotless {
removeUnusedImports()
cleanthat()
palantirJavaFormat()
addStep(SortDependenciesStep.create())
}
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
plugins {
id("org.gradle.application")
id("org.example.gradle.base.dependency-rules")
id("org.example.gradle.base.module-system-rules")
id("org.example.gradle.base.identity")
id("org.example.gradle.base.lifecycle")
id("org.example.gradle.check.dependencies")
Expand All @@ -9,6 +10,7 @@ plugins {
id("org.example.gradle.feature.checksum")
id("org.example.gradle.feature.compile-java")
id("org.example.gradle.feature.javadoc")
id("org.example.gradle.feature.jpackage")
id("org.example.gradle.feature.test")
id("org.example.gradle.feature.test-end-to-end")
id("org.example.gradle.feature.war")
Expand Down
Original file line number Diff line number Diff line change
@@ -1,12 +1,14 @@
plugins {
id("org.gradle.java-library")
id("org.example.gradle.base.dependency-rules")
id("org.example.gradle.base.module-system-rules")
id("org.example.gradle.base.identity")
id("org.example.gradle.base.lifecycle")
id("org.example.gradle.check.dependencies")
id("org.example.gradle.check.format-gradle")
id("org.example.gradle.check.format-java")
id("org.example.gradle.feature.compile-java")
id("org.example.gradle.feature.javadoc")
id("org.example.gradle.feature.jpackage")
id("org.example.gradle.feature.test")
}
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ tasks.withType<JavaCompile>().configureEach {
encoding = "UTF-8"
compilerArgs.add("-implicit:none")
compilerArgs.add("-Werror")
compilerArgs.add("-Xlint:all,-serial")
compilerArgs.add("-Xlint:all,-serial,-exports")
}
}

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
plugins { id("org.gradlex.java-module-packaging") }

// Multi target support and packaging
javaModulePackaging {
target("ubuntu-22.04") {
operatingSystem = OperatingSystemFamily.LINUX
architecture = MachineArchitecture.X86_64
packageTypes = listOf("deb")
}
target("macos-13") {
operatingSystem = OperatingSystemFamily.MACOS
architecture = MachineArchitecture.X86_64
packageTypes = listOf("dmg")
}
target("macos-14") {
operatingSystem = OperatingSystemFamily.MACOS
architecture = MachineArchitecture.ARM64
packageTypes = listOf("dmg")
}
target("windows-2022") {
operatingSystem = OperatingSystemFamily.WINDOWS
architecture = MachineArchitecture.X86_64
packageTypes = listOf("exe")
}

primaryTarget(target("macos-14"))
}
Original file line number Diff line number Diff line change
@@ -1,18 +1,18 @@
// Include all subfolders that contain a 'build.gradle.kts' as subprojects
rootDir
.listFiles()
?.filter { File(it, "build.gradle.kts").exists() }
?.forEach { subproject -> include(subproject.name) }
import org.gradlex.javamodule.dependencies.initialization.JavaModulesExtension

// Platform project
include(":versions")
plugins { id("org.gradlex.java-module-dependencies") }

project(":versions").projectDir = file("gradle/versions")
configure<JavaModulesExtension> {
directory(".") {
// Set the group required to refer to a Module "from outside".
// I.e., when it is published or used in Included Builds.
group = "org.example.product.javamodules"
}
versions("gradle/versions")

// Aggregation and analysis project to create reports about the whole software (coverage, SBOM, ...)
include(":aggregation")

project(":aggregation").projectDir = file("gradle/aggregation")
// Analysis project to create reports about the whole software (coverage, SBOM, ...)
module("gradle/aggregation")
}

// Allow local projects to be referred to by accessor
enableFeaturePreview("TYPESAFE_PROJECT_ACCESSORS")
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
plugins {
id("org.gradle.jacoco") // Record test coverage data during test execution
id("org.gradle.java")
id("org.gradlex.java-module-testing")
}

testing.suites.named<JvmTestSuite>("test") {
Expand Down

This file was deleted.

Loading

0 comments on commit 7a73ff3

Please sign in to comment.