Skip to content

Commit d81c0cf

Browse files
Merge pull request #50 from SpineEventEngine/write-settings-task-dependencies
Set dependnecies on `WriteCompilerPluginsSettings` task
2 parents 21e3ba0 + d4c42b4 commit d81c0cf

File tree

7 files changed

+81
-319
lines changed

7 files changed

+81
-319
lines changed

buildSrc/src/main/kotlin/io/spine/dependency/local/CoreJvmCompiler.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,12 +46,12 @@ object CoreJvmCompiler {
4646
/**
4747
* The version used to in the build classpath.
4848
*/
49-
const val dogfoodingVersion = "2.0.0-SNAPSHOT.020"
49+
const val dogfoodingVersion = "2.0.0-SNAPSHOT.021"
5050

5151
/**
5252
* The version to be used for integration tests.
5353
*/
54-
const val version = "2.0.0-SNAPSHOT.020"
54+
const val version = "2.0.0-SNAPSHOT.021"
5555

5656
/**
5757
* The ID of the Gradle plugin.

dependencies.md

Lines changed: 41 additions & 281 deletions
Large diffs are not rendered by default.

gradle-plugins/src/main/kotlin/io/spine/tools/core/jvm/gradle/plugins/CompilerConfigPlugin.kt

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -43,14 +43,16 @@ import io.spine.tools.core.jvm.gradle.coreJvmOptions
4343
import io.spine.tools.core.jvm.gradle.generatedGrpcDirName
4444
import io.spine.tools.core.jvm.gradle.generatedJavaDirName
4545
import io.spine.tools.core.jvm.gradle.plugins.CompilerConfigPlugin.Companion.VALIDATION_PLUGIN_CLASS
46-
import io.spine.tools.core.jvm.gradle.plugins.CompilerConfigPlugin.Companion.WRITE_COMPILER_SETTINGS
46+
import io.spine.tools.core.jvm.gradle.plugins.CompilerConfigPlugin.Companion.WRITE_COMPILER_PLUGINS_SETTINGS
4747
import io.spine.tools.core.jvm.gradle.settings.CoreJvmCompilerSettings
4848
import io.spine.tools.core.jvm.marker.MarkerPlugin
4949
import io.spine.tools.core.jvm.mgroup.MessageGroupPlugin
5050
import io.spine.tools.core.jvm.signal.SignalPlugin
5151
import io.spine.tools.core.jvm.signal.rejection.RThrowablePlugin
5252
import io.spine.tools.core.jvm.uuid.UuidPlugin
5353
import io.spine.tools.fs.DirectoryName
54+
import io.spine.tools.gradle.task.JavaTaskName.Companion.processResources
55+
import io.spine.tools.gradle.task.JavaTaskName.Companion.sourcesJar
5456
import io.spine.tools.meta.MavenArtifact
5557
import org.gradle.api.Plugin
5658
import org.gradle.api.Project
@@ -68,7 +70,7 @@ import io.spine.tools.compiler.plugin.Plugin as CompilerPlugin
6870
* 2. Configures the Compiler extension of the Gradle project, passing the compiler plugins,
6971
* such as [JavaValidationPlugin][io.spine.validation.java.JavaValidationPlugin] and
7072
* the plugins introduced by the modules of the CoreJvm Compiler modules.
71-
* 3. Creates a [WriteCompilerSettings] task for passing configuration to the Compiler, and
73+
* 3. Creates a [WriteCompilerPluginsSettings] task for passing configuration to the Compiler, and
7274
* links it to the [LaunchSpineCompiler] task.
7375
* 4. Adds required dependencies.
7476
*/
@@ -93,9 +95,9 @@ internal class CompilerConfigPlugin : Plugin<Project> {
9395
companion object {
9496

9597
/**
96-
* The name of the task for writing the Compiler settings.
98+
* The name of the task for writing the settings of CoreJvm Compiler plugins.
9799
*/
98-
const val WRITE_COMPILER_SETTINGS = "writeSpineCompilerSettings"
100+
const val WRITE_COMPILER_PLUGINS_SETTINGS = "writeSpineCompilerPluginsSettings"
99101

100102
/**
101103
* The name of the Validation plugin for ProtoData.
@@ -110,14 +112,19 @@ private fun Project.configureCompiler() {
110112
tasks.withType<LaunchSpineCompiler>().all { task ->
111113
task.apply {
112114
dependsOn(writeSettingsTask)
113-
setStandardOutput(System.out)
114-
setErrorOutput(System.err)
115+
standardOutput = System.out
116+
errorOutput = System.err
115117
}
116118
}
119+
// Make `processResources` and `sourceJar` depend on `writeSpineCompilerPluginsSettings`
120+
// as demanded by Gradle 9.x. The settings task does not produce resources or sources,
121+
// but we want to avoid forcing users set the dependencies manually in their projects.
122+
tasks.findByName(processResources.value())?.mustRunAfter(writeSettingsTask)
123+
tasks.findByName(sourcesJar.value())?.mustRunAfter(writeSettingsTask)
117124
}
118125

119-
private fun Project.createWriteSettingsTask(): Provider<WriteCompilerSettings> {
120-
val result = tasks.register<WriteCompilerSettings>(WRITE_COMPILER_SETTINGS) {
126+
private fun Project.createWriteSettingsTask(): Provider<WriteCompilerPluginsSettings> {
127+
val result = tasks.register<WriteCompilerPluginsSettings>(WRITE_COMPILER_PLUGINS_SETTINGS) {
121128
val workingDir = WorkingDirectory(compilerWorkingDir.asFile.toPath())
122129
val settingsDir = workingDir.settingsDirectory.path.toFile()
123130
val settingsDirProvider = project.layout.dir(provider { settingsDir })

gradle-plugins/src/main/kotlin/io/spine/tools/core/jvm/gradle/plugins/WriteCompilerSettings.kt renamed to gradle-plugins/src/main/kotlin/io/spine/tools/core/jvm/gradle/plugins/WriteCompilerPluginsSettings.kt

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -40,8 +40,8 @@ import io.spine.tools.core.jvm.comparable.ComparablePlugin
4040
import io.spine.tools.core.jvm.entity.EntityPlugin
4141
import io.spine.tools.core.jvm.gradle.CoreJvmOptions
4242
import io.spine.tools.core.jvm.gradle.coreJvmOptions
43-
import io.spine.tools.core.jvm.gradle.plugins.WriteCompilerSettings.Companion.JAVA_CODE_STYLE_ID
44-
import io.spine.tools.core.jvm.gradle.plugins.WriteCompilerSettings.Companion.VALIDATION_SETTINGS_ID
43+
import io.spine.tools.core.jvm.gradle.plugins.WriteCompilerPluginsSettings.Companion.JAVA_CODE_STYLE_ID
44+
import io.spine.tools.core.jvm.gradle.plugins.WriteCompilerPluginsSettings.Companion.VALIDATION_SETTINGS_ID
4545
import io.spine.tools.core.jvm.mgroup.MessageGroupPlugin
4646
import io.spine.tools.core.jvm.settings.Combined
4747
import io.spine.tools.core.jvm.settings.signalSettings
@@ -58,15 +58,15 @@ import org.gradle.api.tasks.OutputDirectory
5858
import org.gradle.api.tasks.TaskAction
5959

6060
/**
61-
* A task that writes settings for ProtoData.
61+
* A task that writes settings for CoreJvm plugins of the Spine Compiler.
6262
*
6363
* The [settingsDir] property defines the directory where settings files for
64-
* ProtoData plugins are stored.
64+
* the CoreJvm Compiler plugins are stored.
6565
*
66-
* This task writes settings files for ProtoData components.
66+
* This task writes settings files for the CoreJvm plugins to the Compiler.
6767
*/
6868
@Suppress("unused") // Gradle creates a subtype for this class.
69-
public abstract class WriteCompilerSettings : DefaultTask() {
69+
public abstract class WriteCompilerPluginsSettings : DefaultTask() {
7070

7171
@get:OutputDirectory
7272
public abstract val settingsDir: DirectoryProperty
@@ -83,7 +83,7 @@ public abstract class WriteCompilerSettings : DefaultTask() {
8383

8484
@TaskAction
8585
@Throws(IOException::class)
86-
public fun writeFile() {
86+
public fun writeFiles() {
8787
val dir = settingsDirectory()
8888
forValidationPlugin(dir)
8989
forAnnotationPlugin(dir)
@@ -111,9 +111,9 @@ public abstract class WriteCompilerSettings : DefaultTask() {
111111

112112
/**
113113
* Obtains an instance of [SettingsDirectory] to be used for writing files which
114-
* points to the directory specified by the [WriteCompilerSettings.settingsDir] property.
114+
* points to the directory specified by the [WriteCompilerPluginsSettings.settingsDir] property.
115115
*/
116-
private fun WriteCompilerSettings.settingsDirectory(): SettingsDirectory {
116+
private fun WriteCompilerPluginsSettings.settingsDirectory(): SettingsDirectory {
117117
val dir = project.file(settingsDir)
118118
dir.mkdirs()
119119
val settings = SettingsDirectory(dir.toPath())
@@ -126,7 +126,7 @@ private fun WriteCompilerSettings.settingsDirectory(): SettingsDirectory {
126126
* The settings are taken from McJava extension object and converted to
127127
* [io.spine.validation.ValidationConfig], which is later written as JSON file.
128128
*/
129-
private fun WriteCompilerSettings.forValidationPlugin(dir: SettingsDirectory) {
129+
private fun WriteCompilerPluginsSettings.forValidationPlugin(dir: SettingsDirectory) {
130130
val compilerSettings = compilerSettings
131131
val signalSettings = compilerSettings.signalSettings
132132
val markers = messageMarkers {
@@ -148,7 +148,7 @@ private fun WriteCompilerSettings.forValidationPlugin(dir: SettingsDirectory) {
148148
private fun Combined.entityOptionsNames(): Iterable<String> =
149149
entities.optionList.map { it.name }
150150

151-
private fun WriteCompilerSettings.forAnnotationPlugin(dir: SettingsDirectory) {
151+
private fun WriteCompilerPluginsSettings.forAnnotationPlugin(dir: SettingsDirectory) {
152152
val annotation = options.annotation
153153
val proto = settings {
154154
val javaType = annotation.types
@@ -164,12 +164,12 @@ private fun WriteCompilerSettings.forAnnotationPlugin(dir: SettingsDirectory) {
164164
dir.write(ApiAnnotationsPlugin.SETTINGS_ID, proto)
165165
}
166166

167-
private fun WriteCompilerSettings.forEntityPlugin(dir: SettingsDirectory) {
167+
private fun WriteCompilerPluginsSettings.forEntityPlugin(dir: SettingsDirectory) {
168168
val entitySettings = compilerSettings.entities
169169
dir.write(EntityPlugin.SETTINGS_ID, entitySettings)
170170
}
171171

172-
private fun WriteCompilerSettings.forSignalPlugin(dir: SettingsDirectory) {
172+
private fun WriteCompilerPluginsSettings.forSignalPlugin(dir: SettingsDirectory) {
173173
val codegen = compilerSettings.signalSettings
174174
val signalSettings = signalSettings {
175175
commands = codegen.commands
@@ -179,22 +179,22 @@ private fun WriteCompilerSettings.forSignalPlugin(dir: SettingsDirectory) {
179179
dir.write(SignalPlugin.SETTINGS_ID, signalSettings)
180180
}
181181

182-
private fun WriteCompilerSettings.forMessageGroupPlugin(dir: SettingsDirectory) {
182+
private fun WriteCompilerPluginsSettings.forMessageGroupPlugin(dir: SettingsDirectory) {
183183
val groupSettings = compilerSettings.groupSettings
184184
dir.write(MessageGroupPlugin.SETTINGS_ID, groupSettings)
185185
}
186186

187-
private fun WriteCompilerSettings.forUuidPlugin(dir: SettingsDirectory) {
187+
private fun WriteCompilerPluginsSettings.forUuidPlugin(dir: SettingsDirectory) {
188188
val uuidSettings = compilerSettings.uuids
189189
dir.write(UuidPlugin.SETTINGS_ID, uuidSettings)
190190
}
191191

192-
private fun WriteCompilerSettings.forComparablePlugin(dir: SettingsDirectory) {
192+
private fun WriteCompilerPluginsSettings.forComparablePlugin(dir: SettingsDirectory) {
193193
val settings = compilerSettings.comparables
194194
dir.write(ComparablePlugin.SETTINGS_ID, settings)
195195
}
196196

197-
private fun WriteCompilerSettings.forStyleFormattingPlugin(dir: SettingsDirectory) {
197+
private fun WriteCompilerPluginsSettings.forStyleFormattingPlugin(dir: SettingsDirectory) {
198198
val styleSettings = options.style.get()
199199
dir.write(JAVA_CODE_STYLE_ID, styleSettings)
200200
}

gradle-plugins/src/test/kotlin/io/spine/tools/core/jvm/gradle/plugins/CompilerConfigPluginSpec.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ internal class CompilerConfigPluginSpec {
8888

8989
@Test
9090
fun `add a task for passing configuration file`() {
91-
val task = project.tasks.withType<WriteCompilerSettings>()
91+
val task = project.tasks.withType<WriteCompilerPluginsSettings>()
9292
task shouldNotBe null
9393
task.shouldNotBeEmpty()
9494
}

pom.xml

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ all modules and does not describe the project structure per-subproject.
1010
-->
1111
<groupId>io.spine.tools</groupId>
1212
<artifactId>core-jvm-compiler</artifactId>
13-
<version>2.0.0-SNAPSHOT.021</version>
13+
<version>2.0.0-SNAPSHOT.022</version>
1414

1515
<inceptionYear>2015</inceptionYear>
1616

@@ -303,11 +303,6 @@ all modules and does not describe the project structure per-subproject.
303303
<artifactId>symbol-processing-api</artifactId>
304304
<version>2.3.0</version>
305305
</dependency>
306-
<dependency>
307-
<groupId>com.google.devtools.ksp</groupId>
308-
<artifactId>symbol-processing-cmdline</artifactId>
309-
<version>2.2.20-2.0.4</version>
310-
</dependency>
311306
<dependency>
312307
<groupId>com.google.errorprone</groupId>
313308
<artifactId>error_prone_annotations</artifactId>
@@ -369,17 +364,17 @@ all modules and does not describe the project structure per-subproject.
369364
<dependency>
370365
<groupId>io.spine.tools</groupId>
371366
<artifactId>core-jvm-gradle-plugins</artifactId>
372-
<version>2.0.0-SNAPSHOT.020</version>
367+
<version>2.0.0-SNAPSHOT.021</version>
373368
</dependency>
374369
<dependency>
375370
<groupId>io.spine.tools</groupId>
376371
<artifactId>core-jvm-plugins</artifactId>
377-
<version>2.0.0-SNAPSHOT.020</version>
372+
<version>2.0.0-SNAPSHOT.021</version>
378373
</dependency>
379374
<dependency>
380375
<groupId>io.spine.tools</groupId>
381376
<artifactId>core-jvm-routing</artifactId>
382-
<version>2.0.0-SNAPSHOT.020</version>
377+
<version>2.0.0-SNAPSHOT.021</version>
383378
</dependency>
384379
<dependency>
385380
<groupId>io.spine.tools</groupId>

version.gradle.kts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,5 +29,5 @@
2929
*
3030
* Do not rename this property, as it is also used in the integration tests via its name.
3131
*/
32-
val coreJvmCompilerVersion by extra("2.0.0-SNAPSHOT.021")
32+
val coreJvmCompilerVersion by extra("2.0.0-SNAPSHOT.022")
3333
val versionToPublish by extra(coreJvmCompilerVersion)

0 commit comments

Comments
 (0)