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")