Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/ci-build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,4 +19,4 @@ jobs:
java-version: 17
- name: Set up Gradle
uses: gradle/actions/setup-gradle@v5
- run: "./gradlew quickCheck"
- run: "./gradlew qualityCheck test"
152 changes: 85 additions & 67 deletions build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,42 +1,44 @@
plugins {
id("groovy")
id("gradlexbuild.lifecycle")
id("gradlexbuild.asciidoctor-conventions")
id("org.gradlex.internal.plugin-publish-conventions") version "0.6"
}
import java.net.URLClassLoader
import org.asciidoctor.gradle.base.AsciidoctorAttributeProvider

group = "org.gradlex"
version = "2.4"

java {
toolchain.languageVersion = JavaLanguageVersion.of(17)
}

tasks.withType<JavaCompile>().configureEach {
options.release = 8
}

tasks.withType<Javadoc>().configureEach {
options {
this as StandardJavadocDocletOptions
encoding = "UTF-8"
addStringOption("Xdoclint:all,-missing", "-quiet")
addStringOption("Xwerror", "-quiet")
publishingConventions {
pluginPortal("org.gradlex.jvm-dependency-conflict-resolution") {
implementationClass("org.gradlex.jvm.dependency.conflict.resolution.JvmDependencyConflictResolutionPlugin")
displayName("JVM Conflict Resolution Gradle Plugin")
description("Convenient dependency conflict management for Java projects.")
tags(
"dependency",
"dependencies",
"dependency-management",
"capabilities",
"java",
"logging",
"asm",
"bouncycastle",
"cglib",
"commons-io",
"dom4j",
"guava",
"hamcrest",
"javax",
"jakarta",
"junit",
"mysql",
"postgresql",
"stax",
"slf4j",
"log4j2",
"velocity",
"woodstox",
)
}
pluginPortal("org.gradlex.jvm-dependency-conflict-detection") {
implementationClass("org.gradlex.jvm.dependency.conflict.detection.JvmDependencyConflictDetectionPlugin")
displayName("JVM Conflict Detection Gradle Plugin")
description("Adds Capabilities to well-known Components hosted on Maven Central.")
}
}

val tagsList = listOf(
"dependency", "dependencies", "dependency-management", "capabilities", "java", "logging",
"asm", "bouncycastle", "cglib", "commons-io", "dom4j", "guava", "hamcrest", "javax", "jakarta", "junit",
"mysql", "postgresql", "stax", "slf4j", "log4j2", "velocity", "woodstox"
)

pluginPublishConventions {
id("org.gradlex.jvm-dependency-conflict-resolution")
implementationClass("org.gradlex.jvm.dependency.conflict.resolution.JvmDependencyConflictResolutionPlugin")
displayName("JVM Conflict Resolution Gradle Plugin")
description("Convenient dependency conflict management for Java projects.")
tags(*tagsList.toTypedArray())
gitHub("https://github.com/gradlex-org/jvm-dependency-conflict-resolution")
website("https://github.com/gradlex-org/jvm-dependency-conflict-resolution")
developer {
Expand All @@ -56,46 +58,62 @@ pluginPublishConventions {
}
}

gradlePlugin {
plugins {
create("jvm-dependency-conflict-detection") {
id = "org.gradlex.jvm-dependency-conflict-detection"
implementationClass = "org.gradlex.jvm.dependency.conflict.detection.JvmDependencyConflictDetectionPlugin"
displayName = "JVM Conflict Detection Gradle Plugin"
description = "Adds Capabilities to well-known Components hosted on Maven Central."
tags = tagsList
}
testingConventions { testGradleVersions("6.8.3", "6.9.4", "7.0.2", "8.0.2", "8.14.3") }

val generateCapabilitiesList =
tasks.register<CapabilityListing>("generateCapabilitiesList") {
pluginClasses.from(tasks.jar)
outputFile = layout.buildDirectory.file("generated/docs/asciidoc/parts/capabilities-listing.adoc")
}
}

dependencies {
testImplementation("org.gradle.exemplar:samples-check:1.0.3")
testImplementation("org.spockframework:spock-core:2.3-groovy-4.0")
testRuntimeOnly("org.junit.vintage:junit-vintage-engine")
tasks.asciidoctor {
dependsOn(generateCapabilitiesList)
attributeProviders += AsciidoctorAttributeProvider {
mapOf("capabilities-listing" to generateCapabilitiesList.get().outputFile.get().asFile.absolutePath)
}
}

testing.suites.named<JvmTestSuite>("test") {
useJUnitJupiter()
listOf("6.8.3", "6.9.4", "7.0.2", "8.0.2", "8.14.3").forEach { gradleVersionUnderTest ->
targets.register("test${gradleVersionUnderTest}") {
testTask {
group = LifecycleBasePlugin.VERIFICATION_GROUP
description = "Runs tests against Gradle $gradleVersionUnderTest"
useJUnitPlatform {
excludeTags("no-cross-version")
abstract class CapabilityListing : DefaultTask() {

@get:OutputFile abstract val outputFile: RegularFileProperty

@get:Classpath abstract val pluginClasses: ConfigurableFileCollection

@TaskAction
fun update() {
val classesUrls = pluginClasses.files.map { it.toURI().toURL() }
val loader =
URLClassLoader("pluginClasspath", classesUrls.toTypedArray(), ComponentMetadataRule::class.java.classLoader)
val definitions = loader.loadClass("org.gradlex.jvm.dependency.conflict.detection.rules.CapabilityDefinition")

val allCapabilities =
definitions.enumConstants
.map { rule ->
val capability = definitions.getDeclaredMethod("getCapability").invoke(rule) as String
val modules = definitions.getDeclaredMethod("getModules").invoke(rule) as List<*>

Pair(capability, modules)
}
systemProperty("gradleVersionUnderTest", gradleVersionUnderTest)
.sortedBy { it.first }

exclude("**/*SamplesTest.class") // Not yet cross-version ready
val capabilityList =
allCapabilities.joinToString("") { c ->
"* ${c.first}\n${c.second.joinToString("") { "** ${(it as String).asRepoLink()}\n" }}"
}

outputFile.get().asFile.also {
it.parentFile.mkdirs()
it.writeText(capabilityList)
}
}
targets.all {
testTask {
maxParallelForks = 4
inputs.dir(layout.projectDirectory.dir("samples"))
inputs.dir("src/docs/samples")
}
}

private fun String.asRepoLink() = "https://search.maven.org/artifact/${replace(":", "/")}[$this]"
}

// === the following custom configuration should be removed once tests are migrated to Java
apply(plugin = "groovy")

tasks.named<GroovyCompile>("compileTestGroovy") { targetCompatibility = "11" } // allow tests to run against 6.x

dependencies { testImplementation("org.spockframework:spock-core:2.3-groovy-4.0") } //
// ====================================================================================
23 changes: 0 additions & 23 deletions gradle/checkstyle/checkstyle.xml

This file was deleted.

15 changes: 0 additions & 15 deletions gradle/checkstyle/header.txt

This file was deleted.

1 change: 1 addition & 0 deletions gradle/gradle-daemon-jvm.properties
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
toolchainVersion=17
3 changes: 0 additions & 3 deletions gradle/plugins/build-lifecycle/build.gradle.kts

This file was deleted.

This file was deleted.

11 changes: 0 additions & 11 deletions gradle/plugins/build-parameters/build.gradle.kts

This file was deleted.

8 changes: 0 additions & 8 deletions gradle/plugins/documentation/build.gradle.kts

This file was deleted.

This file was deleted.

This file was deleted.

11 changes: 0 additions & 11 deletions gradle/plugins/settings.gradle.kts

This file was deleted.

Loading
Loading