11import de.itemis.mps.gradle.*
2+ import de.itemis.mps.gradle.tasks.MpsMigrate
3+ import de.itemis.mps.gradle.tasks.Remigrate
4+ import de.itemis.mps.gradle.downloadJBR.DownloadJbrForPlatform
25import groovy.xml.XmlSlurper
36import java.time.LocalDate
47import java.time.format.DateTimeFormatter
@@ -9,21 +12,28 @@ buildscript {
912 repositories {
1013 maven { url ' https://artifacts.itemis.cloud/repository/maven-mps/' }
1114 }
12- dependencies {
13- classpath ' de.itemis.mps:mps-gradle-plugin:1.29.1.1.d7f2744'
14- }
1515}
1616
1717plugins {
1818 id ' base'
1919 id ' maven-publish'
20+ id ' de.itemis.mps.gradle.common' version ' 1.29.+'
21+ id ' de.itemis.mps.gradle.launcher' version ' 2.5.2.+'
2022 id " com.github.breadmoirai.github-release" version " 2.4.1"
2123 id " org.cyclonedx.bom" version " 1.8.2"
2224}
2325
26+ ext. dependencyRepositories = [
27+ ' https://artifacts.itemis.cloud/repository/maven-mps/'
28+ ]
29+
2430repositories {
25- maven {
26- url ' https://artifacts.itemis.cloud/repository/maven-mps/'
31+ // we don't use mavenLocal() repo, since it can cause various issues with resolving dependencies,
32+ // see https://docs.gradle.org/current/userguide/declaring_repositories.html#sec:case-for-maven-local
33+ for (repoUrl in project. dependencyRepositories) {
34+ maven {
35+ url repoUrl
36+ }
2737 }
2838 mavenCentral()
2939}
@@ -86,7 +96,7 @@ if (project.hasProperty('iets3OpenSourceVersion')) {
8696 } else {
8797 def isSnapshot = ! (currentBranch. equals(" master" ) || currentBranch. startsWith(" datev-loon-staging-" ) || currentBranch. startsWith(" datev-steuer-staging-" ))
8898 version = GitBasedVersioning . getVersionWithCount(major, minor, buildNumber) + (isSnapshot ? " -SNAPSHOT" : " " )
89- }
99+ }
90100 println " ##teamcity[buildNumber '${ version} ']"
91101 } else {
92102 version = " $major . $minor -SNAPSHOT"
@@ -105,6 +115,7 @@ ext.artifactsDir = new File(buildDir, 'artifacts')
105115
106116configurations {
107117 mps
118+ rerunMigrationsBackend
108119 languageLibs
109120 junitAnt
110121 pcollections // Synced to org.iets3.core.expr.base.collections.stubs/lib
@@ -113,6 +124,7 @@ configurations {
113124
114125dependencies {
115126 mps " com.jetbrains:mps:$mpsVersion "
127+ rerunMigrationsBackend(" de.itemis.mps.build-backends:remigrate:0.0.5.+" )
116128 languageLibs " org.mpsqa:all-in-one:$mpsQAVersion "
117129 languageLibs " com.mbeddr:platform:$mbeddrVersion "
118130 junitAnt ' org.apache.ant:ant-junit:1.10.15'
@@ -172,6 +184,8 @@ task resolveBigMath(type: Sync) {
172184
173185task resolveDependencies (dependsOn : [' downloadJbr' , resolveMps, resolveLanguageLibs, resolvePcollections, resolveBigMath])
174186
187+ ext. mpsHomeDir = resolveMps. destinationDir
188+
175189// Default arguments for ant scripts
176190def defaultScriptArgs = [
177191 ' mps.home' : resolveMps. destinationDir,
@@ -255,6 +269,39 @@ task failOnTestError() {
255269buildAndRunTests. configure { finalizedBy failOnTestError }
256270check. dependsOn buildAndRunTests
257271
272+ tasks. register(' migrate' , MpsMigrate ) {
273+ dependsOn(resolveMps, ' resolveMpsForModelcheck' , ' downloadJbr' , ' buildLanguages' , ' buildAndRunTests' )
274+ javaLauncher = tasks. named(' downloadJbr' , DownloadJbrForPlatform ). flatMap { it. javaLauncher }
275+
276+ haltOnPrecheckFailure = false
277+ haltOnDependencyError = true
278+
279+ mpsHome = mpsHomeDir
280+
281+ projectDirectories. from(' code/languages/org.iets3.opensource' )
282+ folderMacros[' iets3.github.opensource.home' ] = rootProject. layout. projectDirectory
283+
284+ pluginRoots. from(new File (mpsHomeDir, ' plugins' ))
285+
286+ maxHeapSize = ' 4G'
287+ }
288+
289+ tasks. register(' remigrate' , Remigrate ) {
290+ mustRunAfter(' migrate' )
291+ mustRunAfter(' buildLanguages' , ' buildAndRunTests' )
292+
293+ dependsOn(resolveMps, ' resolveMpsForModelcheck' ,' downloadJbr' )
294+
295+ javaLauncher = tasks. named(' downloadJbr' , DownloadJbrForPlatform ). flatMap { it. javaLauncher }
296+
297+ mpsHome = mpsHomeDir
298+ projectDirectories. from(' code/languages/org.iets3.opensource' )
299+ folderMacros[' iets3.github.opensource.home' ] = rootProject. layout. projectDirectory
300+
301+ pluginRoots. from(new File (mpsHomeDir, ' plugins' ))
302+ maxHeapSize = ' 4G'
303+ }
304+
258305apply plugin : ' modelcheck'
259306
260307File modelcheckresult = new File (" $buildDir /TEST-checkProject.xml" )
0 commit comments