Skip to content

Commit

Permalink
feat: avoid dependency automatic injection (#200)
Browse files Browse the repository at this point in the history
* feat: avoid automatic production dependency injection

* Load versions from catalog
  • Loading branch information
ndr-brt committed Dec 11, 2023
1 parent 3cf93ea commit 188d2d6
Show file tree
Hide file tree
Showing 9 changed files with 108 additions and 131 deletions.
24 changes: 12 additions & 12 deletions DEPENDENCIES
Original file line number Diff line number Diff line change
Expand Up @@ -67,9 +67,9 @@ maven/mavencentral/javax.mail/mailapi/1.4.3, CDDL-1.0 OR GPL-2.0-only WITH Class
maven/mavencentral/javax.validation/validation-api/1.1.0.Final, Apache-2.0, approved, CQ15114
maven/mavencentral/javax.validation/validation-api/2.0.0.Final, Apache-2.0, approved, CQ15302
maven/mavencentral/joda-time/joda-time/2.9.7, Apache-2.0, approved, CQ11988
maven/mavencentral/net.bytebuddy/byte-buddy-agent/1.14.1, Apache-2.0, approved, #7164
maven/mavencentral/net.bytebuddy/byte-buddy/1.12.10, Apache-2.0 AND BSD-3-Clause, approved, #1811
maven/mavencentral/net.bytebuddy/byte-buddy/1.14.1, Apache-2.0 AND BSD-3-Clause, approved, #7163
maven/mavencentral/net.bytebuddy/byte-buddy-agent/1.14.10, Apache-2.0, approved, #7164
maven/mavencentral/net.bytebuddy/byte-buddy/1.12.21, Apache-2.0 AND BSD-3-Clause, approved, #1811
maven/mavencentral/net.bytebuddy/byte-buddy/1.14.10, Apache-2.0 AND BSD-3-Clause, approved, #7163
maven/mavencentral/net.sf.jopt-simple/jopt-simple/5.0.3, MIT, approved, CQ13174
maven/mavencentral/net.sf.saxon/Saxon-HE/10.6, MPL-2.0 AND W3C, approved, #7945
maven/mavencentral/net.steppschuh.markdowngenerator/markdowngenerator/1.3.1.1, Apache-2.0, approved, clearlydefined
Expand All @@ -80,7 +80,7 @@ maven/mavencentral/org.apache.commons/commons-lang3/3.7, Apache-2.0, approved, c
maven/mavencentral/org.apache.httpcomponents/httpclient/4.5.2, Apache-2.0, approved, CQ11713
maven/mavencentral/org.apache.httpcomponents/httpcore/4.4.4, Apache-2.0, approved, CQ11716
maven/mavencentral/org.apiguardian/apiguardian-api/1.1.2, Apache-2.0, approved, clearlydefined
maven/mavencentral/org.assertj/assertj-core/3.23.1, Apache-2.0, approved, clearlydefined
maven/mavencentral/org.assertj/assertj-core/3.24.2, Apache-2.0, approved, #6161
maven/mavencentral/org.checkerframework/checker-compat-qual/2.5.2, GPL-2.0-only with Classpath-Exception-2.0, approved, #11598
maven/mavencentral/org.checkerframework/checker-qual/3.12.0, MIT, approved, clearlydefined
maven/mavencentral/org.codehaus.mojo/animal-sniffer-annotations/1.17, MIT, approved, clearlydefined
Expand All @@ -100,16 +100,16 @@ maven/mavencentral/org.jetbrains.kotlin/kotlin-stdlib/1.4.20, Apache-2.0, approv
maven/mavencentral/org.jetbrains/annotations/13.0, Apache-2.0, approved, clearlydefined
maven/mavencentral/org.jetbrains/annotations/24.0.1, Apache-2.0, approved, #7417
maven/mavencentral/org.jetbrains/annotations/24.1.0, Apache-2.0, approved, clearlydefined
maven/mavencentral/org.junit.jupiter/junit-jupiter-api/5.9.2, EPL-2.0, approved, #3133
maven/mavencentral/org.junit.jupiter/junit-jupiter-engine/5.9.2, EPL-2.0, approved, #3125
maven/mavencentral/org.junit.jupiter/junit-jupiter-params/5.9.2, EPL-2.0, approved, #3134
maven/mavencentral/org.junit.platform/junit-platform-commons/1.9.2, EPL-2.0, approved, #3130
maven/mavencentral/org.junit.platform/junit-platform-engine/1.9.2, EPL-2.0, approved, #3128
maven/mavencentral/org.junit/junit-bom/5.9.2, EPL-2.0, approved, #4711
maven/mavencentral/org.mockito/mockito-core/5.2.0, MIT AND (Apache-2.0 AND MIT) AND Apache-2.0, approved, #7401
maven/mavencentral/org.junit.jupiter/junit-jupiter-api/5.10.1, EPL-2.0, approved, #9714
maven/mavencentral/org.junit.jupiter/junit-jupiter-engine/5.10.1, EPL-2.0, approved, #9711
maven/mavencentral/org.junit.jupiter/junit-jupiter-params/5.10.1, EPL-2.0, approved, #9708
maven/mavencentral/org.junit.platform/junit-platform-commons/1.10.1, EPL-2.0, approved, #9715
maven/mavencentral/org.junit.platform/junit-platform-engine/1.10.1, EPL-2.0, approved, #9709
maven/mavencentral/org.junit/junit-bom/5.10.1, EPL-2.0, approved, #9844
maven/mavencentral/org.mockito/mockito-core/5.8.0, MIT AND (Apache-2.0 AND MIT) AND Apache-2.0, approved, #11787
maven/mavencentral/org.mozilla/rhino/1.7R4, MPL-2.0 AND BSD-3-Clause AND ISC, approved, CQ16320
maven/mavencentral/org.objenesis/objenesis/3.3, Apache-2.0, approved, clearlydefined
maven/mavencentral/org.opentest4j/opentest4j/1.2.0, Apache-2.0, approved, clearlydefined
maven/mavencentral/org.opentest4j/opentest4j/1.3.0, Apache-2.0, approved, #9713
maven/mavencentral/org.ow2.asm/asm-analysis/9.2, BSD-3-Clause, approved, clearlydefined
maven/mavencentral/org.ow2.asm/asm-commons/9.2, BSD-3-Clause, approved, clearlydefined
maven/mavencentral/org.ow2.asm/asm-tree/9.2, BSD-3-Clause, approved, clearlydefined
Expand Down
2 changes: 2 additions & 0 deletions build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
import java.nio.file.Paths

plugins {
// Apply the Java Gradle plugin development plugin to add support for developing Gradle plugins
checkstyle
Expand Down
32 changes: 32 additions & 0 deletions buildSrc/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
import java.nio.file.Files

plugins {
`java-gradle-plugin`
}
Expand Down Expand Up @@ -39,10 +41,13 @@ gradlePlugin {
}
}

val generatedSourcesFolder = buildDir.resolve("generated").resolve("sources");

sourceSets {
main {
java {
srcDirs(
generatedSourcesFolder,
"../plugins/autodoc/autodoc-plugin/src/main",
"../plugins/autodoc/autodoc-converters/src/main",
"../plugins/edc-build/src/main",
Expand All @@ -53,3 +58,30 @@ sourceSets {
}
}
}

val createVersions = tasks.register("createVersions") {
val folder = generatedSourcesFolder.resolve("java")
.resolve("org").resolve("eclipse").resolve("edc").resolve("plugins")
.resolve("edcbuild")
folder.mkdirs()

versionCatalogs.find("libs")
.ifPresent { catalog ->
val head = "package org.eclipse.edc.plugins.edcbuild;\npublic interface Versions {\n"
val tail = "\n}";

val constants = listOf("jupiter", "mockito", "assertj")
.mapNotNull { name ->
catalog.findVersion(name)
.map { version -> " String %s = \"%s\";".format(name.toUpperCase(), version) }
.orElse(null)
}
.joinToString("\n", head, tail)

Files.writeString(folder.resolve("Versions.java").toPath(), constants)
}
}

tasks.compileJava {
dependsOn(createVersions)
}
2 changes: 2 additions & 0 deletions docs/developer/README.md
Original file line number Diff line number Diff line change
@@ -1 +1,3 @@
# Developer Documentation

- [Autodoc](autodoc.md)
6 changes: 6 additions & 0 deletions gradle/libs.versions.toml
Original file line number Diff line number Diff line change
Expand Up @@ -2,18 +2,24 @@
format.version = "1.1"

[versions]
assertj = "3.24.2"
edc = "0.4.2-SNAPSHOT"
jackson = "2.16.0"
jetbrainsAnnotation = "24.0.1"
jupiter = "5.10.1"
mockito = "5.8.0"

[libraries]
assertj-core = { module = "org.assertj:assertj-core", version.ref = "assertj" }
edc-runtime-metamodel = { module = "org.eclipse.edc:runtime-metamodel", version.ref = "edc" }
jackson-annotations = { module = "com.fasterxml.jackson.core:jackson-annotations", version.ref = "jackson" }
jackson-core = { module = "com.fasterxml.jackson.core:jackson-core", version.ref = "jackson" }
jackson-databind = { module = "com.fasterxml.jackson.core:jackson-databind", version.ref = "jackson" }
jackson-dataformat-xml = { module = "com.fasterxml.jackson.dataformat:jackson-dataformat-xml", version.ref = "jackson" }
jackson-datatypeJsr310 = { module = "com.fasterxml.jackson.datatype:jackson-datatype-jsr310", version.ref = "jackson" }
jetbrains-annotations = { module = "org.jetbrains:annotations", version.ref = "jetbrainsAnnotation" }
jupiter-engine = { module = "org.junit.jupiter:junit-jupiter-engine", version.ref = "jupiter" }
mockito-core = { module = "org.mockito:mockito-core", version.ref = "mockito" }
plugin-checksum = { module = "gradle.plugin.org.gradle.crypto:checksum", version = "1.4.0" }
plugin-nexus-publish = { module = "io.github.gradle-nexus:publish-plugin", version = "1.3.0" }
plugin-openapi-merger = { module = "com.rameshkp:openapi-merger-gradle-plugin", version = "1.0.5" }
Expand Down
8 changes: 8 additions & 0 deletions plugins/edc-build/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -45,3 +45,11 @@ gradlePlugin {
}
}
}

sourceSets {
main {
java {
srcDir(rootDir.resolve("buildSrc").resolve("build").resolve("generated").resolve("sources"))
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ public static EdcConvention repositories() {
}

public static EdcConvention defaultDependencies() {
return new DefaultDependencyConvention();
return new DefaultTestDependencyConvention();
}

public static EdcConvention mavenPom() {
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
/*
* Copyright (c) 2022 Microsoft Corporation
*
* This program and the accompanying materials are made available under the
* terms of the Apache License, Version 2.0 which is available at
* https://www.apache.org/licenses/LICENSE-2.0
*
* SPDX-License-Identifier: Apache-2.0
*
* Contributors:
* Microsoft Corporation - initial API and implementation
*
*/

package org.eclipse.edc.plugins.edcbuild.conventions;

import org.eclipse.edc.plugins.edcbuild.Versions;
import org.gradle.api.Project;

import static java.lang.String.format;
import static org.gradle.api.plugins.JavaPlugin.TEST_IMPLEMENTATION_CONFIGURATION_NAME;
import static org.gradle.api.plugins.JavaPlugin.TEST_RUNTIME_ONLY_CONFIGURATION_NAME;

/**
* Applies default test dependencies to all "java-library" projects: JUnit, Mockito and AssertJ in their respective
* configurations.
*/
class DefaultTestDependencyConvention implements EdcConvention {

@Override
public void apply(Project target) {
target.getPluginManager().withPlugin("java-library", plugin -> {

var d = target.getDependencies();

//test classpath dependencies
d.add(TEST_IMPLEMENTATION_CONFIGURATION_NAME, format("org.junit.jupiter:junit-jupiter-api:%s", Versions.JUPITER));
d.add(TEST_IMPLEMENTATION_CONFIGURATION_NAME, format("org.junit.jupiter:junit-jupiter-params:%s", Versions.JUPITER));
d.add(TEST_RUNTIME_ONLY_CONFIGURATION_NAME, format("org.junit.jupiter:junit-jupiter-engine:%s", Versions.JUPITER));
d.add(TEST_IMPLEMENTATION_CONFIGURATION_NAME, format("org.mockito:mockito-core:%s", Versions.MOCKITO));
d.add(TEST_IMPLEMENTATION_CONFIGURATION_NAME, format("org.assertj:assertj-core:%s", Versions.ASSERTJ));
});
}

}

0 comments on commit 188d2d6

Please sign in to comment.