Technische Problemstellung:
Sie möchten die Generierung Ihrer MPS-Sprachen sowie die Compilierung Ihrer MPS-Solutions nicht mehr innerhalb von MPS erledigen sondern diese Funktionalität von außen ansteuern? Sie möchten eine automatisierte Build-Umgebung für Ihre auf dem MPS-Framework basierende Applikation erstellen oder sogar eine komplette Continous Integration Umgebung für Ihre MPS-Applikation entwickeln?
Problemlösung:
Prinzipiell ist die Ansteuerung der MPS-Buildumgebung von Ihren technischen Voraussetzungen abhängig. Für eine Gradle-Umgebung bietet sich zum Beispiel der Einsatz des Itemis MPS Gradle Plugins an.
Laden Sie die benötigte Library aus GIT herunter und importieren Sie in Ihrer Gradle-Umgebung die benötigten Header-Dateien:
import de.itemis.mps.gradle.BuildLanguages
import de.itemis.mps.gradle.RunAntScript
import org.gradle.api.DefaultTask
Fügen Sie eine entsprechende Dependency zu Ihrer build.gradle.kts hinzu:
buildscript {
dependencies {
classpath(fileTree(mapOf("dir" to "path/de/itemis/mps/mps-gradle-plugin", "include" to listOf("*.jar"))))
}
}
val task1 = tasks.register<BuildLanguages>("taskName") { ... }val task2 = tasks.register<RunAntScript>("taskName") { ... }
Aber auch ohne die Verwendung eines solchen Wrappers ist eine Ansteuerung der MPS-Buildumgebung jedoch problemlos möglich. Benötigt wird hierfür lediglich Apache Ant.
Bei den während der Ausführung der MPS-Buildscripte generierten XML-Dateien handelt es sich um reine Ant-Scripte, welche unter Verwendung des Ant-Launchers beispielsweise auch problemlos außerhalb von MPS ansteuerbar sind.
<project name="application-build-script" default="build"> <!-- Generated by MPS --> <property name="build.dir" location="build" /> <property name="build.tmp" location="${build.dir}/tmp/application-build-script" /> <property name="build.layout" location="${build.dir}/artifacts/application-build-script" />
...
%JAVA_PATH% -Dfile.encoding=windows-1252 -Duser.country=US -Duser.language=en -Duser.variant -cp %ANT_PATH\lib\ant-launcher.jar;%JDK_PATH%\lib\tools.jar org.apache.tools.ant.launch.Launcher -Dmps_home=%MPS_PATH% -Dversion=%MPS_VERSION% -Dmps.generator.skipUnmodifiedModels=true -buildfile %ANT_XML_FILE%
Sofern die Build-Scripte noch MPS-Solutions oder MPS-Sprachen beinhalten, welche ebenfalls gebaut werden müssen, so fügen Sie noch die entsprechenden Kommandos für die Generierung der Sprachen/Solutions hinzu (z.B. clean, generate und assemble). Und beachten Sie natürlich die korrekte Reihenfolge der Generierung Ihrer Ant-Scripte (XML).
%JAVA_PATH% -Dfile.encoding=windows-1252 -Duser.country=US -Duser.language=en -Duser.variant -cp %ANT_PATH\lib\ant-launcher.jar;%JDK_PATH%\lib\tools.jar org.apache.tools.ant.launch.Launcher -Dmps_home=%MPS_PATH% -Dversion=%MPS_VERSION% -Dmps.generator.skipUnmodifiedModels=true -buildfile %ANT_XML_FILE% clean generate assemble