diff --git a/brisk-bearerauth-core/build.gradle b/brisk-bearerauth-core/build.gradle index 0cbb1e9..3936b36 100644 --- a/brisk-bearerauth-core/build.gradle +++ b/brisk-bearerauth-core/build.gradle @@ -1,6 +1,5 @@ plugins { - id("java-library") - id("maven-publish") + id("bearerauth.library-conventions") } dependencies { diff --git a/brisk-bearerauth-servlet/build.gradle b/brisk-bearerauth-servlet/build.gradle index e5b2864..3cd4872 100644 --- a/brisk-bearerauth-servlet/build.gradle +++ b/brisk-bearerauth-servlet/build.gradle @@ -1,6 +1,5 @@ plugins { - id("java-library") - id("maven-publish") + id("bearerauth.library-conventions") } dependencies { diff --git a/brisk-bearerauth-spring/build.gradle b/brisk-bearerauth-spring/build.gradle index a50dc4e..9047ef9 100644 --- a/brisk-bearerauth-spring/build.gradle +++ b/brisk-bearerauth-spring/build.gradle @@ -1,6 +1,5 @@ plugins { - id("java-library") - id("maven-publish") + id("bearerauth.library-conventions") } java { diff --git a/brisk-bearerauth-tests/brisk-bearerauth-test-micronaut/build.gradle b/brisk-bearerauth-tests/brisk-bearerauth-test-micronaut/build.gradle index 74db3cb..165fbfc 100644 --- a/brisk-bearerauth-tests/brisk-bearerauth-test-micronaut/build.gradle +++ b/brisk-bearerauth-tests/brisk-bearerauth-test-micronaut/build.gradle @@ -1,4 +1,5 @@ plugins { + id("bearerauth.java-conventions") id("application") } diff --git a/brisk-bearerauth-tests/brisk-bearerauth-test-servlet/build.gradle b/brisk-bearerauth-tests/brisk-bearerauth-test-servlet/build.gradle index e080fb6..217a906 100644 --- a/brisk-bearerauth-tests/brisk-bearerauth-test-servlet/build.gradle +++ b/brisk-bearerauth-tests/brisk-bearerauth-test-servlet/build.gradle @@ -1,4 +1,5 @@ plugins { + id("bearerauth.java-conventions") id("application") } diff --git a/brisk-bearerauth-tests/brisk-bearerauth-test-spring-mvc/build.gradle b/brisk-bearerauth-tests/brisk-bearerauth-test-spring-mvc/build.gradle index 093fb30..aaebba2 100644 --- a/brisk-bearerauth-tests/brisk-bearerauth-test-spring-mvc/build.gradle +++ b/brisk-bearerauth-tests/brisk-bearerauth-test-spring-mvc/build.gradle @@ -1,6 +1,7 @@ import org.springframework.boot.gradle.plugin.SpringBootPlugin plugins { + id("bearerauth.java-conventions") id("org.springframework.boot") } diff --git a/brisk-bearerauth-tests/brisk-bearerauth-test-spring-webflux/build.gradle b/brisk-bearerauth-tests/brisk-bearerauth-test-spring-webflux/build.gradle index 73dc744..604da32 100644 --- a/brisk-bearerauth-tests/brisk-bearerauth-test-spring-webflux/build.gradle +++ b/brisk-bearerauth-tests/brisk-bearerauth-test-spring-webflux/build.gradle @@ -1,6 +1,7 @@ import org.springframework.boot.gradle.plugin.SpringBootPlugin plugins { + id("bearerauth.java-conventions") id("org.springframework.boot") } diff --git a/build.gradle b/build.gradle index dadcdfa..e69de29 100644 --- a/build.gradle +++ b/build.gradle @@ -1,29 +0,0 @@ -plugins { - id("base") -} - -allprojects { - group = "org.briskidentity.bearerauth" - - repositories { - mavenCentral() - } - - dependencyLocking { - lockAllConfigurations() - } -} - -subprojects { - apply(plugin: "java") - apply(plugin: "org.briskidentity.bearerauth.conventions") - - java { - sourceCompatibility = JavaVersion.VERSION_1_8 - } - - test { - maxHeapSize = "1g" - useJUnitPlatform() - } -} diff --git a/buildSrc/build.gradle b/buildSrc/build.gradle index 50d017b..2eb0124 100644 --- a/buildSrc/build.gradle +++ b/buildSrc/build.gradle @@ -1,4 +1,5 @@ apply(from: "$rootDir.parentFile/gradle/dependency-versions.gradle") +apply(plugin: "groovy-gradle-plugin") apply(plugin: "java-gradle-plugin") apply(plugin: "com.github.ben-manes.versions") @@ -9,6 +10,12 @@ repositories { dependencies { implementation("com.github.ben-manes:gradle-versions-plugin:$pluginVersions.versions") + + testImplementation(platform("org.junit:junit-bom:$testLibraryVersions.junit")) + testImplementation("org.assertj:assertj-core:$testLibraryVersions.assertj") + testImplementation("org.junit.jupiter:junit-jupiter-api") + + testRuntimeOnly("org.junit.jupiter:junit-jupiter-engine") } dependencyLocking { diff --git a/buildSrc/gradle.lockfile b/buildSrc/gradle.lockfile index 3ad2c5f..84e085d 100644 --- a/buildSrc/gradle.lockfile +++ b/buildSrc/gradle.lockfile @@ -3,6 +3,14 @@ # This file is expected to be part of source control. com.github.ben-manes:gradle-versions-plugin:0.29.0=compileClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath com.thoughtworks.xstream:xstream:1.4.10=runtimeClasspath,testRuntimeClasspath +org.apiguardian:apiguardian-api:1.1.0=testCompileClasspath,testRuntimeClasspath +org.assertj:assertj-core:3.17.2=testCompileClasspath,testRuntimeClasspath +org.junit.jupiter:junit-jupiter-api:5.6.2=testCompileClasspath,testRuntimeClasspath +org.junit.jupiter:junit-jupiter-engine:5.6.2=testRuntimeClasspath +org.junit.platform:junit-platform-commons:1.6.2=testCompileClasspath,testRuntimeClasspath +org.junit.platform:junit-platform-engine:1.6.2=testRuntimeClasspath +org.junit:junit-bom:5.6.2=testCompileClasspath,testRuntimeClasspath +org.opentest4j:opentest4j:1.2.0=testCompileClasspath,testRuntimeClasspath xmlpull:xmlpull:1.1.3.1=runtimeClasspath,testRuntimeClasspath xpp3:xpp3_min:1.1.4c=runtimeClasspath,testRuntimeClasspath empty=annotationProcessor,testAnnotationProcessor diff --git a/buildSrc/src/main/groovy/bearerauth.java-conventions.gradle b/buildSrc/src/main/groovy/bearerauth.java-conventions.gradle new file mode 100644 index 0000000..798d40a --- /dev/null +++ b/buildSrc/src/main/groovy/bearerauth.java-conventions.gradle @@ -0,0 +1,33 @@ +import static org.briskidentity.bearerauth.build.DependencyVersionHelper.isStable; + +plugins { + id("java") + id("com.github.ben-manes.versions") + id("org.briskidentity.bearerauth.conventions") +} + +//apply(from: "gradle/dependency-versions.gradle") + +repositories { + mavenCentral() +} + +dependencyLocking { + lockAllConfigurations() +} + +java { + sourceCompatibility = JavaVersion.VERSION_1_8 +} + +test { + maxHeapSize = "1g" + useJUnitPlatform() +} + +dependencyUpdates { + gradleReleaseChannel = "current" + rejectVersionIf { + isStable(it.currentVersion) && !isStable(it.candidate.version) + } +} diff --git a/buildSrc/src/main/groovy/bearerauth.library-conventions.gradle b/buildSrc/src/main/groovy/bearerauth.library-conventions.gradle new file mode 100644 index 0000000..6a1f495 --- /dev/null +++ b/buildSrc/src/main/groovy/bearerauth.library-conventions.gradle @@ -0,0 +1,34 @@ +plugins { + id("bearerauth.java-conventions") + id("java-library") + id("maven-publish") +} + +group = "org.briskidentity.bearerauth" + +java { + withJavadocJar() + withSourcesJar() +} + +publishing { + publications { + mavenJava(MavenPublication) { + from(components.java) + pom { + licenses { + license { + name = "The Apache License, Version 2.0" + url = "https://www.apache.org/licenses/LICENSE-2.0.txt" + } + } + scm { + connection = "scm:git:git://github.com:briskidentity/brisk-bearerauth.git" + developerConnection = "scm:git:ssh://git@github.com:briskidentity/brisk-bearerauth.git" + url = "https://github.com/briskidentity/brisk-bearerauth" + } + // TODO customize POM + } + } + } +} diff --git a/buildSrc/src/main/java/org/briskidentity/bearerauth/build/ConventionsPlugin.java b/buildSrc/src/main/java/org/briskidentity/bearerauth/build/ConventionsPlugin.java index f5f3da5..f39a917 100644 --- a/buildSrc/src/main/java/org/briskidentity/bearerauth/build/ConventionsPlugin.java +++ b/buildSrc/src/main/java/org/briskidentity/bearerauth/build/ConventionsPlugin.java @@ -1,66 +1,19 @@ package org.briskidentity.bearerauth.build; -import com.github.benmanes.gradle.versions.VersionsPlugin; -import com.github.benmanes.gradle.versions.updates.DependencyUpdatesTask; import org.gradle.api.Plugin; import org.gradle.api.Project; import org.gradle.api.plugins.JavaPlugin; -import org.gradle.api.plugins.JavaPluginExtension; -import org.gradle.api.publish.PublishingExtension; -import org.gradle.api.publish.maven.MavenPom; -import org.gradle.api.publish.maven.MavenPublication; -import org.gradle.api.publish.maven.plugins.MavenPublishPlugin; import javax.annotation.Nonnull; import java.io.File; -import java.util.regex.Pattern; -import java.util.stream.Stream; -@SuppressWarnings("unused") +@Deprecated public class ConventionsPlugin implements Plugin { @Override public void apply(@Nonnull Project project) { - applyJavaConventions(project); - applyMavenPublishConventions(project); - } - - private void applyJavaConventions(Project project) { - project.getPlugins().withType(JavaPlugin.class, javaPlugin -> { - project.apply(action -> action.from(new File(project.getRootDir(), "gradle/dependency-versions.gradle"))); - project.getPluginManager().apply(VersionsPlugin.class); - project.getTasks().withType(DependencyUpdatesTask.class, dependencyUpdatesTask -> { - dependencyUpdatesTask.setGradleReleaseChannel("current"); - dependencyUpdatesTask.rejectVersionIf(candidate -> isNonStable(candidate.getCandidate().getVersion()) - && !isNonStable(candidate.getCurrentVersion())); - }); - }); - } - - private static boolean isNonStable(String version) { - boolean containsStableKeyword = Stream.of("RELEASE", "FINAL", "GA") - .anyMatch(s -> version.toUpperCase().contains(s)); - boolean isStableVersion = Pattern.compile("^[0-9,.v-]+(-r)?$").matcher(version).matches(); - return !containsStableKeyword && !isStableVersion; - } - - @SuppressWarnings("UnstableApiUsage") - private void applyMavenPublishConventions(Project project) { - project.getPlugins().withType(MavenPublishPlugin.class, mavenPublishPlugin -> { - PublishingExtension publishingExtension = project.getExtensions().getByType(PublishingExtension.class); - MavenPublication mavenPublication = publishingExtension.getPublications().create("maven", - MavenPublication.class); - MavenPom pom = mavenPublication.getPom(); - // TODO customize POM - project.getPlugins().withType(JavaPlugin.class, javaPlugin -> { - project.getComponents().matching((component) -> component.getName().equals("java")) - .all(mavenPublication::from); - JavaPluginExtension javaPluginExtension = project.getExtensions().getByType(JavaPluginExtension.class); - javaPluginExtension.withJavadocJar(); - javaPluginExtension.withSourcesJar(); - }); - }); - + project.getPlugins().withType(JavaPlugin.class, javaPlugin -> project.apply( + action -> action.from(new File(project.getRootDir(), "gradle/dependency-versions.gradle")))); } } diff --git a/buildSrc/src/main/java/org/briskidentity/bearerauth/build/DependencyVersionHelper.java b/buildSrc/src/main/java/org/briskidentity/bearerauth/build/DependencyVersionHelper.java new file mode 100644 index 0000000..e5798ec --- /dev/null +++ b/buildSrc/src/main/java/org/briskidentity/bearerauth/build/DependencyVersionHelper.java @@ -0,0 +1,15 @@ +package org.briskidentity.bearerauth.build; + +import java.util.regex.Pattern; +import java.util.stream.Stream; + +public class DependencyVersionHelper { + + public static boolean isStable(String version) { + boolean isStableVersion = Pattern.compile("^[0-9,.v-]+(-r)?$").matcher(version).matches(); + boolean containsStableKeyword = Stream.of("RELEASE", "FINAL", "GA") + .anyMatch(s -> version.toUpperCase().contains(s)); + return isStableVersion || containsStableKeyword; + } + +} diff --git a/buildSrc/src/test/java/org/briskidentity/bearerauth/build/DependencyVersionHelperTests.java b/buildSrc/src/test/java/org/briskidentity/bearerauth/build/DependencyVersionHelperTests.java new file mode 100644 index 0000000..f5d40bc --- /dev/null +++ b/buildSrc/src/test/java/org/briskidentity/bearerauth/build/DependencyVersionHelperTests.java @@ -0,0 +1,14 @@ +package org.briskidentity.bearerauth.build; + +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.assertTrue; + +class DependencyVersionHelperTests { + + @Test + void isStable() { + assertTrue(DependencyVersionHelper.isStable("1.0.0")); + } + +}