diff --git a/build.gradle.kts b/build.gradle.kts index 2c0b6c997..477ef0612 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -31,9 +31,6 @@ import com.google.protobuf.gradle.generateProtoTasks import com.google.protobuf.gradle.id import com.google.protobuf.gradle.protobuf import com.google.protobuf.gradle.protoc -import io.spine.internal.dependency.ErrorProne -import io.spine.internal.dependency.JUnit -import io.spine.internal.dependency.Protobuf import io.spine.internal.gradle.publish.PublishingRepos import io.spine.internal.gradle.applyGitHubPackages import io.spine.internal.gradle.applyStandard @@ -52,12 +49,10 @@ import io.spine.internal.gradle.test.registerTestTasks import org.jetbrains.kotlin.gradle.tasks.KotlinCompile buildscript { - apply(from = "$rootDir/version.gradle.kts") - io.spine.internal.gradle.doApplyStandard(repositories) - io.spine.internal.gradle.doForceVersions(configurations) + io.spine.internal.gradle.doForceVersions(configurations, libs) - val mcJavaVersion: String by extra + val mcJavaVersion = "2.0.0-SNAPSHOT.83" dependencies { classpath("io.spine.tools:spine-mc-java:$mcJavaVersion") } @@ -75,8 +70,13 @@ plugins { idea `project-report` - id(io.spine.internal.dependency.Protobuf.GradlePlugin.id) - id(io.spine.internal.dependency.ErrorProne.GradlePlugin.id) + // As for now, Gradle doesn't provide API for applying plugins without version. + // This is why we resolve a provider by `get()`. + // + // See a feature request: https://github.com/gradle/gradle/issues/17968 + + id(libs.plugins.protobuf.get().pluginId) + id(libs.plugins.errorProne.get().pluginId) } spinePublishing { @@ -91,27 +91,33 @@ spinePublishing { cloudArtifactRegistry ) } - dokkaJar { enabled = true } } allprojects { - apply(from = "$rootDir/version.gradle.kts") + + // Due to a bug, we can't apply scripts. + // See: https://github.com/gradle/gradle/issues/20717 + + /** Versions of the Spine libraries that `time` depends on. */ + extra["spineBaseVersion"] = "2.0.0-SNAPSHOT.91" + extra["javadocToolsVersion"] = "2.0.0-SNAPSHOT.75" + + /** The version of this library. */ + val versionToPublish by extra("2.0.0-SNAPSHOT.93") group = "io.spine" - version = extra["versionToPublish"]!! + version = versionToPublish } subprojects { - apply { plugin("java-library") plugin("kotlin") plugin("com.google.protobuf") plugin("net.ltgt.errorprone") - plugin("pmd") plugin("checkstyle") plugin("idea") plugin("pmd-settings") @@ -126,11 +132,18 @@ subprojects { val spineBaseVersion: String by extra dependencies { - errorprone(ErrorProne.core) - api(kotlin("stdlib-jdk8")) + + // Gradle discourages cross-configuration of projects. + // Thus, the direct access to `libs` in `allprojects` and `subprojects` + // blocks is unavailable. But we still can use it from `rootProject`. + // + // See the closed issue: https://github.com/gradle/gradle/issues/16634 + + errorprone(rootProject.libs.errorProne.core) + api(rootProject.libs.kotlin.stdLib.jdk8) testImplementation("io.spine.tools:spine-testlib:$spineBaseVersion") - testImplementation(JUnit.runner) + testImplementation(rootProject.libs.junit.runner) } /** @@ -138,7 +151,7 @@ subprojects { * [com.google.errorprone.bugpatterns.CheckReturnValue] was removed leading to breaking the API. */ configurations { - forceVersions() + forceVersions(rootProject.libs) all { resolutionStrategy { force( @@ -199,7 +212,7 @@ subprojects { protobuf { generatedFilesBaseDir = generatedRootDir protoc { - artifact = Protobuf.compiler + artifact = rootProject.libs.protobuf.compiler.get().toString() } generateProtoTasks { all().forEach { task -> diff --git a/buildSrc/build.gradle.kts b/buildSrc/build.gradle.kts index 79d04a938..49d711725 100644 --- a/buildSrc/build.gradle.kts +++ b/buildSrc/build.gradle.kts @@ -24,126 +24,46 @@ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -/** - * This script uses two declarations of the constant [licenseReportVersion] because - * currently there is no way to define a constant _before_ a build script of `buildSrc`. - * We cannot use imports or do something else before the `buildscript` or `plugin` clauses. - */ +import org.jetbrains.kotlin.gradle.tasks.KotlinCompile plugins { java groovy `kotlin-dsl` pmd - val licenseReportVersion = "2.1" - id("com.github.jk1.dependency-license-report").version(licenseReportVersion) } repositories { + mavenCentral() mavenLocal() gradlePluginPortal() - mavenCentral() } -/** - * The version of Jackson used by `buildSrc`. - * - * Please keep this value in sync. with `io.spine.internal.dependency.Jackson.version`. - * It's not a requirement, but would be good in terms of consistency. - */ -val jacksonVersion = "2.13.0" - -val googleAuthToolVersion = "2.1.2" -val licenseReportVersion = "2.1" -val grGitVersion = "3.1.1" - -/** - * The version of the Kotlin Gradle plugin. - * - * Please check that this value matches one defined in - * [io.spine.internal.dependency.Kotlin.version]. - */ -val kotlinVersion = "1.6.21" - -/** - * The version of Guava used in `buildSrc`. - * - * Always use the same version as the one specified in [io.spine.internal.dependency.Guava]. - * Otherwise, when testing Gradle plugins, clashes may occur. - */ -val guavaVersion = "31.1-jre" - -/** - * The version of ErrorProne Gradle plugin. - * - * Please keep in sync. with [io.spine.internal.dependency.ErrorProne.GradlePlugin.version]. - * - * @see - * Error Prone Gradle Plugin Releases - */ -val errorProneVersion = "2.0.2" +kotlin { + val jvmVersion = JavaLanguageVersion.of(11) -/** - * The version of Protobuf Gradle Plugin. - * - * Please keep in sync. with [io.spine.internal.dependency.Protobuf.GradlePlugin.version]. - * - * @see - * Protobuf Gradle Plugins Releases - */ -val protobufPluginVersion = "0.8.18" - -/** - * The version of Dokka Gradle Plugins. - * - * Please keep in sync with [io.spine.internal.dependency.Dokka.version]. - * - * @see - * Dokka Releases - */ -val dokkaVersion = "1.6.20" - -configurations.all { - resolutionStrategy { - // Force Kotlin lib versions avoiding using those bundled with Gradle. - force( - "org.jetbrains.kotlin:kotlin-stdlib:$kotlinVersion", - "org.jetbrains.kotlin:kotlin-stdlib-common:$kotlinVersion", - "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlinVersion", - "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlinVersion", - "org.jetbrains.kotlin:kotlin-reflect:$kotlinVersion" - ) + jvmToolchain { + (this as JavaToolchainSpec).languageVersion.set(jvmVersion) } -} - -val jvmVersion = JavaLanguageVersion.of(11) - -java { - toolchain.languageVersion.set(jvmVersion) -} -tasks.withType { - kotlinOptions { - jvmTarget = jvmVersion.toString() + tasks.withType().configureEach { + kotlinOptions { + jvmTarget = jvmVersion.toString() + } } } dependencies { - implementation("com.fasterxml.jackson.core:jackson-databind:$jacksonVersion") - implementation("com.fasterxml.jackson.dataformat:jackson-dataformat-xml:$jacksonVersion") - implementation("com.google.cloud.artifactregistry:artifactregistry-auth-common:$googleAuthToolVersion") { - exclude(group = "com.google.guava") - } - implementation("com.google.guava:guava:$guavaVersion") - api("com.github.jk1:gradle-license-report:$licenseReportVersion") - implementation("org.ajoberstar.grgit:grgit-core:${grGitVersion}") - implementation("net.ltgt.gradle:gradle-errorprone-plugin:${errorProneVersion}") - - // Add explicit dependency to avoid warning on different Kotlin runtime versions. - implementation("org.jetbrains.kotlin:kotlin-reflect:$kotlinVersion") - implementation("org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlinVersion") - - implementation("gradle.plugin.com.google.protobuf:protobuf-gradle-plugin:$protobufPluginVersion") - implementation("org.jetbrains.dokka:dokka-gradle-plugin:${dokkaVersion}") - implementation("org.jetbrains.dokka:dokka-base:${dokkaVersion}") + api(libs.licenseReport) + implementation(files(libs.javaClass.superclass.protectionDomain.codeSource.location)) + implementation(libs.jackson.databind) + implementation(libs.jackson.dataformatXml) + implementation(libs.google.artifactRegistry.authCommon) + implementation(libs.guava) + implementation(libs.grgit) + implementation(libs.errorProne.gradlePlugin) + implementation(libs.kotlin.gradlePlugin) + implementation(libs.protobuf.gradlePlugin) + implementation(libs.dokka.gradlePlugin) + implementation(libs.dokka.basePlugin) } diff --git a/version.gradle.kts b/buildSrc/settings.gradle.kts similarity index 79% rename from version.gradle.kts rename to buildSrc/settings.gradle.kts index 832e03902..67609bba0 100644 --- a/version.gradle.kts +++ b/buildSrc/settings.gradle.kts @@ -24,10 +24,10 @@ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -/** Versions of the Spine libraries that `time` depends on. */ -val mcJavaVersion: String by extra("2.0.0-SNAPSHOT.83") -val spineBaseVersion by extra("2.0.0-SNAPSHOT.91") -val javadocToolsVersion by extra("2.0.0-SNAPSHOT.75") - -/** The version of this library. */ -val versionToPublish by extra("2.0.0-SNAPSHOT.92") +dependencyResolutionManagement { + versionCatalogs { + create("libs") { + from(files("../gradle/libs.versions.toml")) + } + } +} diff --git a/buildSrc/src/main/kotlin/dokka-for-java.gradle.kts b/buildSrc/src/main/kotlin/dokka-for-java.gradle.kts index 54af9f8da..80d4cd7ab 100644 --- a/buildSrc/src/main/kotlin/dokka-for-java.gradle.kts +++ b/buildSrc/src/main/kotlin/dokka-for-java.gradle.kts @@ -24,7 +24,6 @@ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -import io.spine.internal.dependency.Dokka import io.spine.internal.gradle.dokka.onlyJavaSources import io.spine.internal.gradle.dokka.onlyNonGeneratedSources @@ -32,12 +31,16 @@ import java.time.LocalDate import org.jetbrains.dokka.base.DokkaBase import org.jetbrains.dokka.base.DokkaBaseConfiguration import org.jetbrains.dokka.gradle.DokkaTask +import org.gradle.accessors.dm.LibrariesForLibs plugins { id("org.jetbrains.dokka") } dependencies { + + val libs = rootProject.extensions.getByType() + /** * To generate the documentation as seen from Java perspective, the kotlin-as-java plugin was * added to the Dokka's classpath. @@ -45,7 +48,7 @@ dependencies { * @see * Dokka output formats */ - dokkaPlugin(Dokka.KotlinAsJavaPlugin.lib) + dokkaPlugin(libs.dokka.kotlinAsJava) /** * To exclude pieces of code annotated with `@Internal` from the documentation a custom plugin @@ -54,7 +57,7 @@ dependencies { * @see * Custom Dokka Plugins */ - dokkaPlugin(Dokka.SpineExtensions.lib) + dokkaPlugin(libs.dokka.spineExtensions) } tasks.withType().configureEach { diff --git a/buildSrc/src/main/kotlin/io/spine/internal/gradle/DependencyResolution.kt b/buildSrc/src/main/kotlin/io/spine/internal/gradle/DependencyResolution.kt index 168c07987..9d284f9ab 100644 --- a/buildSrc/src/main/kotlin/io/spine/internal/gradle/DependencyResolution.kt +++ b/buildSrc/src/main/kotlin/io/spine/internal/gradle/DependencyResolution.kt @@ -26,25 +26,7 @@ package io.spine.internal.gradle -import io.spine.internal.dependency.AnimalSniffer -import io.spine.internal.dependency.AutoCommon -import io.spine.internal.dependency.AutoService -import io.spine.internal.dependency.AutoValue -import io.spine.internal.dependency.CheckerFramework -import io.spine.internal.dependency.CommonsCli -import io.spine.internal.dependency.CommonsLogging -import io.spine.internal.dependency.ErrorProne -import io.spine.internal.dependency.FindBugs -import io.spine.internal.dependency.Flogger -import io.spine.internal.dependency.Gson -import io.spine.internal.dependency.Guava -import io.spine.internal.dependency.J2ObjC -import io.spine.internal.dependency.JUnit -import io.spine.internal.dependency.Kotlin -import io.spine.internal.dependency.Okio -import io.spine.internal.dependency.Plexus -import io.spine.internal.dependency.Protobuf -import io.spine.internal.dependency.Truth +import org.gradle.accessors.dm.LibrariesForLibs import org.gradle.api.NamedDomainObjectContainer import org.gradle.api.artifacts.Configuration import org.gradle.api.artifacts.ConfigurationContainer @@ -55,72 +37,75 @@ import org.gradle.api.artifacts.dsl.RepositoryHandler * The function to be used in `buildscript` when a fully-qualified call must be made. */ @Suppress("unused") -fun doForceVersions(configurations: ConfigurationContainer) { - configurations.forceVersions() +fun doForceVersions(configurations: ConfigurationContainer, libs: LibrariesForLibs) { + configurations.forceVersions(libs) } /** * Forces dependencies used in the project. */ -fun NamedDomainObjectContainer.forceVersions() { +fun NamedDomainObjectContainer.forceVersions(libs: LibrariesForLibs) { all { resolutionStrategy { failOnVersionConflict() cacheChangingModulesFor(0, "seconds") - forceProductionDependencies() - forceTestDependencies() - forceTransitiveDependencies() + forceProductionDependencies(libs) + forceTestDependencies(libs) + forceTransitiveDependencies(libs) } } } -private fun ResolutionStrategy.forceProductionDependencies() { +private fun ResolutionStrategy.forceProductionDependencies(libs: LibrariesForLibs) = with(libs) { @Suppress("DEPRECATION") // Force SLF4J version. force( - AnimalSniffer.lib, - AutoCommon.lib, - AutoService.annotations, - CheckerFramework.annotations, - ErrorProne.annotations, - ErrorProne.core, - Guava.lib, - FindBugs.annotations, - Flogger.lib, - Flogger.Runtime.systemBackend, - Kotlin.reflect, - Kotlin.stdLib, - Kotlin.stdLibCommon, - Kotlin.stdLibJdk8, - Protobuf.libs, - Protobuf.GradlePlugin.lib, - io.spine.internal.dependency.Slf4J.lib + animalSniffer, + autoCommon, + autoService.annotations, + checkerFramework.annotations, + errorProne.annotations, + errorProne.typeAnnotations, + errorProne.core, + findBugs.annotations, + flogger, + flogger.runtime.systemBackend, + guava, + kotlin.reflect, + kotlin.stdLib, + kotlin.stdLib.common, + kotlin.stdLib.jdk8, + protobuf.java, + protobuf.java.util, + protobuf.kotlin, + protobuf.gradlePlugin, + slf4j.api ) } -private fun ResolutionStrategy.forceTestDependencies() { +private fun ResolutionStrategy.forceTestDependencies(libs: LibrariesForLibs) = with(libs) { force( - Guava.testLib, - JUnit.api, - JUnit.platformCommons, - JUnit.platformLauncher, - JUnit.legacy, - Truth.libs + guava.testLib, + junit.api, + junit.platform.commons, + junit.platform.launcher, + junit.legacy, + truth ) } /** * Forces transitive dependencies of 3rd party components that we don't use directly. */ -private fun ResolutionStrategy.forceTransitiveDependencies() { +private fun ResolutionStrategy.forceTransitiveDependencies(libs: LibrariesForLibs) = with(libs) { force( - AutoValue.annotations, - Gson.lib, - J2ObjC.annotations, - Plexus.utils, - Okio.lib, - CommonsCli.lib, - CheckerFramework.compatQual, - CommonsLogging.lib + autoValue.annotations, + gson, + j2objc.annotations, + okio, + plexus, + commons.cli, + commons.logging, + checkerFramework.compatQual, ) } @@ -145,8 +130,8 @@ object DependencyResolution { "Please use `configurations.forceVersions()`.", ReplaceWith("configurations.forceVersions()") ) - fun forceConfiguration(configurations: ConfigurationContainer) { - configurations.forceVersions() + fun forceConfiguration(configurations: ConfigurationContainer, libs: LibrariesForLibs) { + configurations.forceVersions(libs) } @Deprecated( diff --git a/buildSrc/src/main/kotlin/io/spine/internal/gradle/Runtime.kt b/buildSrc/src/main/kotlin/io/spine/internal/gradle/Runtime.kt index eced40e43..9fac53730 100644 --- a/buildSrc/src/main/kotlin/io/spine/internal/gradle/Runtime.kt +++ b/buildSrc/src/main/kotlin/io/spine/internal/gradle/Runtime.kt @@ -27,17 +27,11 @@ package io.spine.internal.gradle import com.google.common.base.Joiner -import io.spine.internal.dependency.Flogger import java.io.File import java.io.InputStream import java.io.StringWriter import java.util.* -object Runtime { - @Suppress("unused") - val flogger = Flogger.Runtime -} - /** * Executor of CLI commands. * diff --git a/buildSrc/src/main/kotlin/io/spine/internal/gradle/checkstyle/CheckStyleConfig.kt b/buildSrc/src/main/kotlin/io/spine/internal/gradle/checkstyle/CheckStyleConfig.kt index e3a0ef29a..fd5c112f2 100644 --- a/buildSrc/src/main/kotlin/io/spine/internal/gradle/checkstyle/CheckStyleConfig.kt +++ b/buildSrc/src/main/kotlin/io/spine/internal/gradle/checkstyle/CheckStyleConfig.kt @@ -26,11 +26,12 @@ package io.spine.internal.gradle.checkstyle -import io.spine.internal.dependency.CheckStyle +import org.gradle.accessors.dm.LibrariesForLibs import org.gradle.api.Project import org.gradle.api.plugins.quality.Checkstyle import org.gradle.api.plugins.quality.CheckstyleExtension import org.gradle.api.plugins.quality.CheckstylePlugin +import org.gradle.kotlin.dsl.getByType import org.gradle.kotlin.dsl.the /** @@ -58,9 +59,10 @@ object CheckStyleConfig { } val configDir = project.rootDir.resolve("config/quality/") + val libs = project.rootProject.extensions.getByType() with(project.the()) { - toolVersion = CheckStyle.version + toolVersion = libs.versions.checkStyle.get() configDirectory.set(configDir) } diff --git a/buildSrc/src/main/kotlin/io/spine/internal/gradle/dart/plugin/DartPlugins.kt b/buildSrc/src/main/kotlin/io/spine/internal/gradle/dart/plugin/DartPlugins.kt index 061e2add2..5c8883d63 100644 --- a/buildSrc/src/main/kotlin/io/spine/internal/gradle/dart/plugin/DartPlugins.kt +++ b/buildSrc/src/main/kotlin/io/spine/internal/gradle/dart/plugin/DartPlugins.kt @@ -28,10 +28,12 @@ package io.spine.internal.gradle.dart.plugin import io.spine.internal.gradle.dart.DartContext import io.spine.internal.gradle.dart.DartEnvironment +import org.gradle.accessors.dm.LibrariesForLibs import org.gradle.api.Project import org.gradle.api.plugins.ExtensionContainer import org.gradle.api.plugins.PluginContainer import org.gradle.api.tasks.TaskContainer +import org.gradle.kotlin.dsl.getByType /** * A scope for applying and configuring Dart-related plugins. @@ -40,7 +42,8 @@ import org.gradle.api.tasks.TaskContainer * * 1. [plugins]. * 2. [extensions]. - * 3. [tasks]. + * 3. [libs]. + * 4. [tasks]. * * Let's imagine one wants to apply and configure `FooBar` plugin. To do that, several steps * should be completed: @@ -79,6 +82,7 @@ class DartPlugins(dartEnv: DartEnvironment, project: Project) : DartContext(dart internal val plugins = project.plugins internal val extensions = project.extensions + internal val libs = extensions.getByType() internal val tasks = project.tasks internal fun plugins(configurations: PluginContainer.() -> Unit) = diff --git a/buildSrc/src/main/kotlin/io/spine/internal/gradle/dart/plugin/Protobuf.kt b/buildSrc/src/main/kotlin/io/spine/internal/gradle/dart/plugin/Protobuf.kt index 350f0fbd3..454373b01 100644 --- a/buildSrc/src/main/kotlin/io/spine/internal/gradle/dart/plugin/Protobuf.kt +++ b/buildSrc/src/main/kotlin/io/spine/internal/gradle/dart/plugin/Protobuf.kt @@ -31,7 +31,6 @@ import com.google.protobuf.gradle.id import com.google.protobuf.gradle.plugins import com.google.protobuf.gradle.protobuf import com.google.protobuf.gradle.remove -import io.spine.internal.dependency.Protobuf /** * Applies `protobuf` plugin and configures `GenerateProtoTask` to work with a Dart module. @@ -40,7 +39,7 @@ import io.spine.internal.dependency.Protobuf */ fun DartPlugins.protobuf() { - plugins.apply(Protobuf.GradlePlugin.id) + plugins.apply(libs.plugins.protobuf.get().pluginId) project.protobuf { generateProtoTasks.all().forEach { task -> diff --git a/buildSrc/src/main/kotlin/io/spine/internal/gradle/javascript/plugin/JsPlugins.kt b/buildSrc/src/main/kotlin/io/spine/internal/gradle/javascript/plugin/JsPlugins.kt index 6a17820da..8fa52a6ec 100644 --- a/buildSrc/src/main/kotlin/io/spine/internal/gradle/javascript/plugin/JsPlugins.kt +++ b/buildSrc/src/main/kotlin/io/spine/internal/gradle/javascript/plugin/JsPlugins.kt @@ -28,10 +28,12 @@ package io.spine.internal.gradle.javascript.plugin import io.spine.internal.gradle.javascript.JsContext import io.spine.internal.gradle.javascript.JsEnvironment +import org.gradle.accessors.dm.LibrariesForLibs import org.gradle.api.Project import org.gradle.api.plugins.ExtensionContainer import org.gradle.api.plugins.PluginContainer import org.gradle.api.tasks.TaskContainer +import org.gradle.kotlin.dsl.getByType /** * A scope for applying and configuring JavaScript-related plugins. @@ -40,7 +42,8 @@ import org.gradle.api.tasks.TaskContainer * * 1. [plugins]. * 2. [extensions]. - * 3. [tasks]. + * 3. [libs]. + * 4. [tasks]. * * Let's imagine one wants to apply and configure `FooBar` plugin. To do that, several steps * should be completed: @@ -79,6 +82,7 @@ class JsPlugins(jsEnv: JsEnvironment, project: Project) : JsContext(jsEnv, proje internal val plugins = project.plugins internal val extensions = project.extensions + internal val libs = extensions.getByType() internal val tasks = project.tasks internal fun plugins(configurations: PluginContainer.() -> Unit) = diff --git a/buildSrc/src/main/kotlin/io/spine/internal/gradle/javascript/plugin/Protobuf.kt b/buildSrc/src/main/kotlin/io/spine/internal/gradle/javascript/plugin/Protobuf.kt index d99d2a288..48e6b8c01 100644 --- a/buildSrc/src/main/kotlin/io/spine/internal/gradle/javascript/plugin/Protobuf.kt +++ b/buildSrc/src/main/kotlin/io/spine/internal/gradle/javascript/plugin/Protobuf.kt @@ -32,7 +32,6 @@ import com.google.protobuf.gradle.id import com.google.protobuf.gradle.protobuf import com.google.protobuf.gradle.protoc import com.google.protobuf.gradle.remove -import io.spine.internal.dependency.Protobuf /** * Applies and configures `protobuf` plugin to work with a JavaScript module. @@ -47,7 +46,7 @@ import io.spine.internal.dependency.Protobuf fun JsPlugins.protobuf() { plugins { - apply(Protobuf.GradlePlugin.id) + apply(libs.plugins.protobuf.get().pluginId) } project.protobuf { @@ -55,7 +54,7 @@ fun JsPlugins.protobuf() { generatedFilesBaseDir = projectDir.path protoc { - artifact = Protobuf.compiler + artifact = libs.protobuf.compiler.get().toString() } generateProtoTasks { diff --git a/buildSrc/src/main/kotlin/pmd-settings.gradle.kts b/buildSrc/src/main/kotlin/pmd-settings.gradle.kts index 03e69a67e..9d68767ed 100644 --- a/buildSrc/src/main/kotlin/pmd-settings.gradle.kts +++ b/buildSrc/src/main/kotlin/pmd-settings.gradle.kts @@ -1,3 +1,5 @@ +import org.gradle.accessors.dm.LibrariesForLibs + /* * Copyright 2022, TeamDev. All rights reserved. * @@ -24,14 +26,14 @@ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -import io.spine.internal.dependency.Pmd - plugins { pmd } pmd { - toolVersion = Pmd.version + val libs = rootProject.extensions.getByType() + + toolVersion = libs.versions.pmd.get() isConsoleOutput = true incrementalAnalysis.set(true) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml new file mode 100644 index 000000000..053ab407a --- /dev/null +++ b/gradle/libs.versions.toml @@ -0,0 +1,196 @@ +[versions] +animalSniffer = "1.21" # https://www.mojohaus.org/animal-sniffer/animal-sniffer-maven-plugin/ +apacheHttp = "4.4.14" # https://hc.apache.org/downloads.cgi +appEngine = "1.9.82" # https://cloud.google.com/java/docs/reference +appEngineGradlePlugin = "2.2.0" # https://cloud.google.com/java/docs/reference +autoCommon = "1.2.1" # https://github.com/google/auto +autoService = "1.0.1" # https://github.com/google/auto +autoValue = "1.9" # https://github.com/google/auto +assertK = "0.25" # https://github.com/willowtreeapps/assertk +bouncyCastle = "1.68" # https://www.bouncycastle.org/java.html +checkerFramework = "3.21.3" # https://checkerframework.org/ +checkStyle = "10.1" # https://checkstyle.sourceforge.io/ +commonsCli = "1.5.0" # https://commons.apache.org/proper/commons-cli/ +commonsCodec = "1.15" # https://commons.apache.org/proper/commons-codec/changes-report.html +commonsLogging = "1.2" # https://commons.apache.org/proper/commons-logging/ +dokka = "1.6.20" # https://github.com/Kotlin/dokka +errorProne = "2.13.1" # https://github.com/google/error-prone +errorProneJavac = "9+181-r4173-1" # https://github.com/tbroyer/gradle-errorprone-plugin/blob/v0.8/build.gradle.kts +errorProneGradlePlugin = "2.0.2" # https://github.com/tbroyer/gradle-errorprone-plugin/releases +findBugs = "3.0.2" # https://github.com/SpineEventEngine/base/issues/108 +firebase = "8.1.0" # https://firebase.google.com/docs/admin/setup#java +flogger = "0.7.4" # https://github.com/google/flogger +googleAuthLib = "1.3.0" # https://github.com/googleapis/google-auth-library-java +grpc = "1.45.1" # https://github.com/grpc/grpc-java +guava = "31.1-jre" # https://github.com/google/guava +httpClient = "1.41.5" # https://github.com/googleapis/google-http-java-client +jackson = "2.13.2" # https://github.com/FasterXML +junit = "5.8.2" # https://junit.org/junit5/ +junitPlatform = "1.8.2" # https://junit.org/junit5/ +kotlin = "1.6.21" # https://github.com/JetBrains/kotlin +licenseReport = "1.16" # https://github.com/jk1/Gradle-License-Report +netty = "4.1.72.Final" # https://github.com/netty/netty/releases +osDetector = "1.7.0" # https://github.com/google/osdetector-gradle-plugin +pmd = "6.44.0" # https://pmd.github.io/ +protobuf = "3.20.1" # https://github.com/protocolbuffers/protobuf +protobufGradlePlugin = "0.8.18" # https://github.com/google/protobuf-gradle-plugin/releases +roaster = "2.24.0.Final" # https://github.com/forge/roaster +slf4j = "1.7.30" # DEPRECATED, use Flogger instead +truth = "1.1.3" # https://github.com/google/truth + +[libraries] +animalSniffer = { module = "org.codehaus.mojo:animal-sniffer-annotations", version.ref = "animalSniffer" } +apacheHttp-core = { module = "org.apache.httpcomponents:httpcore", version.ref = "apacheHttp" } +appEngine-sdk = { module = "com.google.appengine:appengine-api-1.0-sdk", version.ref = "appEngine" } +appEngine-gradlePlugin = { module = "com.google.cloud.tools:appengine-gradle-plugin", version.ref = "appEngineGradlePlugin" } +autoCommon = { module = "com.google.auto:auto-common", version.ref = "autoCommon" } +autoService-annotations = { module = "com.google.auto.service:auto-service-annotations", version.ref = "autoService" } +autoService-processor = { module = "com.google.auto.service:auto-service", version.ref = "autoService" } +autoValue-annotations = { module = "com.google.auto.value:auto-value-annotations", version.ref = "autoValue" } +assertK-libJvm = { module = "com.willowtreeapps.assertk:assertk-jvm", version.ref = "assertK" } +bouncyCastle-libPkcsJdk15 = { module = "org.bouncycastle:bcpkix-jdk15on", version.ref = "bouncyCastle" } +checkerFramework-annotations = { module = "org.checkerframework:checker-qual", version.ref = "checkerFramework" } +checkerFramework-dataflow = { module = "org.checkerframework:dataflow", version.ref = "checkerFramework" } +checkerFramework-javacUtil = { module = "org.checkerframework:javacutil", version.ref = "checkerFramework" } +checkerFramework-compatQual = { module = "org.checkerframework:checker-compat-qual", version = "2.5.5" } +commons-cli = { module = "commons-cli:commons-cli", version.ref = "commonsCli" } +commons-codec = { module = "commons-codec:commons-codec", version.ref = "commonsCodec" } +commons-logging = { module = "commons-logging:commons-logging", version.ref = "commonsLogging" } +dokka-gradlePlugin = { module = "org.jetbrains.dokka:dokka-gradle-plugin", version.ref = "dokka" } +dokka-basePlugin = { module = "org.jetbrains.dokka:dokka-base", version.ref = "dokka" } +dokka-kotlinAsJava = { module = "org.jetbrains.dokka:kotlin-as-java-plugin", version.ref = "dokka" } +dokka-spineExtensions = { module = "io.spine.tools:spine-dokka-extensions", version = "2.0.0-SNAPSHOT.3" } +errorProne-annotations = { module = "com.google.errorprone:error_prone_annotations", version.ref = "errorProne" } +errorProne-typeAnnotations = { module = "com.google.errorprone:error_prone_type_annotations", version.ref = "errorProne" } +errorProne-core = { module = "com.google.errorprone:error_prone_core", version.ref = "errorProne" } +errorProne-checkApi = { module = "com.google.errorprone:error_prone_check_api", version.ref = "errorProne" } +errorProne-testHelpers = { module = "com.google.errorprone:error_prone_test_helpers", version.ref = "errorProne" } +errorProne-javacPlugin = { module = "com.google.errorprone:javac", version.ref = "errorProneJavac" } +errorProne-gradlePlugin = { module = "net.ltgt.gradle:gradle-errorprone-plugin", version.ref = "errorProneGradlePlugin" } +findBugs-annotations = { module = "com.google.code.findbugs:jsr305", version.ref = "findBugs" } +firebase-admin = { module = "com.google.firebase:firebase-admin", version.ref = "firebase" } +flogger = { module = "com.google.flogger:flogger", version.ref = "flogger" } +flogger-runtime-systemBackend = { module = "com.google.flogger:flogger-system-backend", version.ref = "flogger" } +flogger-runtime-log4J = { module = "com.google.flogger:flogger-log4j", version.ref = "flogger" } +flogger-runtime-slf4J = { module = "com.google.flogger:slf4j-backend-factory", version.ref = "flogger" } +# https://github.com/googleapis/google-api-java-client +google-apis-client = "com.google.api-client:google-api-client:1.32.2" +# https://github.com/googleapis/api-common-java +google-apis-common = "com.google.api:api-common:2.1.1" +# https://github.com/googleapis/java-common-protos +google-apis-commonProtos = "com.google.api.grpc:proto-google-common-protos:2.7.0" +# https://github.com/googleapis/gax-java +google-apis-gax = "com.google.api:gax:2.7.1" +# https://github.com/googleapis/java-iam +google-apis-protoAim = "com.google.api.grpc:proto-google-iam-v1:1.2.0" +# https://github.com/googleapis/google-oauth-java-client +google-apis-oAuthClient = "com.google.oauth-client:google-oauth-client:1.32.1" +# https://github.com/googleapis/google-auth-library-java +google-apis-auth-credentials = { module = "com.google.auth:google-auth-library-credentials", version.ref = "googleAuthLib" } +#https://github.com/googleapis/google-auth-library-java +google-apis-auth-oAuth2Http = { module = "com.google.auth:google-auth-library-oauth2-http", version.ref = "googleAuthLib" } +# https://github.com/googleapis/java-core +google-cloud-core = "com.google.cloud:google-cloud-core:2.3.3" +# https://github.com/googleapis/java-pubsub/tree/main/proto-google-cloud-pubsub-v1 +google-cloud-pubSubGrpcApi = "com.google.api.grpc:proto-google-cloud-pubsub-v1:1.97.0" +# https://github.com/googleapis/java-trace +google-cloud-trace = "com.google.cloud:google-cloud-trace:2.1.0" +# https://github.com/googleapis/java-datastore +google-cloud-datastore = "com.google.cloud:google-cloud-datastore:2.2.1" +# https://mvnrepository.com/artifact/com.google.cloud.artifactregistry/artifactregistry-auth-common +google-artifactRegistry-authCommon = "com.google.cloud.artifactregistry:artifactregistry-auth-common:2.1.2" +grpc-api = { module = "io.grpc:grpc-api", version.ref = "grpc" } +grpc-auth = { module = "io.grpc:grpc-auth", version.ref = "grpc" } +grpc-core = { module = "io.grpc:grpc-core", version.ref = "grpc" } +grpc-context = { module = "io.grpc:grpc-context", version.ref = "grpc" } +grpc-stub = { module = "io.grpc:grpc-stub", version.ref = "grpc" } +grpc-okHttp = { module = "io.grpc:grpc-okhttp", version.ref = "grpc" } +grpc-protobuf = { module = "io.grpc:grpc-protobuf", version.ref = "grpc" } +grpc-protobufLite = { module = "io.grpc:grpc-protobuf-lite", version.ref = "grpc" } +grpc-protobufPlugin = { module = "io.grpc:protoc-gen-grpc-java", version.ref = "grpc" } +grpc-netty = { module = "io.grpc:grpc-netty", version.ref = "grpc" } +grpc-nettyShaded = { module = "io.grpc:grpc-netty-shaded", version.ref = "grpc" } +# https://github.com/google/gson +gson = "com.google.code.gson:gson:2.9.0" +guava = { module = "com.google.guava:guava", version.ref = "guava" } +guava-testLib = { module = "com.google.guava:guava-testlib", version.ref = "guava" } +# https://github.com/ajoberstar/grgit +grgit = "org.ajoberstar.grgit:grgit-core:3.1.1" +httpClient-google = { module = "com.google.http-client:google-http-client", version.ref = "httpClient" } +httpClient-jackson2 = { module = "com.google.http-client:google-http-client-jackson2", version.ref = "httpClient" } +httpClient-gson = { module = "com.google.http-client:google-http-client-gson", version.ref = "httpClient" } +httpClient-apache2 = { module = "com.google.http-client:google-http-client-apache-v2", version.ref = "httpClient" } +httpClient-apache = "com.google.http-client:google-http-client-apache:2.1.2" +# https://github.com/google/j2objc/releases +j2objc-annotations = "com.google.j2objc:j2objc-annotations:1.3" +jackson-core = { module = "com.fasterxml.jackson.core:jackson-core", version.ref = "jackson" } +jackson-dataformatXml = { module = "com.fasterxml.jackson.dataformat:jackson-dataformat-xml", version.ref = "jackson" } +jackson-dataformatYaml = { module = "com.fasterxml.jackson.dataformat:jackson-dataformat-yaml", version.ref = "jackson" } +jackson-moduleKotlin = { module = "com.fasterxml.jackson.module:jackson-module-kotlin", version.ref = "jackson" } +# https://github.com/FasterXML/jackson-databind +jackson-databind = "com.fasterxml.jackson.core:jackson-databind:2.13.2.2" +# https://github.com/auth0/java-jwt +javaJwt = "com.auth0:java-jwt:3.19.1" +# https://github.com/square/javapoet +javaPoet = "com.squareup:javapoet:1.13.0" +# https://github.com/eclipse-ee4j/common-annotations-api +javaX-annotations = "javax.annotation:javax.annotation-api:1.3.2" +javaX-servletApi = "javax.servlet:javax.servlet-api:3.1.0" +junit-legacy = "junit:junit:4.13.1" +# https://github.com/apiguardian-team/apiguardian +junit-apiGuardian-api = "org.apiguardian:apiguardian-api:1.1.2" +junit-api = { module = "org.junit.jupiter:junit-jupiter-api", version.ref = "junit" } +junit-bom = { module = "org.junit:junit-bom", version.ref = "junit" } +junit-runner = { module = "org.junit.jupiter:junit-jupiter-engine", version.ref = "junit" } +junit-params = { module = "org.junit.jupiter:junit-jupiter-params", version.ref = "junit" } +junit-platform-launcher = { module = "org.junit.platform:junit-platform-launcher", version.ref = "junitPlatform" } +junit-platform-commons = { module = "org.junit.platform:junit-platform-commons", version.ref = "junitPlatform" } +# https://github.com/junit-pioneer/junit-pioneer +junit-pioneer = "org.junit-pioneer:junit-pioneer:1.5.0" +# https://github.com/cbeust/klaxon +klaxon = "com.beust:klaxon:5.6" +kotlin-reflect = { module = "org.jetbrains.kotlin:kotlin-reflect", version.ref = "kotlin" } +kotlin-stdLib = { module = "org.jetbrains.kotlin:kotlin-stdlib", version.ref = "kotlin" } +kotlin-stdLib-common = { module = "org.jetbrains.kotlin:kotlin-stdlib-common", version.ref = "kotlin" } +kotlin-stdLib-jdk7 = { module = "org.jetbrains.kotlin:kotlin-stdlib-jdk7", version.ref = "kotlin" } +kotlin-stdLib-jdk8 = { module = "org.jetbrains.kotlin:kotlin-stdlib-jdk8", version.ref = "kotlin" } +kotlin-gradlePlugin = { module = "org.jetbrains.kotlin:kotlin-gradle-plugin", version.ref = "kotlin" } +# https://github.com/z4kn4fein/kotlin-semver +kotlinSemver = "io.github.z4kn4fein:semver:1.2.1" +licenseReport = { module = "com.github.jk1:gradle-license-report", version.ref = "licenseReport" } +netty-common = { module = "io.netty:netty-common", version.ref = "netty" } +netty-buffer = { module = "io.netty:netty-buffer", version.ref = "netty" } +netty-transport = { module = "io.netty:netty-transport", version.ref = "netty" } +netty-handler = { module = "io.netty:netty-handler", version.ref = "netty" } +netty-codecHttp = { module = "io.netty:netty-codec-http", version.ref = "netty" } +okio = "com.squareup.okio:okio:1.17.5" +osDetector-gradlePlugin = { module = "com.google.gradle:osdetector-gradle-plugin", version.ref = "osDetector" } +# https://codehaus-plexus.github.io/plexus-utils/ +plexus = "org.codehaus.plexus:plexus-utils:3.4.0" +protobuf-java = { module = "com.google.protobuf:protobuf-java", version.ref = "protobuf" } +protobuf-java-util = { module = "com.google.protobuf:protobuf-java-util", version.ref = "protobuf" } +protobuf-kotlin = { module = "com.google.protobuf:protobuf-kotlin", version.ref = "protobuf" } +protobuf-compiler = { module = "com.google.protobuf:protoc", version.ref = "protobuf" } +protobuf-gradlePlugin = { module = "com.google.protobuf:protobuf-gradle-plugin", version.ref = "protobufGradlePlugin" } +roaster-api = { module = "org.jboss.forge.roaster:roaster-api", version.ref = "roaster" } +roaster-jdt = { module = "org.jboss.forge.roaster:roaster-jdt", version.ref = "roaster" } +slf4j-api = { module = "org.slf4j:slf4j-api", version.ref = "slf4j" } +slf4j-jdk14 = { module = "org.slf4j:slf4j-jdk14", version.ref = "slf4j" } +testKitTruth = "com.autonomousapps:testkit-truth:1.1" +truth = { module = "com.google.truth:truth", version.ref = "truth" } +truth-java8 = { module = "com.google.truth.extensions:truth-java8-extension", version.ref = "truth" } +truth-proto = { module = "com.google.truth.extensions:truth-proto-extension", version.ref = "truth" } + +[bundles] +checkerFramework-dataflow = ["checkerFramework-dataflow", "checkerFramework-javacUtil"] +errorProne-annotations = ["errorProne-annotations", "errorProne-typeAnnotations"] +junit-api = ["junit-apiGuardian-api", "junit-api", "junit-params"] +protobuf-libs = ["protobuf-java", "protobuf-java-util", "protobuf-kotlin"] +truth = ["truth", "truth-java8", "truth-proto"] + +[plugins] +dokka = { id = "org.jetbrains.dokka", version.ref = "dokka" } +errorProne = { id = "net.ltgt.errorprone", version.ref = "errorProneGradlePlugin" } +licenseReport = { id = "com.github.jk1.dependency-license-report", version.ref = "licenseReport" } +osDetector = { id = "com.google.osdetector", version.ref = "osDetector" } +protobuf = { id = "com.google.protobuf", version.ref = "protobufGradlePlugin" } diff --git a/license-report.md b/license-report.md index a06dc4bf1..0f567a274 100644 --- a/license-report.md +++ b/license-report.md @@ -1,6 +1,6 @@ -# Dependencies of `io.spine.tools:spine-testutil-time:2.0.0-SNAPSHOT.92` +# Dependencies of `io.spine.tools:spine-testutil-time:2.0.0-SNAPSHOT.93` ## Runtime 1. **Group** : com.google.code.findbugs. **Name** : jsr305. **Version** : 3.0.2. @@ -512,12 +512,12 @@ The dependencies distributed under several licenses, are used according their commercial-use-friendly license. -This report was generated on **Tue May 03 19:16:19 EEST 2022** using [Gradle-License-Report plugin](https://github.com/jk1/Gradle-License-Report) by Evgeny Naumenko, licensed under [Apache 2.0 License](https://github.com/jk1/Gradle-License-Report/blob/master/LICENSE). +This report was generated on **Thu May 12 13:40:57 EEST 2022** using [Gradle-License-Report plugin](https://github.com/jk1/Gradle-License-Report) by Evgeny Naumenko, licensed under [Apache 2.0 License](https://github.com/jk1/Gradle-License-Report/blob/master/LICENSE). -# Dependencies of `io.spine:spine-time:2.0.0-SNAPSHOT.92` +# Dependencies of `io.spine:spine-time:2.0.0-SNAPSHOT.93` ## Runtime 1. **Group** : com.google.code.findbugs. **Name** : jsr305. **Version** : 3.0.2. @@ -1058,4 +1058,4 @@ This report was generated on **Tue May 03 19:16:19 EEST 2022** using [Gradle-Lic The dependencies distributed under several licenses, are used according their commercial-use-friendly license. -This report was generated on **Tue May 03 19:16:20 EEST 2022** using [Gradle-License-Report plugin](https://github.com/jk1/Gradle-License-Report) by Evgeny Naumenko, licensed under [Apache 2.0 License](https://github.com/jk1/Gradle-License-Report/blob/master/LICENSE). \ No newline at end of file +This report was generated on **Thu May 12 13:40:58 EEST 2022** using [Gradle-License-Report plugin](https://github.com/jk1/Gradle-License-Report) by Evgeny Naumenko, licensed under [Apache 2.0 License](https://github.com/jk1/Gradle-License-Report/blob/master/LICENSE). \ No newline at end of file diff --git a/pom.xml b/pom.xml index 26407f6bf..59b578d9e 100644 --- a/pom.xml +++ b/pom.xml @@ -10,7 +10,7 @@ all modules and does not describe the project structure per-subproject. --> io.spine spine-time -2.0.0-SNAPSHOT.92 +2.0.0-SNAPSHOT.93 2015 diff --git a/time/build.gradle.kts b/time/build.gradle.kts index bb5f13ca4..a1c2c6d62 100644 --- a/time/build.gradle.kts +++ b/time/build.gradle.kts @@ -24,7 +24,6 @@ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -import io.spine.internal.dependency.AutoService import io.spine.internal.gradle.publish.IncrementGuard import io.spine.internal.gradle.excludeProtobufLite @@ -36,8 +35,8 @@ apply() val spineBaseVersion: String by extra dependencies { - annotationProcessor(AutoService.processor) - compileOnly(AutoService.annotations) + annotationProcessor(libs.autoService.processor) + compileOnly(libs.autoService.annotations) api("io.spine:spine-base:$spineBaseVersion")