aboutsummaryrefslogtreecommitdiffstats
path: root/buildSrc/src/main
diff options
context:
space:
mode:
Diffstat (limited to 'buildSrc/src/main')
-rw-r--r--buildSrc/src/main/kotlin/tools/refinery/gradle/frontend-workspace.gradle.kts3
-rw-r--r--buildSrc/src/main/kotlin/tools/refinery/gradle/frontend-worktree.gradle.kts61
-rw-r--r--buildSrc/src/main/kotlin/tools/refinery/gradle/internal/frontend-conventions.gradle.kts2
-rw-r--r--buildSrc/src/main/kotlin/tools/refinery/gradle/interpreter-library.gradle.kts9
-rw-r--r--buildSrc/src/main/kotlin/tools/refinery/gradle/java-application.gradle.kts19
-rw-r--r--buildSrc/src/main/kotlin/tools/refinery/gradle/java-conventions.gradle.kts (renamed from buildSrc/src/main/kotlin/tools/refinery/gradle/internal/java-conventions.gradle.kts)70
-rw-r--r--buildSrc/src/main/kotlin/tools/refinery/gradle/java-library.gradle.kts13
-rw-r--r--buildSrc/src/main/kotlin/tools/refinery/gradle/java-test-fixtures.gradle.kts3
-rw-r--r--buildSrc/src/main/kotlin/tools/refinery/gradle/jmh.gradle.kts5
-rw-r--r--buildSrc/src/main/kotlin/tools/refinery/gradle/maven-bom.gradle.kts19
-rw-r--r--buildSrc/src/main/kotlin/tools/refinery/gradle/maven-publish.gradle.kts74
-rw-r--r--buildSrc/src/main/kotlin/tools/refinery/gradle/mwe2.gradle.kts9
-rw-r--r--buildSrc/src/main/kotlin/tools/refinery/gradle/signing.gradle.kts20
-rw-r--r--buildSrc/src/main/kotlin/tools/refinery/gradle/xtext-generated.gradle.kts2
14 files changed, 244 insertions, 65 deletions
diff --git a/buildSrc/src/main/kotlin/tools/refinery/gradle/frontend-workspace.gradle.kts b/buildSrc/src/main/kotlin/tools/refinery/gradle/frontend-workspace.gradle.kts
index 436d575d..3d5deb84 100644
--- a/buildSrc/src/main/kotlin/tools/refinery/gradle/frontend-workspace.gradle.kts
+++ b/buildSrc/src/main/kotlin/tools/refinery/gradle/frontend-workspace.gradle.kts
@@ -46,9 +46,10 @@ tasks {
46 } 46 }
47 47
48 assembleFrontend { 48 assembleFrontend {
49 val onlyIfProvider = provider { frontend.assembleScript.isPresent }
49 // Workaround to enable this task even if we have disabled `installPackageManager`. See 50 // Workaround to enable this task even if we have disabled `installPackageManager`. See
50 // https://github.com/siouan/frontend-gradle-plugin/blob/2add49d3a74c927abc813d98787be116d0074afe/plugin/src/main/java/org/siouan/frontendgradleplugin/FrontendGradlePlugin.java#L514-L516 51 // https://github.com/siouan/frontend-gradle-plugin/blob/2add49d3a74c927abc813d98787be116d0074afe/plugin/src/main/java/org/siouan/frontendgradleplugin/FrontendGradlePlugin.java#L514-L516
51 setOnlyIf { frontend.assembleScript.isPresent } 52 onlyIf { onlyIfProvider.get() }
52 // Workaround for disabled `resolvePackageManager`. See 53 // Workaround for disabled `resolvePackageManager`. See
53 // https://github.com/siouan/frontend-gradle-plugin/blob/2add49d3a74c927abc813d98787be116d0074afe/plugin/src/main/java/org/siouan/frontendgradleplugin/FrontendGradlePlugin.java#L513 54 // https://github.com/siouan/frontend-gradle-plugin/blob/2add49d3a74c927abc813d98787be116d0074afe/plugin/src/main/java/org/siouan/frontendgradleplugin/FrontendGradlePlugin.java#L513
54 executableType.set(ExecutableType.YARN) 55 executableType.set(ExecutableType.YARN)
diff --git a/buildSrc/src/main/kotlin/tools/refinery/gradle/frontend-worktree.gradle.kts b/buildSrc/src/main/kotlin/tools/refinery/gradle/frontend-worktree.gradle.kts
index 30cfb26f..795121f9 100644
--- a/buildSrc/src/main/kotlin/tools/refinery/gradle/frontend-worktree.gradle.kts
+++ b/buildSrc/src/main/kotlin/tools/refinery/gradle/frontend-worktree.gradle.kts
@@ -20,40 +20,59 @@ frontend {
20 }) 20 })
21} 21}
22 22
23val frontendPropertiesFile: Provider<String> = frontend.nodeInstallDirectory.map { dir -> "$dir/frontend.properties" } 23abstract class FrontendPropertiesHandler @Inject constructor(objectFactory: ObjectFactory) {
24 companion object {
25 private const val INSTALLED_NODE_VERSION_PROPERTY = "installedNodeVersion"
26 }
27
28 val frontedPropertiesFile = objectFactory.property(String::class)
29
30 val nodeVersion = objectFactory.property(String::class)
24 31
25fun readFrontendProperties(): Properties { 32 private fun readFrontendProperties(): Properties {
26 val props = Properties() 33 val props = Properties()
27 try { 34 try {
28 FileInputStream(frontendPropertiesFile.get()).use { inputStream -> 35 FileInputStream(frontedPropertiesFile.get()).use { inputStream ->
29 props.load(inputStream) 36 props.load(inputStream)
37 }
38 } catch (ignored: FileNotFoundException) {
39 // Ignore missing file.
30 } 40 }
31 } catch (ignored: FileNotFoundException) { 41 return props
32 // Ignore missing file.
33 } 42 }
34 return props
35}
36 43
37fun getFrontendProperty(propertyName: String): String? { 44 private fun getFrontendProperty(propertyName: String): String? {
38 val props = readFrontendProperties() 45 val props = readFrontendProperties()
39 return props[propertyName]?.toString() 46 return props[propertyName]?.toString()
40} 47 }
48
49 private fun putFrontedProperty(propertyName: String, propertyValue: String) {
50 val props = readFrontendProperties()
51 props[propertyName] = propertyValue
52 FileOutputStream(frontedPropertiesFile.get()).use { outputStream ->
53 props.store(outputStream, "generated by refinery-frontend-worktree")
54 }
55 }
56
57 fun needsInstall(): Boolean {
58 return getFrontendProperty(INSTALLED_NODE_VERSION_PROPERTY) != nodeVersion.get()
59 }
41 60
42fun putFrontedProperty(propertyName: String, propertyValue: String) { 61 fun markAsInstalled() {
43 val props = readFrontendProperties() 62 putFrontedProperty(INSTALLED_NODE_VERSION_PROPERTY, nodeVersion.get())
44 props[propertyName] = propertyValue
45 FileOutputStream(frontendPropertiesFile.get()).use { outputStream ->
46 props.store(outputStream, "generated by refinery-frontend-worktree")
47 } 63 }
48} 64}
49 65
50tasks { 66tasks {
51 installNode { 67 installNode {
68 val handler = project.objects.newInstance<FrontendPropertiesHandler>()
69 handler.frontedPropertiesFile = frontend.nodeInstallDirectory.map { dir -> "$dir/frontend.properties" }
70 handler.nodeVersion = frontend.nodeVersion
52 onlyIf { 71 onlyIf {
53 getFrontendProperty("installedNodeVersion") != frontend.nodeVersion.get() 72 handler.needsInstall()
54 } 73 }
55 doLast { 74 doLast {
56 putFrontedProperty("installedNodeVersion", frontend.nodeVersion.get()) 75 handler.markAsInstalled()
57 } 76 }
58 } 77 }
59 78
diff --git a/buildSrc/src/main/kotlin/tools/refinery/gradle/internal/frontend-conventions.gradle.kts b/buildSrc/src/main/kotlin/tools/refinery/gradle/internal/frontend-conventions.gradle.kts
index 65481bd1..3c579f48 100644
--- a/buildSrc/src/main/kotlin/tools/refinery/gradle/internal/frontend-conventions.gradle.kts
+++ b/buildSrc/src/main/kotlin/tools/refinery/gradle/internal/frontend-conventions.gradle.kts
@@ -6,7 +6,7 @@
6package tools.refinery.gradle.internal 6package tools.refinery.gradle.internal
7 7
8plugins { 8plugins {
9 id("org.siouan.frontend-jdk17") 9 id("org.siouan.frontend-jdk21")
10} 10}
11 11
12frontend { 12frontend {
diff --git a/buildSrc/src/main/kotlin/tools/refinery/gradle/interpreter-library.gradle.kts b/buildSrc/src/main/kotlin/tools/refinery/gradle/interpreter-library.gradle.kts
index 8bafa1a5..6bee5b5d 100644
--- a/buildSrc/src/main/kotlin/tools/refinery/gradle/interpreter-library.gradle.kts
+++ b/buildSrc/src/main/kotlin/tools/refinery/gradle/interpreter-library.gradle.kts
@@ -23,6 +23,15 @@ tasks {
23 } 23 }
24} 24}
25 25
26publishing.publications.named<MavenPublication>("mavenJava") {
27 pom.developers {
28 developer {
29 name = "The VIATRAâ„¢ Authors"
30 url = "https://eclipse.dev/viatra/"
31 }
32 }
33}
34
26sonarqube.properties { 35sonarqube.properties {
27 // Code copied from the VIATRA project is maintained by the VIATRA contributors. 36 // Code copied from the VIATRA project is maintained by the VIATRA contributors.
28 // Our own modifications are verified by tests in our own subprojects. 37 // Our own modifications are verified by tests in our own subprojects.
diff --git a/buildSrc/src/main/kotlin/tools/refinery/gradle/java-application.gradle.kts b/buildSrc/src/main/kotlin/tools/refinery/gradle/java-application.gradle.kts
index 6c80c971..469ebf59 100644
--- a/buildSrc/src/main/kotlin/tools/refinery/gradle/java-application.gradle.kts
+++ b/buildSrc/src/main/kotlin/tools/refinery/gradle/java-application.gradle.kts
@@ -1,5 +1,5 @@
1/* 1/*
2 * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> 2 * SPDX-FileCopyrightText: 2021-2024 The Refinery Authors <https://refinery.tools/>
3 * 3 *
4 * SPDX-License-Identifier: EPL-2.0 4 * SPDX-License-Identifier: EPL-2.0
5 */ 5 */
@@ -9,24 +9,17 @@ import org.gradle.accessors.dm.LibrariesForLibs
9 9
10plugins { 10plugins {
11 application 11 application
12 id("com.github.johnrengelman.shadow") 12 id("tools.refinery.gradle.java-conventions")
13 id("tools.refinery.gradle.internal.java-conventions")
14}
15
16// Use log4j-over-slf4j instead of log4j 1.x when running the application.
17configurations.runtimeClasspath {
18 exclude(group = "log4j", module = "log4j")
19} 13}
20 14
21val libs = the<LibrariesForLibs>() 15val libs = the<LibrariesForLibs>()
22 16
23dependencies { 17dependencies {
24 implementation(libs.slf4j.simple) 18 runtimeOnly(libs.slf4j.simple)
25 implementation(libs.slf4j.log4j) 19 implementation(libs.slf4j.log4j)
20 implementation(enforcedPlatform(project(":refinery-bom-dependencies")))
26} 21}
27 22
28for (taskName in listOf("distZip", "shadowDistTar", "shadowDistZip")) { 23tasks.distZip {
29 tasks.named(taskName) { 24 enabled = false
30 enabled = false
31 }
32} 25}
diff --git a/buildSrc/src/main/kotlin/tools/refinery/gradle/internal/java-conventions.gradle.kts b/buildSrc/src/main/kotlin/tools/refinery/gradle/java-conventions.gradle.kts
index b149a483..354cd911 100644
--- a/buildSrc/src/main/kotlin/tools/refinery/gradle/internal/java-conventions.gradle.kts
+++ b/buildSrc/src/main/kotlin/tools/refinery/gradle/java-conventions.gradle.kts
@@ -1,18 +1,16 @@
1/* 1/*
2 * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> 2 * SPDX-FileCopyrightText: 2021-2024 The Refinery Authors <https://refinery.tools/>
3 * 3 *
4 * SPDX-License-Identifier: EPL-2.0 4 * SPDX-License-Identifier: EPL-2.0
5 */ 5 */
6package tools.refinery.gradle.internal 6package tools.refinery.gradle
7 7
8import org.gradle.accessors.dm.LibrariesForLibs 8import org.gradle.accessors.dm.LibrariesForLibs
9import org.gradle.plugins.ide.eclipse.model.ProjectDependency
10import tools.refinery.gradle.utils.EclipseUtils 9import tools.refinery.gradle.utils.EclipseUtils
11 10
12plugins { 11plugins {
13 jacoco 12 jacoco
14 java 13 java
15 `maven-publish`
16 id("tools.refinery.gradle.eclipse") 14 id("tools.refinery.gradle.eclipse")
17} 15}
18 16
@@ -20,24 +18,28 @@ repositories {
20 mavenCentral() 18 mavenCentral()
21} 19}
22 20
23// Use log4j-over-slf4j instead of log4j 1.x in the tests. 21configurations.withType(Configuration::class) {
24configurations.testRuntimeClasspath { 22 if (name.endsWith("Classpath")) {
25 exclude(group = "log4j", module = "log4j") 23 exclude(group = "log4j", module = "log4j")
24 exclude(group = "ch.qos.reload4j", module = "reload4j")
25 }
26} 26}
27 27
28val libs = the<LibrariesForLibs>() 28val libs = the<LibrariesForLibs>()
29 29
30dependencies { 30dependencies {
31 compileOnly(libs.jetbrainsAnnotations) 31 compileOnly(libs.jetbrainsAnnotations)
32 compileOnly(libs.slf4j.log4j)
32 testCompileOnly(libs.jetbrainsAnnotations) 33 testCompileOnly(libs.jetbrainsAnnotations)
33 testImplementation(libs.hamcrest) 34 testImplementation(libs.hamcrest)
34 testImplementation(libs.junit.api) 35 testImplementation(libs.junit.api)
36 testImplementation(enforcedPlatform(project(":refinery-bom-dependencies")))
35 testRuntimeOnly(libs.junit.engine) 37 testRuntimeOnly(libs.junit.engine)
36 testRuntimeOnly("org.junit.platform:junit-platform-launcher") 38 testRuntimeOnly(libs.junit.launcher)
39 testRuntimeOnly(libs.slf4j.simple)
37 testImplementation(libs.junit.params) 40 testImplementation(libs.junit.params)
38 testImplementation(libs.mockito.core) 41 testImplementation(libs.mockito.core)
39 testImplementation(libs.mockito.junit) 42 testImplementation(libs.mockito.junit)
40 testImplementation(libs.slf4j.simple)
41 testImplementation(libs.slf4j.log4j) 43 testImplementation(libs.slf4j.log4j)
42} 44}
43 45
@@ -68,8 +70,7 @@ tasks {
68 jar { 70 jar {
69 manifest { 71 manifest {
70 attributes( 72 attributes(
71 "Bundle-SymbolicName" to "${project.group}.${project.name}", 73 "Bundle-SymbolicName" to "${project.group}.${project.name}", "Bundle-Version" to project.version
72 "Bundle-Version" to project.version
73 ) 74 )
74 } 75 }
75 } 76 }
@@ -98,20 +99,43 @@ tasks {
98 } 99 }
99} 100}
100 101
101publishing.publications { 102fun collectDependentProjects(configuration: Configuration, dependentProjects: MutableCollection<Project>) {
102 create<MavenPublication>("mavenJava") { 103 for (dependency in configuration.dependencies) {
103 from(components["java"]) 104 if (dependency is ProjectDependency) {
104 pom { 105 val dependentProject = dependency.dependencyProject
105 licenses { 106 if (dependentProject.plugins.hasPlugin(JavaPlugin::class) && dependentProjects.add(dependentProject)) {
106 license { 107 collectDependentProjectsTransitively(dependentProject, dependentProjects)
107 name = "Eclipse Public License - v 2.0"
108 url = "https://www.eclipse.org/legal/epl-2.0/"
109 }
110 } 108 }
111 } 109 }
112 } 110 }
113} 111}
114 112
113fun collectDependentProjectsTransitively(dependentProject: Project, dependentProjects: MutableCollection<Project>) {
114 val apiConfiguration = dependentProject.configurations.findByName("api")
115 if (apiConfiguration != null) {
116 collectDependentProjects(apiConfiguration, dependentProjects)
117 }
118 collectDependentProjects(configurations.implementation.get(), dependentProjects)
119}
120
121gradle.projectsEvaluated {
122 tasks.javadoc {
123 val dependentProjects = LinkedHashSet<Project>()
124 collectDependentProjectsTransitively(project, dependentProjects)
125 val links = ArrayList<JavadocOfflineLink>()
126 for (dependentProject in dependentProjects.sortedBy { it.name }) {
127 dependsOn(dependentProject.tasks.javadoc)
128 val javadocDir = dependentProject.layout.buildDirectory.map { it.dir("docs/javadoc") }
129 inputs.dir(javadocDir)
130 links += JavadocOfflineLink("../${dependentProject.name}", javadocDir.get().asFile.path)
131 }
132 options {
133 this as StandardJavadocDocletOptions
134 linksOffline = (linksOffline ?: listOf()) + links
135 }
136 }
137}
138
115eclipse { 139eclipse {
116 EclipseUtils.patchClasspathEntries(this) { entry -> 140 EclipseUtils.patchClasspathEntries(this) { entry ->
117 if (entry.path.endsWith("-gen")) { 141 if (entry.path.endsWith("-gen")) {
@@ -120,7 +144,7 @@ eclipse {
120 // If a project has a main dependency on a project and a test dependency on the testFixtures of a project, 144 // If a project has a main dependency on a project and a test dependency on the testFixtures of a project,
121 // it will be erroneously added as a test-only dependency to Eclipse. As a workaround, we add all project 145 // it will be erroneously added as a test-only dependency to Eclipse. As a workaround, we add all project
122 // dependencies as main dependencies (we do not deliberately use test-only project dependencies). 146 // dependencies as main dependencies (we do not deliberately use test-only project dependencies).
123 if (entry is ProjectDependency) { 147 if (entry is org.gradle.plugins.ide.eclipse.model.ProjectDependency) {
124 entry.entryAttributes.remove("test") 148 entry.entryAttributes.remove("test")
125 } 149 }
126 } 150 }
diff --git a/buildSrc/src/main/kotlin/tools/refinery/gradle/java-library.gradle.kts b/buildSrc/src/main/kotlin/tools/refinery/gradle/java-library.gradle.kts
index 3aff3833..3c3623f6 100644
--- a/buildSrc/src/main/kotlin/tools/refinery/gradle/java-library.gradle.kts
+++ b/buildSrc/src/main/kotlin/tools/refinery/gradle/java-library.gradle.kts
@@ -1,5 +1,5 @@
1/* 1/*
2 * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> 2 * SPDX-FileCopyrightText: 2021-2024 The Refinery Authors <https://refinery.tools/>
3 * 3 *
4 * SPDX-License-Identifier: EPL-2.0 4 * SPDX-License-Identifier: EPL-2.0
5 */ 5 */
@@ -7,5 +7,14 @@ package tools.refinery.gradle
7 7
8plugins { 8plugins {
9 `java-library` 9 `java-library`
10 id("tools.refinery.gradle.internal.java-conventions") 10 id("tools.refinery.gradle.java-conventions")
11 id("tools.refinery.gradle.maven-publish")
12}
13
14dependencies {
15 api(platform(project(":refinery-bom-dependencies")))
16}
17
18publishing.publications.named<MavenPublication>("mavenJava") {
19 from(components["java"])
11} 20}
diff --git a/buildSrc/src/main/kotlin/tools/refinery/gradle/java-test-fixtures.gradle.kts b/buildSrc/src/main/kotlin/tools/refinery/gradle/java-test-fixtures.gradle.kts
index 004be8b4..23720562 100644
--- a/buildSrc/src/main/kotlin/tools/refinery/gradle/java-test-fixtures.gradle.kts
+++ b/buildSrc/src/main/kotlin/tools/refinery/gradle/java-test-fixtures.gradle.kts
@@ -10,7 +10,8 @@ import tools.refinery.gradle.utils.EclipseUtils
10 10
11plugins { 11plugins {
12 `java-test-fixtures` 12 `java-test-fixtures`
13 id("tools.refinery.gradle.internal.java-conventions") 13 id("tools.refinery.gradle.java-conventions")
14 id("tools.refinery.gradle.maven-publish")
14} 15}
15 16
16publishing.publications { 17publishing.publications {
diff --git a/buildSrc/src/main/kotlin/tools/refinery/gradle/jmh.gradle.kts b/buildSrc/src/main/kotlin/tools/refinery/gradle/jmh.gradle.kts
index 6fb8fbac..5dde7033 100644
--- a/buildSrc/src/main/kotlin/tools/refinery/gradle/jmh.gradle.kts
+++ b/buildSrc/src/main/kotlin/tools/refinery/gradle/jmh.gradle.kts
@@ -10,7 +10,7 @@ import tools.refinery.gradle.utils.EclipseUtils
10import tools.refinery.gradle.utils.SonarPropertiesUtils 10import tools.refinery.gradle.utils.SonarPropertiesUtils
11 11
12plugins { 12plugins {
13 id("tools.refinery.gradle.internal.java-conventions") 13 id("tools.refinery.gradle.java-conventions")
14 id("tools.refinery.gradle.sonarqube") 14 id("tools.refinery.gradle.sonarqube")
15} 15}
16 16
@@ -35,7 +35,10 @@ configurations["jmhRuntimeOnly"].extendsFrom(configurations.runtimeOnly.get(), c
35val libs = the<LibrariesForLibs>() 35val libs = the<LibrariesForLibs>()
36 36
37dependencies { 37dependencies {
38 jmhImplementation(enforcedPlatform(project(":refinery-bom-dependencies")))
38 jmhImplementation(libs.jmh.core) 39 jmhImplementation(libs.jmh.core)
40 jmhImplementation(libs.slf4j.log4j)
41 jmhImplementation(libs.slf4j.simple)
39 jmhAnnotationProcessor(libs.jmh.annprocess) 42 jmhAnnotationProcessor(libs.jmh.annprocess)
40} 43}
41 44
diff --git a/buildSrc/src/main/kotlin/tools/refinery/gradle/maven-bom.gradle.kts b/buildSrc/src/main/kotlin/tools/refinery/gradle/maven-bom.gradle.kts
new file mode 100644
index 00000000..0ecbcad6
--- /dev/null
+++ b/buildSrc/src/main/kotlin/tools/refinery/gradle/maven-bom.gradle.kts
@@ -0,0 +1,19 @@
1/*
2 * SPDX-FileCopyrightText: 2024 The Refinery Authors <https://refinery.tools/>
3 *
4 * SPDX-License-Identifier: EPL-2.0
5 */
6package tools.refinery.gradle
7
8plugins {
9 `java-platform`
10 id("tools.refinery.gradle.maven-publish")
11}
12
13javaPlatform {
14 allowDependencies()
15}
16
17publishing.publications.named<MavenPublication>("mavenJava") {
18 from(components["javaPlatform"])
19}
diff --git a/buildSrc/src/main/kotlin/tools/refinery/gradle/maven-publish.gradle.kts b/buildSrc/src/main/kotlin/tools/refinery/gradle/maven-publish.gradle.kts
new file mode 100644
index 00000000..6315e350
--- /dev/null
+++ b/buildSrc/src/main/kotlin/tools/refinery/gradle/maven-publish.gradle.kts
@@ -0,0 +1,74 @@
1/*
2 * SPDX-FileCopyrightText: 2024 The Refinery Authors <https://refinery.tools/>
3 *
4 * SPDX-License-Identifier: EPL-2.0
5 */
6package tools.refinery.gradle
7
8plugins {
9 `maven-publish`
10 id("tools.refinery.gradle.signing")
11}
12
13val mavenRepositoryDir = rootProject.layout.buildDirectory.map { it.dir("repo") }
14
15open class MavenArtifactExtension(project: Project) {
16 var name: String = project.name.split("-").drop(1).joinToString(" ") { segment ->
17 segment.replaceFirstChar { it.uppercase() }
18 }
19 var description: String? = null
20}
21
22val artifactExtension = project.extensions.create<MavenArtifactExtension>("mavenArtifact", project)
23
24publishing {
25 publications {
26 create<MavenPublication>("mavenJava") {
27 pom {
28 name = provider { "Refinery ${artifactExtension.name}" }
29 description = provider {
30 val prefix = artifactExtension.description ?: artifactExtension.name.lowercase()
31 .replaceFirstChar { it.uppercase() }
32 "$prefix in Refinery, an efficient graph solver for generating well-formed models"
33 }
34 url = "https://refinery.tools/"
35 licenses {
36 license {
37 name = "Eclipse Public License - v 2.0"
38 url = "https://www.eclipse.org/legal/epl-2.0/"
39 }
40 }
41 developers {
42 developer {
43 name = "The Refinery Authors"
44 url = "https://refinery.tools/"
45 }
46 }
47 scm {
48 connection = "scm:git:https://github.com/graphs4value/refinery.git"
49 developerConnection = "scm:git:ssh://github.com:graphs4value/refinery.git"
50 url = "https://github.com/graphs4value/refinery"
51 }
52 issueManagement {
53 url = "https://github.com/graphs4value/refinery/issues"
54 }
55 }
56 }
57 }
58
59 repositories {
60 maven {
61 name = "file"
62 setUrl(mavenRepositoryDir.map { uri(it) })
63 }
64 }
65}
66
67tasks.named<PublishToMavenRepository>("publishMavenJavaPublicationToFileRepository") {
68 mustRunAfter(rootProject.tasks.named("cleanMavenRepository"))
69 outputs.dir(mavenRepositoryDir)
70}
71
72signing {
73 sign(publishing.publications["mavenJava"])
74}
diff --git a/buildSrc/src/main/kotlin/tools/refinery/gradle/mwe2.gradle.kts b/buildSrc/src/main/kotlin/tools/refinery/gradle/mwe2.gradle.kts
index f4381434..c20adb85 100644
--- a/buildSrc/src/main/kotlin/tools/refinery/gradle/mwe2.gradle.kts
+++ b/buildSrc/src/main/kotlin/tools/refinery/gradle/mwe2.gradle.kts
@@ -8,19 +8,26 @@ package tools.refinery.gradle
8import org.gradle.accessors.dm.LibrariesForLibs 8import org.gradle.accessors.dm.LibrariesForLibs
9 9
10plugins { 10plugins {
11 id("tools.refinery.gradle.internal.java-conventions") 11 id("tools.refinery.gradle.java-conventions")
12} 12}
13 13
14val mwe2: Configuration by configurations.creating { 14val mwe2: Configuration by configurations.creating {
15 isCanBeConsumed = false 15 isCanBeConsumed = false
16 isCanBeResolved = true 16 isCanBeResolved = true
17 extendsFrom(configurations.implementation.get()) 17 extendsFrom(configurations.implementation.get())
18 // Exclude also here, because the name of this configuration doesn't end with {@code Classpath},
19 // so it isn't caught by {@code tools.refinery.gradle.java-conventions}.
20 exclude(group = "log4j", module = "log4j")
21 exclude(group = "ch.qos.reload4j", module = "reload4j")
18} 22}
19 23
20val libs = the<LibrariesForLibs>() 24val libs = the<LibrariesForLibs>()
21 25
22dependencies { 26dependencies {
27 mwe2(enforcedPlatform(project(":refinery-bom-dependencies")))
23 mwe2(libs.mwe2.launch) 28 mwe2(libs.mwe2.launch)
29 mwe2(libs.slf4j.log4j)
30 mwe2(libs.slf4j.simple)
24} 31}
25 32
26eclipse.classpath.plusConfigurations += mwe2 33eclipse.classpath.plusConfigurations += mwe2
diff --git a/buildSrc/src/main/kotlin/tools/refinery/gradle/signing.gradle.kts b/buildSrc/src/main/kotlin/tools/refinery/gradle/signing.gradle.kts
new file mode 100644
index 00000000..0e5792be
--- /dev/null
+++ b/buildSrc/src/main/kotlin/tools/refinery/gradle/signing.gradle.kts
@@ -0,0 +1,20 @@
1/*
2 * SPDX-FileCopyrightText: 2024 The Refinery Authors <https://refinery.tools/>
3 *
4 * SPDX-License-Identifier: EPL-2.0
5 */
6package tools.refinery.gradle
7
8plugins {
9 signing
10}
11
12signing {
13 // The underlying property cannot be set publicly.
14 @Suppress("UsePropertyAccessSyntax")
15 setRequired(project.hasProperty("forceSign"))
16 val signingKeyId = System.getenv("PGP_KEY_ID")
17 val signingKey = System.getenv("PGP_KEY")
18 val signingPassword = System.getenv("PGP_PASSWORD")
19 useInMemoryPgpKeys(signingKeyId, signingKey, signingPassword)
20}
diff --git a/buildSrc/src/main/kotlin/tools/refinery/gradle/xtext-generated.gradle.kts b/buildSrc/src/main/kotlin/tools/refinery/gradle/xtext-generated.gradle.kts
index 6f06cc3e..5cf9dde5 100644
--- a/buildSrc/src/main/kotlin/tools/refinery/gradle/xtext-generated.gradle.kts
+++ b/buildSrc/src/main/kotlin/tools/refinery/gradle/xtext-generated.gradle.kts
@@ -8,7 +8,7 @@ package tools.refinery.gradle
8import tools.refinery.gradle.utils.SonarPropertiesUtils 8import tools.refinery.gradle.utils.SonarPropertiesUtils
9 9
10plugins { 10plugins {
11 id("tools.refinery.gradle.internal.java-conventions") 11 id("tools.refinery.gradle.java-conventions")
12 id("tools.refinery.gradle.sonarqube") 12 id("tools.refinery.gradle.sonarqube")
13} 13}
14 14