aboutsummaryrefslogtreecommitdiffstats
path: root/subprojects
diff options
context:
space:
mode:
authorLibravatar Kristóf Marussy <kristof@marussy.com>2023-04-08 22:56:44 +0200
committerLibravatar Kristóf Marussy <kristof@marussy.com>2023-04-08 22:58:21 +0200
commit561fac70fd3dc3ebe1cfbc50146757495fb828d5 (patch)
tree20aa72bbe438aaa70c8de264ff0d366758e7772d /subprojects
parentrefactor: remove TupleLike (diff)
downloadrefinery-561fac70fd3dc3ebe1cfbc50146757495fb828d5.tar.gz
refinery-561fac70fd3dc3ebe1cfbc50146757495fb828d5.tar.zst
refinery-561fac70fd3dc3ebe1cfbc50146757495fb828d5.zip
build: convert Gradle scripts to Kotlin
Improves IDE support build scripts in IntelliJ. There is no Eclipse IDE support, but Eclipse didn't have support for Groovy either, so there is no degradation of functionality.
Diffstat (limited to 'subprojects')
-rw-r--r--subprojects/frontend/build.gradle131
-rw-r--r--subprojects/frontend/build.gradle.kts127
-rw-r--r--subprojects/language-ide/build.gradle18
-rw-r--r--subprojects/language-ide/build.gradle.kts18
-rw-r--r--subprojects/language-model/build.gradle55
-rw-r--r--subprojects/language-model/build.gradle.kts53
-rw-r--r--subprojects/language-semantics/build.gradle11
-rw-r--r--subprojects/language-semantics/build.gradle.kts11
-rw-r--r--subprojects/language-web/build.gradle87
-rw-r--r--subprojects/language-web/build.gradle.kts91
-rw-r--r--subprojects/language/build.gradle73
-rw-r--r--subprojects/language/build.gradle.kts65
-rw-r--r--subprojects/store-query-viatra/build.gradle16
-rw-r--r--subprojects/store-query-viatra/build.gradle.kts16
-rw-r--r--subprojects/store-query/build.gradle9
-rw-r--r--subprojects/store-query/build.gradle.kts9
-rw-r--r--subprojects/store-reasoning/build.gradle7
-rw-r--r--subprojects/store-reasoning/build.gradle.kts7
-rw-r--r--subprojects/store/build.gradle4
-rw-r--r--subprojects/store/build.gradle.kts4
20 files changed, 401 insertions, 411 deletions
diff --git a/subprojects/frontend/build.gradle b/subprojects/frontend/build.gradle
deleted file mode 100644
index 4cc2c5d7..00000000
--- a/subprojects/frontend/build.gradle
+++ /dev/null
@@ -1,131 +0,0 @@
1plugins {
2 id 'refinery-frontend-workspace'
3 id 'refinery-sonarqube'
4}
5
6import org.siouan.frontendgradleplugin.infrastructure.gradle.RunYarn
7
8def viteOutputDir = "${buildDir}/vite"
9def productionResources = file("${viteOutputDir}/production")
10
11frontend {
12 assembleScript = 'run build'
13}
14
15configurations {
16 productionAssets {
17 canBeConsumed = true
18 canBeResolved = false
19 }
20}
21
22def installFrontend = tasks.named('installFrontend')
23
24def sourcesWithoutTypegen = fileTree('src') {
25 exclude '**/*.typegen.ts'
26}
27
28def assembleFrontend = tasks.named('assembleFrontend')
29assembleFrontend.configure {
30 dependsOn generateXStateTypes
31 inputs.dir 'public'
32 inputs.files sourcesWithoutTypegen
33 inputs.file 'index.html'
34 inputs.files('package.json', 'tsconfig.json', 'tsconfig.base.json', 'vite.config.ts')
35 inputs.file rootProject.file('yarn.lock')
36 outputs.dir productionResources
37}
38
39artifacts {
40 productionAssets(productionResources) {
41 builtBy assembleFrontend
42 }
43}
44
45def generateXStateTypes = tasks.register('generateXStateTypes', RunYarn) {
46 dependsOn installFrontend
47 inputs.files sourcesWithoutTypegen
48 inputs.file 'package.json'
49 inputs.file rootProject.file('yarn.lock')
50 outputs.dir 'src'
51 script = 'run typegen'
52 description = 'Generate TypeScript typings for XState state machines.'
53}
54
55def typecheckFrontend = tasks.register('typecheckFrontend', RunYarn) {
56 dependsOn installFrontend
57 dependsOn generateXStateTypes
58 inputs.dir 'src'
59 inputs.dir 'types'
60 inputs.files('package.json', 'tsconfig.json', 'tsconfig.base.json', 'tsconfig.node.json')
61 inputs.file rootProject.file('yarn.lock')
62 outputs.dir "${buildDir}/typescript"
63 script = 'run typecheck'
64 group = 'verification'
65 description = 'Check for TypeScript type errors.'
66}
67
68def lintFrontend = tasks.register('lintFrontend', RunYarn) {
69 dependsOn installFrontend
70 dependsOn generateXStateTypes
71 dependsOn typecheckFrontend
72 inputs.dir 'src'
73 inputs.dir 'types'
74 inputs.files('.eslintrc.cjs', 'prettier.config.cjs')
75 inputs.files('package.json', 'tsconfig.json', 'tsconfig.base.json', 'tsconfig.node.json')
76 inputs.file rootProject.file('yarn.lock')
77 if (project.hasProperty('ci')) {
78 outputs.file "${buildDir}/eslint.json"
79 script = 'run lint:ci'
80 } else {
81 script = 'run lint'
82 }
83 group = 'verification'
84 description = 'Check for TypeScript lint errors and warnings.'
85}
86
87def prettier = tasks.register('fixFrontend', RunYarn) {
88 dependsOn installFrontend
89 dependsOn generateXStateTypes
90 dependsOn typecheckFrontend
91 inputs.dir 'src'
92 inputs.dir 'types'
93 inputs.files('.eslintrc.cjs', 'prettier.config.cjs')
94 inputs.files('package.json', 'tsconfig.json', 'tsconfig.base.json', 'tsconfig.node.json')
95 inputs.file rootProject.file('yarn.lock')
96 script = 'run lint:fix'
97 group = 'verification'
98 description = 'Fix TypeScript lint errors and warnings.'
99}
100
101tasks.named('check') {
102 dependsOn(typecheckFrontend)
103 dependsOn(lintFrontend)
104}
105
106tasks.register('serveFrontend', RunYarn) {
107 dependsOn installFrontend
108 dependsOn generateXStateTypes
109 inputs.dir 'public'
110 inputs.files sourcesWithoutTypegen
111 inputs.file 'index.html'
112 inputs.files('package.json', 'tsconfig.json', 'tsconfig.base.json', 'vite.config.ts')
113 inputs.file rootProject.file('yarn.lock')
114 outputs.dir "${viteOutputDir}/development"
115 script = 'run serve'
116 group = 'run'
117 description = 'Start a Vite dev server with hot module replacement.'
118}
119
120tasks.named('clean') {
121 delete 'dev-dist'
122 delete fileTree('src') {
123 include '**/*.typegen.ts'
124 }
125}
126
127sonarqube.properties {
128 properties['sonar.sources'] = 'src'
129 property 'sonar.nodejs.executable', "${frontend.nodeInstallDirectory.get()}/bin/node"
130 property 'sonar.eslint.reportPaths', "${buildDir}/eslint.json"
131}
diff --git a/subprojects/frontend/build.gradle.kts b/subprojects/frontend/build.gradle.kts
new file mode 100644
index 00000000..4a51c74e
--- /dev/null
+++ b/subprojects/frontend/build.gradle.kts
@@ -0,0 +1,127 @@
1import org.siouan.frontendgradleplugin.infrastructure.gradle.RunYarn
2import tools.refinery.buildsrc.SonarPropertiesUtils
3
4plugins {
5 id("refinery-frontend-workspace")
6 id("refinery-sonarqube")
7}
8
9val viteOutputDir = "$buildDir/vite"
10val productionResources = file("$viteOutputDir/production")
11
12frontend {
13 assembleScript.set("run build")
14}
15
16val productionAssets: Configuration by configurations.creating {
17 isCanBeConsumed = true
18 isCanBeResolved = false
19}
20
21val sourcesWithoutTypeGen = fileTree("src") {
22 exclude("**/*.typegen.ts")
23}
24
25val generateXStateTypes by tasks.registering(RunYarn::class) {
26 dependsOn(tasks.installFrontend)
27 inputs.files(sourcesWithoutTypeGen)
28 inputs.file("package.json")
29 inputs.file(rootProject.file("yarn.lock"))
30 outputs.dir("src")
31 script.set("run typegen")
32 description = "Generate TypeScript typings for XState state machines."
33}
34
35tasks.assembleFrontend {
36 dependsOn(generateXStateTypes)
37 inputs.dir("public")
38 inputs.files(sourcesWithoutTypeGen)
39 inputs.file("index.html")
40 inputs.files("package.json", "tsconfig.json", "tsconfig.base.json", "vite.config.ts")
41 inputs.file(rootProject.file("yarn.lock"))
42 outputs.dir(productionResources)
43}
44
45artifacts {
46 add("productionAssets", productionResources) {
47 builtBy(tasks.assembleFrontend)
48 }
49}
50
51val typeCheckFrontend by tasks.registering(RunYarn::class) {
52 dependsOn(tasks.installFrontend)
53 dependsOn(generateXStateTypes)
54 inputs.dir("src")
55 inputs.dir("types")
56 inputs.files("package.json", "tsconfig.json", "tsconfig.base.json", "tsconfig.node.json")
57 inputs.file(rootProject.file("yarn.lock"))
58 outputs.dir("$buildDir/typescript")
59 script.set("run typecheck")
60 group = "verification"
61 description = "Check for TypeScript type errors."
62}
63
64val lintFrontend by tasks.registering(RunYarn::class) {
65 dependsOn(tasks.installFrontend)
66 dependsOn(generateXStateTypes)
67 dependsOn(typeCheckFrontend)
68 inputs.dir("src")
69 inputs.dir("types")
70 inputs.files(".eslintrc.cjs", "prettier.config.cjs")
71 inputs.files("package.json", "tsconfig.json", "tsconfig.base.json", "tsconfig.node.json")
72 inputs.file(rootProject.file("yarn.lock"))
73 if (project.hasProperty("ci")) {
74 outputs.file("$buildDir/eslint.json")
75 script.set("run lint:ci")
76 } else {
77 script.set("run lint")
78 }
79 group = "verification"
80 description = "Check for TypeScript lint errors and warnings."
81}
82
83val fixFrontend by tasks.registering(RunYarn::class) {
84 dependsOn(tasks.installFrontend)
85 dependsOn(generateXStateTypes)
86 dependsOn(typeCheckFrontend)
87 inputs.dir("src")
88 inputs.dir("types")
89 inputs.files(".eslintrc.cjs", "prettier.config.cjs")
90 inputs.files("package.json", "tsconfig.json", "tsconfig.base.json", "tsconfig.node.json")
91 inputs.file(rootProject.file("yarn.lock"))
92 script.set("run lint:fix")
93 group = "verification"
94 description = "Fix TypeScript lint errors and warnings."
95}
96
97tasks.check {
98 dependsOn(typeCheckFrontend)
99 dependsOn(lintFrontend)
100}
101
102tasks.register("serveFrontend", RunYarn::class) {
103 dependsOn(tasks.installFrontend)
104 dependsOn(generateXStateTypes)
105 inputs.dir("public")
106 inputs.files(sourcesWithoutTypeGen)
107 inputs.file("index.html")
108 inputs.files("package.json", "tsconfig.json", "tsconfig.base.json", "vite.config.ts")
109 inputs.file(rootProject.file("yarn.lock"))
110 outputs.dir("$viteOutputDir/development")
111 script.set("run serve")
112 group = "run"
113 description = "Start a Vite dev server with hot module replacement."
114}
115
116tasks.clean {
117 delete("dev-dist")
118 delete(fileTree("src") {
119 include("**/*.typegen.ts")
120 })
121}
122
123sonarqube.properties {
124 SonarPropertiesUtils.addToList(properties, "sonar.sources", "src")
125 property("sonar.nodejs.executable", "${frontend.nodeInstallDirectory.get()}/bin/node")
126 property("sonar.eslint.reportPaths", "$buildDir/eslint.json")
127}
diff --git a/subprojects/language-ide/build.gradle b/subprojects/language-ide/build.gradle
deleted file mode 100644
index 3786762b..00000000
--- a/subprojects/language-ide/build.gradle
+++ /dev/null
@@ -1,18 +0,0 @@
1plugins {
2 id 'refinery-java-library'
3 id 'refinery-xtext-conventions'
4}
5
6dependencies {
7 api project(':refinery-language')
8 api libs.xtext.ide
9 api libs.xtext.xbase.ide
10}
11
12def generateXtextLanguage = project(':refinery-language').tasks.named('generateXtextLanguage')
13
14for (taskName in ['compileJava', 'processResources']) {
15 tasks.named(taskName) {
16 dependsOn generateXtextLanguage
17 }
18}
diff --git a/subprojects/language-ide/build.gradle.kts b/subprojects/language-ide/build.gradle.kts
new file mode 100644
index 00000000..b2e6d4c1
--- /dev/null
+++ b/subprojects/language-ide/build.gradle.kts
@@ -0,0 +1,18 @@
1plugins {
2 id("refinery-java-library")
3 id("refinery-xtext-conventions")
4}
5
6dependencies {
7 api(project(":refinery-language"))
8 api(libs.xtext.ide)
9 api(libs.xtext.xbase.ide)
10}
11
12val generateXtextLanguage = project(":refinery-language").tasks.named("generateXtextLanguage")
13
14for (taskName in listOf("compileJava", "processResources")) {
15 tasks.named(taskName) {
16 dependsOn(generateXtextLanguage)
17 }
18}
diff --git a/subprojects/language-model/build.gradle b/subprojects/language-model/build.gradle
deleted file mode 100644
index 275db188..00000000
--- a/subprojects/language-model/build.gradle
+++ /dev/null
@@ -1,55 +0,0 @@
1plugins {
2 id 'refinery-java-library'
3 id 'refinery-mwe2'
4 id 'refinery-sonarqube'
5}
6
7dependencies {
8 api libs.ecore
9 api libs.ecore.xmi
10 mwe2 libs.ecore.codegen
11 mwe2 libs.mwe.utils
12 mwe2 libs.mwe2.lib
13 mwe2 libs.xtext.core
14 mwe2 libs.xtext.xbase
15}
16
17sourceSets {
18 main {
19 java.srcDirs += ['src/main/emf-gen']
20 }
21}
22
23def generateEPackage = tasks.register('generateEPackage', JavaExec) {
24 mainClass = 'org.eclipse.emf.mwe2.launch.runtime.Mwe2Launcher'
25 classpath = configurations.mwe2
26 inputs.file 'src/main/java/tools/refinery/language/model/GenerateProblemModel.mwe2'
27 inputs.file 'src/main/resources/model/problem.ecore'
28 inputs.file 'src/main/resources/model/problem.genmodel'
29 outputs.dir 'src/main/emf-gen'
30 args += 'src/main/java/tools/refinery/language/model/GenerateProblemModel.mwe2'
31 args += '-p'
32 args += "rootPath=/${projectDir}"
33}
34
35for (taskName in ['compileJava', 'processResources', 'generateEclipseSourceFolders']) {
36 tasks.named(taskName) {
37 dependsOn generateEPackage
38 }
39}
40
41tasks.named('clean') {
42 delete 'src/main/emf-gen'
43}
44
45sonarqube.properties {
46 properties['sonar.exclusions'] += [
47 'src/main/emf-gen/**',
48 ]
49}
50
51eclipse.project.natures += [
52 'org.eclipse.sirius.nature.modelingproject',
53 'org.eclipse.pde.PluginNature',
54 'org.eclipse.xtext.ui.shared.xtextNature'
55]
diff --git a/subprojects/language-model/build.gradle.kts b/subprojects/language-model/build.gradle.kts
new file mode 100644
index 00000000..2804c698
--- /dev/null
+++ b/subprojects/language-model/build.gradle.kts
@@ -0,0 +1,53 @@
1import tools.refinery.buildsrc.SonarPropertiesUtils
2
3plugins {
4 id("refinery-java-library")
5 id("refinery-mwe2")
6 id("refinery-sonarqube")
7}
8
9dependencies {
10 api(libs.ecore)
11 api(libs.ecore.xmi)
12 mwe2(libs.ecore.codegen)
13 mwe2(libs.mwe.utils)
14 mwe2(libs.mwe2.lib)
15 mwe2(libs.xtext.core)
16 mwe2(libs.xtext.xbase)
17}
18
19sourceSets {
20 main {
21 java.srcDir("src/main/emf-gen")
22 }
23}
24
25val generateEPackage by tasks.registering(JavaExec::class) {
26 mainClass.set("org.eclipse.emf.mwe2.launch.runtime.Mwe2Launcher")
27 classpath(configurations.mwe2)
28 inputs.file("src/main/java/tools/refinery/language/model/GenerateProblemModel.mwe2")
29 inputs.file("src/main/resources/model/problem.ecore")
30 inputs.file("src/main/resources/model/problem.genmodel")
31 outputs.dir("src/main/emf-gen")
32 args("src/main/java/tools/refinery/language/model/GenerateProblemModel.mwe2", "-p", "rootPath=/$projectDir")
33}
34
35for (taskName in listOf("compileJava", "processResources", "generateEclipseSourceFolders")) {
36 tasks.named(taskName) {
37 dependsOn(generateEPackage)
38 }
39}
40
41tasks.clean {
42 delete("src/main/emf-gen")
43}
44
45sonarqube.properties {
46 SonarPropertiesUtils.addToList(properties, "sonar.exclusions", "src/main/emf-gen/**")
47}
48
49eclipse.project.natures.plusAssign(listOf(
50 "org.eclipse.sirius.nature.modelingproject",
51 "org.eclipse.pde.PluginNature",
52 "org.eclipse.xtext.ui.shared.xtextNature",
53))
diff --git a/subprojects/language-semantics/build.gradle b/subprojects/language-semantics/build.gradle
deleted file mode 100644
index 4f43ad24..00000000
--- a/subprojects/language-semantics/build.gradle
+++ /dev/null
@@ -1,11 +0,0 @@
1plugins {
2 id 'refinery-java-library'
3}
4
5dependencies {
6 implementation libs.eclipseCollections
7 implementation libs.eclipseCollections.api
8 api project(':refinery-language')
9 api project(':refinery-store')
10 testImplementation testFixtures(project(':refinery-language'))
11}
diff --git a/subprojects/language-semantics/build.gradle.kts b/subprojects/language-semantics/build.gradle.kts
new file mode 100644
index 00000000..e13e5e4a
--- /dev/null
+++ b/subprojects/language-semantics/build.gradle.kts
@@ -0,0 +1,11 @@
1plugins {
2 id("refinery-java-library")
3}
4
5dependencies {
6 implementation(libs.eclipseCollections)
7 implementation(libs.eclipseCollections.api)
8 api(project(":refinery-language"))
9 api(project(":refinery-store"))
10 testImplementation(testFixtures(project(":refinery-language")))
11}
diff --git a/subprojects/language-web/build.gradle b/subprojects/language-web/build.gradle
deleted file mode 100644
index 8d277a5b..00000000
--- a/subprojects/language-web/build.gradle
+++ /dev/null
@@ -1,87 +0,0 @@
1plugins {
2 id 'refinery-java-application'
3 id 'refinery-xtext-conventions'
4}
5
6configurations {
7 webapp {
8 canBeConsumed = false
9 canBeResolved = true
10 }
11
12 all {
13 // Use log4j-over-slf4j instead of log4j 1.x
14 exclude group: 'log4j', module: 'log4j'
15 }
16}
17
18dependencies {
19 implementation project(':refinery-language')
20 implementation project(':refinery-language-ide')
21 implementation libs.jetty.server
22 implementation libs.jetty.servlet
23 implementation libs.jetty.websocket.server
24 implementation libs.slf4j.api
25 implementation libs.slf4j.simple
26 implementation libs.slf4j.log4j
27 implementation libs.xtext.web
28 webapp project(path: ':refinery-frontend', configuration: 'productionAssets')
29 testImplementation testFixtures(project(':refinery-language'))
30 testImplementation libs.jetty.websocket.client
31}
32
33def generateXtextLanguage = project(':refinery-language').tasks.named('generateXtextLanguage')
34
35for (taskName in ['compileJava', 'processResources']) {
36 tasks.named(taskName) {
37 dependsOn generateXtextLanguage
38 }
39}
40
41mainClassName = 'tools.refinery.language.web.ServerLauncher'
42
43// Enable JDK 19 preview features for virtual thread support.
44application {
45 applicationDefaultJvmArgs += '--enable-preview'
46}
47tasks.withType(JavaCompile) {
48 options.release = 19
49 options.compilerArgs += '--enable-preview'
50}
51tasks.withType(Test) {
52 jvmArgs += '--enable-preview'
53}
54
55tasks.named('jar') {
56 dependsOn project.configurations.webapp
57 from(project.configurations.webapp) {
58 into 'webapp'
59 }
60}
61
62tasks.named('shadowJar') {
63 dependsOn project.configurations.webapp
64 from(project.sourceSets.main.output)
65 configurations = [project.configurations.runtimeClasspath]
66 exclude('META-INF/INDEX.LIST', 'META-INF/*.SF', 'META-INF/*.DSA', 'META-INF/*.RSA','schema/*',
67 '.options', '.api_description', '*.profile', 'about.*', 'about_*.html', 'about_files/*',
68 'plugin.xml', 'systembundle.properties', 'profile.list', 'META-INF/resources/xtext/**')
69 append('plugin.properties')
70 from(project.configurations.webapp) {
71 into 'webapp'
72 }
73}
74
75tasks.register('serveBackend', JavaExec) {
76 dependsOn project.configurations.webapp
77 dependsOn sourceSets.main.runtimeClasspath
78 classpath = sourceSets.main.runtimeClasspath
79 mainClass = mainClassName
80 // Enable JDK 19 preview features for virtual thread support.
81 jvmArgs += '--enable-preview'
82 standardInput = System.in
83 def baseResource = project.configurations.webapp.incoming.artifacts.artifactFiles.first()
84 environment BASE_RESOURCE: baseResource
85 group = 'run'
86 description = 'Start a Jetty web server serving the Xtex API and assets.'
87}
diff --git a/subprojects/language-web/build.gradle.kts b/subprojects/language-web/build.gradle.kts
new file mode 100644
index 00000000..c68daa9a
--- /dev/null
+++ b/subprojects/language-web/build.gradle.kts
@@ -0,0 +1,91 @@
1plugins {
2 id("refinery-java-application")
3 id("refinery-xtext-conventions")
4}
5
6val webapp: Configuration by configurations.creating {
7 isCanBeConsumed = false
8 isCanBeResolved = true
9}
10
11configurations.all {
12 // Use log4j-over-slf4j instead of log4j 1.x
13 exclude(group = "log4j", module = "log4j")
14}
15
16dependencies {
17 implementation(project(":refinery-language"))
18 implementation(project(":refinery-language-ide"))
19 implementation(libs.jetty.server)
20 implementation(libs.jetty.servlet)
21 implementation(libs.jetty.websocket.server)
22 implementation(libs.slf4j.api)
23 implementation(libs.slf4j.simple)
24 implementation(libs.slf4j.log4j)
25 implementation(libs.xtext.web)
26 webapp(project(path = ":refinery-frontend", configuration = "productionAssets"))
27 testImplementation(testFixtures(project(":refinery-language")))
28 testImplementation(libs.jetty.websocket.client)
29}
30
31val generateXtextLanguage = project(":refinery-language").tasks.named("generateXtextLanguage")
32
33for (taskName in listOf("compileJava", "processResources")) {
34 tasks.named(taskName) {
35 dependsOn(generateXtextLanguage)
36 }
37}
38
39application {
40 mainClass.set("tools.refinery.language.web.ServerLauncher")
41 // Enable JDK 19 preview features for virtual thread support.
42 applicationDefaultJvmArgs += "--enable-preview"
43}
44
45tasks.withType(JavaCompile::class) {
46 options.release.set(19)
47 // Enable JDK 19 preview features for virtual thread support.
48 options.compilerArgs.plusAssign("--enable-preview")
49}
50
51// Enable JDK 19 preview features for virtual thread support.
52fun enablePreview(task: JavaForkOptions) {
53 task.jvmArgs("--enable-preview")
54}
55
56tasks.withType(Test::class) {
57 enablePreview(this)
58}
59
60tasks.jar {
61 dependsOn(webapp)
62 from(webapp) {
63 into("webapp")
64 }
65}
66
67tasks.shadowJar {
68 dependsOn(webapp)
69 from(project.sourceSets.main.map { it.output })
70 exclude("META-INF/INDEX.LIST", "META-INF/*.SF", "META-INF/*.DSA", "META-INF/*.RSA","schema/*",
71 ".options", ".api_description", "*.profile", "about.*", "about_*.html", "about_files/*",
72 "plugin.xml", "systembundle.properties", "profile.list", "META-INF/resources/xtext/**")
73 append("plugin.properties")
74 from(webapp) {
75 into("webapp")
76 }
77}
78
79tasks.register("serveBackend", JavaExec::class) {
80 dependsOn(webapp)
81 val mainRuntimeClasspath = sourceSets.main.map { it.runtimeClasspath }
82 dependsOn(mainRuntimeClasspath)
83 classpath(mainRuntimeClasspath)
84 mainClass.set(application.mainClass)
85 enablePreview(this)
86 standardInput = System.`in`
87 val baseResource = webapp.incoming.artifacts.artifactFiles.first()
88 environment("BASE_RESOURCE", baseResource)
89 group = "run"
90 description = "Start a Jetty web server serving the Xtex API and assets."
91}
diff --git a/subprojects/language/build.gradle b/subprojects/language/build.gradle
deleted file mode 100644
index 654558e3..00000000
--- a/subprojects/language/build.gradle
+++ /dev/null
@@ -1,73 +0,0 @@
1plugins {
2 id 'refinery-java-library'
3 id 'refinery-java-test-fixtures'
4 id 'refinery-mwe2'
5 id 'refinery-sonarqube'
6 id 'refinery-xtext-conventions'
7}
8
9dependencies {
10 api platform(libs.xtext.bom)
11 api libs.ecore
12 api libs.xtext.core
13 api libs.xtext.xbase
14 api project(':refinery-language-model')
15 testFixturesApi libs.xtext.testing
16 mwe2 libs.xtext.generator
17 mwe2 libs.xtext.generator.antlr
18}
19
20sourceSets {
21 testFixtures {
22 java.srcDirs += ['src/testFixtures/xtext-gen']
23 resources.srcDirs += ['src/testFixtures/xtext-gen']
24 }
25}
26
27tasks.named('jar') {
28 from(sourceSets.main.allSource) {
29 include '**/*.xtext'
30 }
31}
32
33def generateXtextLanguage = tasks.register('generateXtextLanguage', JavaExec) {
34 mainClass = 'org.eclipse.emf.mwe2.launch.runtime.Mwe2Launcher'
35 classpath = configurations.mwe2
36 inputs.file 'src/main/java/tools/refinery/language/GenerateProblem.mwe2'
37 inputs.file 'src/main/java/tools/refinery/language/Problem.xtext'
38 outputs.dir 'src/main/xtext-gen'
39 outputs.dir 'src/testFixtures/xtext-gen'
40 outputs.dir '../language-ide/src/main/xtext-gen'
41 outputs.dir '../language-web/src/main/xtext-gen'
42 args += 'src/main/java/tools/refinery/language/GenerateProblem.mwe2'
43 args += '-p'
44 args += "rootPath=/${projectDir}/.."
45}
46
47for (taskName in [
48 'compileJava',
49 'processResources',
50 'processTestFixturesResources',
51 'generateEclipseSourceFolders'
52 ]) {
53 tasks.named(taskName) {
54 dependsOn generateXtextLanguage
55 }
56}
57
58tasks.named('clean') {
59 delete 'src/main/xtext-gen'
60 delete 'src/testFixtures/xtext-gen'
61 delete '../language-ide/src/main/xtext-gen'
62 delete '../language-web/src/main/xtext-gen'
63}
64
65sonarqube.properties {
66 properties['sonar.exclusions'] += [
67 'src/testFixtures/xtext-gen/**',
68 ]
69}
70
71eclipse.project.natures += [
72 'org.eclipse.xtext.ui.shared.xtextNature'
73]
diff --git a/subprojects/language/build.gradle.kts b/subprojects/language/build.gradle.kts
new file mode 100644
index 00000000..ed4f95a5
--- /dev/null
+++ b/subprojects/language/build.gradle.kts
@@ -0,0 +1,65 @@
1import tools.refinery.buildsrc.SonarPropertiesUtils
2
3plugins {
4 id("refinery-java-library")
5 id("refinery-java-test-fixtures")
6 id("refinery-sonarqube")
7 id("refinery-mwe2")
8 id("refinery-xtext-conventions")
9}
10
11dependencies {
12 api(platform(libs.xtext.bom))
13 api(libs.ecore)
14 api(libs.xtext.core)
15 api(libs.xtext.xbase)
16 api(project(":refinery-language-model"))
17 testFixturesApi(libs.xtext.testing)
18 mwe2(libs.xtext.generator)
19 mwe2(libs.xtext.generator.antlr)
20}
21
22sourceSets {
23 testFixtures {
24 java.srcDir("src/testFixtures/xtext-gen")
25 resources.srcDir("src/testFixtures/xtext-gen")
26 }
27}
28
29tasks.jar {
30 from(sourceSets.main.map { it.allSource }) {
31 include("**/*.xtext")
32 }
33}
34
35val generateXtextLanguage by tasks.registering(JavaExec::class) {
36 mainClass.set("org.eclipse.emf.mwe2.launch.runtime.Mwe2Launcher")
37 classpath(configurations.mwe2)
38 inputs.file("src/main/java/tools/refinery/language/GenerateProblem.mwe2")
39 inputs.file("src/main/java/tools/refinery/language/Problem.xtext")
40 outputs.dir("src/main/xtext-gen")
41 outputs.dir("src/testFixtures/xtext-gen")
42 outputs.dir("../language-ide/src/main/xtext-gen")
43 outputs.dir("../language-web/src/main/xtext-gen")
44 args("src/main/java/tools/refinery/language/GenerateProblem.mwe2", "-p", "rootPath=/$projectDir/..")
45}
46
47for (taskName in listOf("compileJava", "processResources", "processTestFixturesResources",
48 "generateEclipseSourceFolders")) {
49 tasks.named(taskName) {
50 dependsOn(generateXtextLanguage)
51 }
52}
53
54tasks.clean {
55 delete("src/main/xtext-gen")
56 delete("src/testFixtures/xtext-gen")
57 delete("../language-ide/src/main/xtext-gen")
58 delete("../language-web/src/main/xtext-gen")
59}
60
61sonarqube.properties {
62 SonarPropertiesUtils.addToList(properties, "sonar.exclusions", "src/textFixtures/xtext-gen/**")
63}
64
65eclipse.project.natures.plusAssign("org.eclipse.xtext.ui.shared.xtextNature")
diff --git a/subprojects/store-query-viatra/build.gradle b/subprojects/store-query-viatra/build.gradle
deleted file mode 100644
index 13a7544f..00000000
--- a/subprojects/store-query-viatra/build.gradle
+++ /dev/null
@@ -1,16 +0,0 @@
1plugins {
2 id 'refinery-java-library'
3}
4
5configurations.testRuntimeClasspath {
6 // VIATRA requires log4j 1.x, but we use log4j-over-slf4j instead
7 exclude group: 'log4j', module: 'log4j'
8}
9
10dependencies {
11 implementation libs.ecore
12 api libs.viatra
13 api project(':refinery-store-query')
14 testImplementation libs.slf4j.simple
15 testImplementation libs.slf4j.log4j
16}
diff --git a/subprojects/store-query-viatra/build.gradle.kts b/subprojects/store-query-viatra/build.gradle.kts
new file mode 100644
index 00000000..d7a37f11
--- /dev/null
+++ b/subprojects/store-query-viatra/build.gradle.kts
@@ -0,0 +1,16 @@
1plugins {
2 id("refinery-java-library")
3}
4
5configurations.testRuntimeClasspath {
6 // VIATRA requires log4j 1.x, but we use log4j-over-slf4j instead
7 exclude(group = "log4j", module = "log4j")
8}
9
10dependencies {
11 implementation(libs.ecore)
12 api(libs.viatra)
13 api(project(":refinery-store-query"))
14 testImplementation(libs.slf4j.simple)
15 testImplementation(libs.slf4j.log4j)
16}
diff --git a/subprojects/store-query/build.gradle b/subprojects/store-query/build.gradle
deleted file mode 100644
index 97761936..00000000
--- a/subprojects/store-query/build.gradle
+++ /dev/null
@@ -1,9 +0,0 @@
1plugins {
2 id 'refinery-java-library'
3 id 'refinery-java-test-fixtures'
4}
5
6dependencies {
7 api project(':refinery-store')
8 testFixturesApi libs.hamcrest
9}
diff --git a/subprojects/store-query/build.gradle.kts b/subprojects/store-query/build.gradle.kts
new file mode 100644
index 00000000..16dbd95d
--- /dev/null
+++ b/subprojects/store-query/build.gradle.kts
@@ -0,0 +1,9 @@
1plugins {
2 id("refinery-java-library")
3 id("refinery-java-test-fixtures")
4}
5
6dependencies {
7 api(project(":refinery-store"))
8 testFixturesApi(libs.hamcrest)
9}
diff --git a/subprojects/store-reasoning/build.gradle b/subprojects/store-reasoning/build.gradle
deleted file mode 100644
index cb440d9f..00000000
--- a/subprojects/store-reasoning/build.gradle
+++ /dev/null
@@ -1,7 +0,0 @@
1plugins {
2 id 'refinery-java-library'
3}
4
5dependencies {
6 api project(':refinery-store-query')
7}
diff --git a/subprojects/store-reasoning/build.gradle.kts b/subprojects/store-reasoning/build.gradle.kts
new file mode 100644
index 00000000..fe15fc42
--- /dev/null
+++ b/subprojects/store-reasoning/build.gradle.kts
@@ -0,0 +1,7 @@
1plugins {
2 id("refinery-java-library")
3}
4
5dependencies {
6 api(project(":refinery-store-query"))
7}
diff --git a/subprojects/store/build.gradle b/subprojects/store/build.gradle
deleted file mode 100644
index 370d094b..00000000
--- a/subprojects/store/build.gradle
+++ /dev/null
@@ -1,4 +0,0 @@
1plugins {
2 id 'refinery-java-library'
3 id 'refinery-jmh'
4}
diff --git a/subprojects/store/build.gradle.kts b/subprojects/store/build.gradle.kts
new file mode 100644
index 00000000..5b4eac46
--- /dev/null
+++ b/subprojects/store/build.gradle.kts
@@ -0,0 +1,4 @@
1plugins {
2 id("refinery-java-library")
3 id("refinery-jmh")
4}