From 234965e9e167f510ab38b0fcdad3bd2846691339 Mon Sep 17 00:00:00 2001 From: Kristóf Marussy Date: Tue, 16 Nov 2021 21:46:06 +0100 Subject: build: use version catalogs Gradle version catalogs allow centralized management of dependency artifact coordinates using a toml file. Previously, we use the gradle.properties file, which cannot manage group and name coordinates, only versions. Node and yarn versions still have to be in gradle.properties, because they do not correspond to any coordiates of a maven artifact. --- build.gradle | 8 ++++---- gradle.properties | 14 -------------- gradle/jmh.gradle | 4 ++-- gradle/junit.gradle | 12 ++++++------ gradle/libs.versions.toml | 47 +++++++++++++++++++++++++++++++++++++++++++++ gradle/mwe2.gradle | 2 +- gradle/xtend.gradle | 2 +- language-ide/build.gradle | 4 ++-- language-model/build.gradle | 14 +++++++------- language-web/build.gradle | 21 ++++++++++---------- language/build.gradle | 15 +++++++-------- settings.gradle | 2 ++ store/build.gradle | 4 ++-- 13 files changed, 91 insertions(+), 58 deletions(-) create mode 100644 gradle/libs.versions.toml diff --git a/build.gradle b/build.gradle index 694d5c2d..91478387 100644 --- a/build.gradle +++ b/build.gradle @@ -1,8 +1,8 @@ plugins { - id 'com.github.johnrengelman.shadow' version '7.1.0' apply false - id 'org.siouan.frontend-jdk11' version '5.3.0' apply false - id 'org.sonarqube' version '3.3' - id 'org.xtext.xtend' version '3.0.0-M1' apply false + alias libs.plugins.shadow apply false + alias libs.plugins.frontend apply false + alias libs.plugins.sonarqube + alias libs.plugins.xtend apply false } allprojects { diff --git a/gradle.properties b/gradle.properties index 57ff8621..cacf39a5 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,16 +1,2 @@ -ecoreVersion=2.25.0 -ecoreCodegenVersion=2.27.0 -ecoreXmiVersion=2.16.0 -hamcrestVersion=2.2 -jettyVersion=11.0.7 -jmhVersion=1.33 -junitVersion=5.8.1 -mockitoVersion=4.0.0 -mweVersion=1.6.2.M1 -mwe2Version=2.12.2.M1 nodeVersion=16.13.0 -slf4JVersion=2.0.0-alpha5 -viatraVersion=2.6.0 -xtextVersion=2.26.0.M2 -xtextAntlrGeneratorVersion=2.1.1 yarnVersion=1.22.17 diff --git a/gradle/jmh.gradle b/gradle/jmh.gradle index 698a57cf..aa58c2b7 100644 --- a/gradle/jmh.gradle +++ b/gradle/jmh.gradle @@ -14,8 +14,8 @@ sourceSets { } dependencies { - jmhImplementation "org.openjdk.jmh:jmh-core:${jmhVersion}" - jmhAnnotationProcessor "org.openjdk.jmh:jmh-generator-annprocess:${jmhVersion}" + jmhImplementation libs.jmh.core + jmhAnnotationProcessor libs.jmh.annprocess } tasks.register('jmh', JavaExec) { diff --git a/gradle/junit.gradle b/gradle/junit.gradle index 44a463c7..c5b60e47 100644 --- a/gradle/junit.gradle +++ b/gradle/junit.gradle @@ -1,12 +1,12 @@ apply plugin: 'jacoco' dependencies { - testImplementation "org.junit.jupiter:junit-jupiter-api:${junitVersion}" - testRuntimeOnly "org.junit.jupiter:junit-jupiter-engine:${junitVersion}" - testImplementation "org.junit.jupiter:junit-jupiter-params:${junitVersion}" - testImplementation "org.hamcrest:hamcrest:${hamcrestVersion}" - testImplementation "org.mockito:mockito-core:${mockitoVersion}" - testImplementation "org.mockito:mockito-junit-jupiter:${mockitoVersion}" + testImplementation libs.hamcrest + testImplementation libs.junit.api + testRuntimeOnly libs.junit.engine + testImplementation libs.junit.params + testImplementation libs.mockito.core + testImplementation libs.mockito.junit } def jacocoTestReport = tasks.named('jacocoTestReport') diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml new file mode 100644 index 00000000..0e711cad --- /dev/null +++ b/gradle/libs.versions.toml @@ -0,0 +1,47 @@ +[versions] +jetty = "11.0.7" +jmh = "1.33" +junit = "5.8.1" +mockito = "4.0.0" +mwe2 = "2.12.2.M1" +slf4j = "2.0.0-alpha5" +xtext = "2.26.0.M2" + +[libraries] +ecore = { group = "org.eclipse.emf", name = "org.eclipse.emf.ecore", version = "2.25.0" } +ecore-xmi = { group = "org.eclipse.emf", name = "org.eclipse.emf.ecore.xmi", version = "2.16.0" } +ecore-codegen = { group = "org.eclipse.emf", name = "org.eclipse.emf.codegen.ecore", version = "2.27.0" } +hamcrest = { group = "org.hamcrest", name = "hamcrest", version = "2.2" } +jetty-server = { group = "org.eclipse.jetty", name = "jetty-server", version.ref = "jetty" } +jetty-servlet = { group = "org.eclipse.jetty", name = "jetty-servlet", version.ref = "jetty" } +jetty-websocket-client = { group = "org.eclipse.jetty.websocket", name = "websocket-jetty-client", version.ref = "jetty" } +jetty-websocket-server = { group = "org.eclipse.jetty.websocket", name = "websocket-jetty-server", version.ref = "jetty" } +jmh-core = { group = "org.openjdk.jmh", name = "jmh-core", version.ref = "jmh" } +jmh-annprocess = { group = "org.openjdk.jmh", name = "jmh-generator-annprocess", version.ref = "jmh" } +junit-api = { group = "org.junit.jupiter", name = "junit-jupiter-api", version.ref = "junit" } +junit-engine = { group = "org.junit.jupiter", name = "junit-jupiter-engine", version.ref = "junit" } +junit-params = { group = "org.junit.jupiter", name = "junit-jupiter-params", version.ref = "junit" } +mockito-core = { group = "org.mockito", name = "mockito-core", version.ref = "mockito" } +mockito-junit = { group = "org.mockito", name = "mockito-junit-jupiter", version.ref = "mockito" } +mwe-utils = { group = "org.eclipse.emf", name = "org.eclipse.emf.mwe.utils", version = "1.6.2.M1" } +mwe2-launch = { group = "org.eclipse.emf", name = "org.eclipse.emf.mwe2.launch", version.ref = "mwe2" } +mwe2-lib = { group = "org.eclipse.emf", name = "org.eclipse.emf.mwe2.lib", version.ref = "mwe2" } +slf4j-simple = { group = "org.slf4j", name = "slf4j-simple", version.ref = "slf4j" } +slf4j-log4j = { group = "org.slf4j", name = "log4j-over-slf4j", version.ref = "slf4j" } +viatra = { group = "org.eclipse.viatra", name = "viatra-query-runtime", version = "2.6.0" } +xtend-lib = { group = "org.eclipse.xtend", name = "org.eclipse.xtend.lib", version.ref = "xtext" } +xtext-bom = { group = "org.eclipse.xtext", name = "xtext-dev-bom", version.ref = "xtext" } +xtext-core = { group = "org.eclipse.xtext", name = "org.eclipse.xtext", version.ref = "xtext" } +xtext-generator-antlr = { group = "org.eclipse.xtext", name = "xtext-antlr-generator", version = "2.1.1" } +xtext-generator = { group = "org.eclipse.xtext", name = "org.eclipse.xtext.xtext.generator", version.ref = "xtext" } +xtext-ide = { group = "org.eclipse.xtext", name = "org.eclipse.xtext.ide", version.ref = "xtext" } +xtext-testing = { group = "org.eclipse.xtext", name = "org.eclipse.xtext.testing", version.ref = "xtext" } +xtext-web = { group = "org.eclipse.xtext", name = "org.eclipse.xtext.web", version.ref = "xtext" } +xtext-xbase = { group = "org.eclipse.xtext", name = "org.eclipse.xtext.xbase", version.ref = "xtext" } +xtext-xbase-ide = { group = "org.eclipse.xtext", name = "org.eclipse.xtext.xbase.ide", version.ref = "xtext" } + +[plugins] +shadow = { id = "com.github.johnrengelman.shadow", version = "7.1.0" } +frontend = { id = "org.siouan.frontend-jdk11", version = "5.3.0" } +sonarqube = { id = "org.sonarqube", version = "3.3" } +xtend = { id = "org.xtext.xtend", version = "3.0.0-M1" } diff --git a/gradle/mwe2.gradle b/gradle/mwe2.gradle index b4ea8bb8..6dc3ef67 100644 --- a/gradle/mwe2.gradle +++ b/gradle/mwe2.gradle @@ -5,7 +5,7 @@ configurations { } dependencies { - mwe2 "org.eclipse.emf:org.eclipse.emf.mwe2.launch:${mwe2Version}" + mwe2 libs.mwe2.launch } eclipse.classpath.plusConfigurations += [configurations.mwe2] diff --git a/gradle/xtend.gradle b/gradle/xtend.gradle index db1c2a57..94cd7dc7 100644 --- a/gradle/xtend.gradle +++ b/gradle/xtend.gradle @@ -1,4 +1,4 @@ -apply plugin: 'org.xtext.xtend' +apply plugin: libs.plugins.xtend.get().pluginId sourceSets { main { diff --git a/language-ide/build.gradle b/language-ide/build.gradle index fddf2245..65b4b786 100644 --- a/language-ide/build.gradle +++ b/language-ide/build.gradle @@ -3,8 +3,8 @@ apply from: "${rootDir}/gradle/xtext-common.gradle" dependencies { api project(':refinery-language') - api "org.eclipse.xtext:org.eclipse.xtext.ide:${xtextVersion}" - api "org.eclipse.xtext:org.eclipse.xtext.xbase.ide:${xtextVersion}" + api libs.xtext.ide + api libs.xtext.xbase.ide } def generateXtextLanguage = project(':refinery-language').tasks.named('generateXtextLanguage') diff --git a/language-model/build.gradle b/language-model/build.gradle index 46ae839b..666b3e7d 100644 --- a/language-model/build.gradle +++ b/language-model/build.gradle @@ -4,13 +4,13 @@ apply from: "${rootDir}/gradle/java-common.gradle" apply from: "${rootDir}/gradle/mwe2.gradle" dependencies { - api "org.eclipse.emf:org.eclipse.emf.ecore:${ecoreVersion}" - api "org.eclipse.emf:org.eclipse.emf.ecore.xmi:${ecoreXmiVersion}" - mwe2 "org.eclipse.emf:org.eclipse.emf.codegen.ecore:${ecoreCodegenVersion}" - mwe2 "org.eclipse.emf:org.eclipse.emf.mwe.utils:${mweVersion}" - mwe2 "org.eclipse.emf:org.eclipse.emf.mwe2.lib:${mwe2Version}" - mwe2 "org.eclipse.xtext:org.eclipse.xtext:${xtextVersion}" - mwe2 "org.eclipse.xtext:org.eclipse.xtext.xbase:${xtextVersion}" + api libs.ecore + api libs.ecore.xmi + mwe2 libs.ecore.codegen + mwe2 libs.mwe.utils + mwe2 libs.mwe2.lib + mwe2 libs.xtext.core + mwe2 libs.xtext.xbase } sourceSets { diff --git a/language-web/build.gradle b/language-web/build.gradle index ea2f1269..12f2f3a0 100644 --- a/language-web/build.gradle +++ b/language-web/build.gradle @@ -5,16 +5,15 @@ apply from: "${rootDir}/gradle/junit.gradle" dependencies { implementation project(':refinery-language') implementation project(':refinery-language-ide') - implementation "org.eclipse.xtext:org.eclipse.xtext.web:${xtextVersion}" - implementation "org.eclipse.xtend:org.eclipse.xtend.lib:${xtextVersion}" - implementation "org.eclipse.jetty:jetty-server:${jettyVersion}" - implementation "org.eclipse.jetty:jetty-servlet:${jettyVersion}" - implementation "org.eclipse.jetty.websocket:websocket-jetty-server:${jettyVersion}" - implementation "org.slf4j:slf4j-simple:${slf4JVersion}" - implementation "org.slf4j:log4j-over-slf4j:${slf4JVersion}" + implementation libs.xtend.lib + implementation libs.xtext.web + implementation libs.jetty.server + implementation libs.jetty.servlet + implementation libs.jetty.websocket.server + implementation libs.slf4j.simple + implementation libs.slf4j.log4j testImplementation testFixtures(project(':refinery-language')) - testImplementation "org.eclipse.xtext:org.eclipse.xtext.testing:${xtextVersion}" - testImplementation "org.eclipse.jetty.websocket:websocket-jetty-client:${jettyVersion}" + testImplementation libs.jetty.websocket.client } def generateXtextLanguage = project(':refinery-language').tasks.named('generateXtextLanguage') @@ -29,7 +28,7 @@ def webpackOutputDir = "${buildDir}/webpack" def productionResources = "${webpackOutputDir}/production" def serverMainClass = 'tools.refinery.language.web.ServerLauncher' -apply plugin: 'org.siouan.frontend-jdk11' +apply plugin: libs.plugins.frontend.get().pluginId import org.siouan.frontendgradleplugin.infrastructure.gradle.RunNpmYarn def nodeDirectory = "${rootDir}/.gradle/node" @@ -110,7 +109,7 @@ mainClassName = serverMainClass distTar.enabled = false distZip.enabled = false -apply plugin: 'com.github.johnrengelman.shadow' +apply plugin: libs.plugins.shadow.get().pluginId shadowDistTar.enabled = false shadowDistZip.enabled = false diff --git a/language/build.gradle b/language/build.gradle index 7b9f8d75..df71a85d 100644 --- a/language/build.gradle +++ b/language/build.gradle @@ -6,16 +6,15 @@ apply from: "${rootDir}/gradle/mwe2.gradle" apply from: "${rootDir}/gradle/xtend.gradle" dependencies { - api platform("org.eclipse.xtext:xtext-dev-bom:${xtextVersion}") - api "org.eclipse.xtext:org.eclipse.xtext:${xtextVersion}" - api "org.eclipse.xtext:org.eclipse.xtext.xbase:${xtextVersion}" - api "org.eclipse.emf:org.eclipse.emf.ecore:${ecoreVersion}" + api platform(libs.xtext.bom) + api libs.ecore + api libs.xtext.core + api libs.xtext.xbase api project(':refinery-language-model') - testFixturesApi "org.eclipse.xtext:org.eclipse.xtext.testing:${xtextVersion}" + testFixturesApi libs.xtext.testing testFixturesApi testFixtures(project(':refinery-language-model')) - mwe2 "org.eclipse.xtext:org.eclipse.xtext.common.types:${xtextVersion}" - mwe2 "org.eclipse.xtext:org.eclipse.xtext.xtext.generator:${xtextVersion}" - mwe2 "org.eclipse.xtext:xtext-antlr-generator:${xtextAntlrGeneratorVersion}" + mwe2 libs.xtext.generator + mwe2 libs.xtext.generator.antlr } sourceSets { diff --git a/settings.gradle b/settings.gradle index 0e237de1..a53586f2 100644 --- a/settings.gradle +++ b/settings.gradle @@ -1,3 +1,5 @@ +enableFeaturePreview 'VERSION_CATALOGS' + rootProject.name = 'refinery' include 'language' diff --git a/store/build.gradle b/store/build.gradle index 6861b732..0a5ba549 100644 --- a/store/build.gradle +++ b/store/build.gradle @@ -4,6 +4,6 @@ apply from: "${rootDir}/gradle/junit.gradle" apply from: "${rootDir}/gradle/jmh.gradle" dependencies { - implementation "org.eclipse.viatra:viatra-query-runtime:${viatraVersion}" - implementation "org.eclipse.emf:org.eclipse.emf.ecore:${ecoreVersion}" + implementation libs.ecore + implementation libs.viatra } -- cgit v1.2.3-54-g00ecf