@@ -2,7 +2,9 @@ import com.specificlanguages.mps.MainBuild
22import com.specificlanguages.mps.MpsBuild
33import com.specificlanguages.mps.RunAnt
44import com.specificlanguages.mps.TestBuild
5+ import de.itemis.mps.gradle.EnvironmentKind
56import de.itemis.mps.gradle.GitBasedVersioning
7+ import de.itemis.mps.gradle.tasks.MpsGenerate
68import de.itemis.mps.gradle.tasks.MpsMigrate
79import de.itemis.mps.gradle.tasks.Remigrate
810import groovy.xml.XmlSlurper
@@ -188,39 +190,37 @@ bundledDependencies {
188190
189191}
190192
191- mpsBuilds {
192- val languages by creating(MainBuild ::class ) {
193- mpsProjectDirectory = codeDir
194- buildArtifactsDirectory = layout.buildDirectory.dir(" artifacts/de.itemis.mps.extensions" )
195- buildSolutionDescriptor = codeDir.file(" build/solutions/de.itemis.mps.extensions.build/de.itemis.mps.extensions.build.msd" )
196- buildFile = layout.buildDirectory.file(" generated/languages/build.xml" )
197- }
198-
199- val tests by creating(TestBuild ::class ) {
200- dependsOn(languages)
201- mpsProjectDirectory = codeDir
202- buildArtifactsDirectory = layout.buildDirectory.dir(" artifacts/de.itemis.mps.extensions.tests" )
203- buildSolutionDescriptor = codeDir.file(" build/solutions/de.itemis.mps.extensions.build/de.itemis.mps.extensions.build.msd" )
204- buildFile = layout.buildDirectory.file(" generated/tests/build.xml" )
205-
206- assembleAndCheckTask {
207- finalizedBy(" failOnTestError" )
193+ val languages by mpsBuilds.creating(MainBuild ::class ) {
194+ mpsProjectDirectory = codeDir
195+ buildArtifactsDirectory = layout.buildDirectory.dir(" artifacts/de.itemis.mps.extensions" )
196+ buildSolutionDescriptor = codeDir.file(" build/solutions/de.itemis.mps.extensions.build/de.itemis.mps.extensions.build.msd" )
197+ buildFile = layout.buildDirectory.file(" generated/languages/build.xml" )
198+ }
208199
209- doLast {
210- val reportDir = layout.buildDirectory.dir(" junitreport" ).get()
211- ant.withGroovyBuilder {
212- " taskdef" (
213- " name" to " junitreport" ,
214- " classname" to " org.apache.tools.ant.taskdefs.optional.junit.XMLResultAggregator" ,
215- " classpath" to mpsDefaults.antClasspath.asPath
216- )
217- " junitreport" {
218- " fileset" (" dir" to " $buildDir " , " includes" to " **/TEST*.xml" )
219- " report" (" format" to " frames" , " todir" to reportDir)
220- }
200+ val tests by mpsBuilds.creating(TestBuild ::class ) {
201+ dependsOn(languages)
202+ mpsProjectDirectory = codeDir
203+ buildArtifactsDirectory = layout.buildDirectory.dir(" artifacts/de.itemis.mps.extensions.tests" )
204+ buildSolutionDescriptor = codeDir.file(" build/solutions/de.itemis.mps.extensions.build/de.itemis.mps.extensions.build.msd" )
205+ buildFile = layout.buildDirectory.file(" generated/tests/build.xml" )
206+
207+ assembleAndCheckTask {
208+ finalizedBy(" failOnTestError" )
209+
210+ doLast {
211+ val reportDir = layout.buildDirectory.dir(" junitreport" ).get()
212+ ant.withGroovyBuilder {
213+ " taskdef" (
214+ " name" to " junitreport" ,
215+ " classname" to " org.apache.tools.ant.taskdefs.optional.junit.XMLResultAggregator" ,
216+ " classpath" to mpsDefaults.antClasspath.asPath
217+ )
218+ " junitreport" {
219+ " fileset" (" dir" to " $buildDir " , " includes" to " **/TEST*.xml" )
220+ " report" (" format" to " frames" , " todir" to reportDir)
221221 }
222- println (" JUnit report placed into file://$reportDir /index.html" )
223222 }
223+ println (" JUnit report placed into file://$reportDir /index.html" )
224224 }
225225 }
226226}
@@ -234,12 +234,6 @@ tasks.withType<RunAnt>().configureEach {
234234}
235235
236236// ___________________ utilities ___________________
237- tasks.register<Copy >(" copyChangelog" ) {
238- from(codeDir.dir(" solutions/de.itemis.mps.extensions.changelog/source_gen/de/itemis/mps/extensions/changelog" ))
239- into(layout.settingsDirectory)
240- include(" *.md" )
241- }
242-
243237tasks.register(" failOnTestError" ) {
244238 description = " evaluate junit result and fail on error"
245239 doLast {
@@ -448,3 +442,36 @@ tasks.register<Remigrate>("remigrate") {
448442 // diagram migration from version 0 is currently not rerunnable, although it claims to be
449443 excludeModuleMigration(" de.itemis.mps.editor.diagram" , 0 )
450444}
445+
446+ val generateChangelog by tasks.registering(MpsGenerate ::class ) {
447+ dependsOn(languages.generateTask)
448+
449+ javaLauncher = jbrToolchain.javaLauncher
450+ mpsHome = mpsDefaults.mpsHome
451+
452+ environmentKind = EnvironmentKind .MPS
453+
454+ projectLocation = codeDir
455+ pluginRoots.from(usedPluginRoots)
456+
457+ modules = listOf (" de.itemis.mps.extensions.changelog" )
458+ }
459+
460+ val copyChangelog by tasks.registering {
461+ dependsOn(generateChangelog)
462+
463+ doLast {
464+ // Using a copy action here instead of making this task a Copy. Otherwise Gradle considers the entire project to
465+ // be the output of this task (because the destination directory is the project root) and complains about
466+ // implicit dependencies.
467+ copy {
468+ from(codeDir.dir(" solutions/de.itemis.mps.extensions.changelog/source_gen/de/itemis/mps/extensions/changelog" ))
469+ into(layout.settingsDirectory)
470+ include(" *.md" )
471+ }
472+ }
473+ }
474+
475+ tasks.build {
476+ dependsOn(copyChangelog)
477+ }
0 commit comments