Skip to content

Commit

Permalink
Align with latest Gradle guidance on sharing build logic between subp…
Browse files Browse the repository at this point in the history
…rojects
  • Loading branch information
vpavic committed Sep 14, 2020
1 parent 2c7d638 commit 7d69b1d
Show file tree
Hide file tree
Showing 15 changed files with 121 additions and 85 deletions.
3 changes: 1 addition & 2 deletions brisk-bearerauth-core/build.gradle
@@ -1,6 +1,5 @@
plugins {
id("java-library")
id("maven-publish")
id("bearerauth.library-conventions")
}

dependencies {
Expand Down
3 changes: 1 addition & 2 deletions brisk-bearerauth-servlet/build.gradle
@@ -1,6 +1,5 @@
plugins {
id("java-library")
id("maven-publish")
id("bearerauth.library-conventions")
}

dependencies {
Expand Down
3 changes: 1 addition & 2 deletions brisk-bearerauth-spring/build.gradle
@@ -1,6 +1,5 @@
plugins {
id("java-library")
id("maven-publish")
id("bearerauth.library-conventions")
}

java {
Expand Down
@@ -1,4 +1,5 @@
plugins {
id("bearerauth.java-conventions")
id("application")
}

Expand Down
@@ -1,4 +1,5 @@
plugins {
id("bearerauth.java-conventions")
id("application")
}

Expand Down
@@ -1,6 +1,7 @@
import org.springframework.boot.gradle.plugin.SpringBootPlugin

plugins {
id("bearerauth.java-conventions")
id("org.springframework.boot")
}

Expand Down
@@ -1,6 +1,7 @@
import org.springframework.boot.gradle.plugin.SpringBootPlugin

plugins {
id("bearerauth.java-conventions")
id("org.springframework.boot")
}

Expand Down
29 changes: 0 additions & 29 deletions 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()
}
}
7 changes: 7 additions & 0 deletions 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")

Expand All @@ -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 {
Expand Down
8 changes: 8 additions & 0 deletions buildSrc/gradle.lockfile
Expand Up @@ -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
33 changes: 33 additions & 0 deletions 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)
}
}
34 changes: 34 additions & 0 deletions 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
}
}
}
}
@@ -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<Project> {

@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"))));
}

}
@@ -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;
}

}
@@ -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"));
}

}

0 comments on commit 7d69b1d

Please sign in to comment.