MPS 2019.1ヘルプ

MPS と ant の使い方

MPSとantを使った作業

編集コードはもちろんMPSエディターを必要とします。しかしモデルの生成と
自動テストと統合するためにコマンドラインからテストを実行することができます。
構築します。基礎としてAntが使用されます。このセクションではMPSの使い方を説明します
antを介してコマンドラインから。

すべての例で、build.properties ファイルを使用します:
次の2つの特性

mps.home = // installation directory of MPS itself mbeddr.home = // the root directory relative to which all other directories // to projects etc. are specified

この build.properties ファイルは、このセクションで説明するすべてのビルドスクリプトに含まれています。さらに、antの taskdef 要素を使用して一連のMPS固有のタスクを定義する必要があります。また、いくつかのJVMオプションが何度も再利用されています。したがって、以下は、これから説明するすべてのビルドファイルの骨子です。

<project name="com.mbeddr.core build and test" default="all"> <property file="build.properties"/> <path id="mps.ant.path"> <pathelement location="${mps.home}/lib/mps-backend.jar"/> <pathelement location="${mps.home}/lib/jdom.jar"/> <pathelement location="${mps.home}/lib/log4j.jar"/> <pathelement location="${mps.home}/lib/mps-core.jar"/> </path> <taskdef resource="jetbrains/mps/build/ant/antlib.xml" classpathref="mps.ant.path"/> <jvmargs id="myargs"> <arg value="-ea"/> <arg value="-Xss1024k"/> <arg value="-Xmx1024m"/> <arg value="-XX:MaxPermSize=92m"/> <arg value="-XX:+HeapDumpOnOutOfMemoryError"/> </jvmargs> <!-- here is the place where all the following example code goes --> </project>

プロジェクトで言語を構築する

プロジェクトの内容を構築することから始めます。これが必要なantコードです。
上記のスケルトンAntファイルで囲む必要があります。

<property name="project.mpr" value="relative/path/to/project/project.mpr"/> <target name="build-languages-in-project"> <mps.generate> <jvmargs refid="myargs"/> <project file="${mbeddr.home}/${project.mpr}"/> </mps.generate> </target>

プロジェクト内のすべてのモジュールが生成されます。モジュールのサブセットのみが
プロジェクトを生成する必要があります。modules ファイルセットを使用できます。の
次のコードは、プロジェクト内のすべての言語を生成します。通常彼らは住んでいます
プロジェクトの languages ディレクトリーにあります。aの定義方法に注意してください
プロジェクトディレクトリーを指すのプロパティー
プロジェクト(.mps)ファイル

<property name="project.mpr" value="relative/path/to/project/project.mpr"/> <property name="project.dir" value="relative/path/to/project"/> <mps.generate> <jvmargs refid="myargs"/> <project file="${mbeddr.home}/${project.mpr}"/> <modules dir="${mbeddr.home}/${project.dir}/languages"/> </mps.generate>

プロジェクトをコンパイル可能にするために他の言語にアクセスする必要がある場合があります。
これらは、dir 属性が必要とするライブラリー要素とともに追加できます。
(直接またはそに)必要なディレクトリーを含むディレクトリーを指定します。
言語

<property name="some.other.project.dir" value="relative/p/to/other/project"/> <mps.generate> <jvmargs refid="myargs"/> <project file="${mbeddr.home}/${project.mpr}"/> <library name="irrelevantName" dir="${mbeddr.home}/${some.other.project.dir}/languages"/> </mps.generate>

生成/構築ソリューション

DSLで書かれたコードを含むソリューションを構築することは基本的にはありません
言語の構築とは異なります。しかし、それを設定することが重要です。
それらは言語を含むディレクトリーを指す
ソリューションで使用されています。

<!-- project with solutions that should be built --> <property name="solutionproject.dir" value="path/to/some/solution/project"/> <!-- two projects that contain languages used by solutionproject --> <property name="langproject.dir" value="path/to/some/project"/> <property name="other.langproject.dir" value="path/to/other/project"/> <target name="build-solutions"> <mps.generate> <jvmargs refid="myargs"/> <!-- set up libs to point to the lang projects --> <library name="langproject" dir="${mbeddr.home}/${langproject.dir}"/> <library name="other.langproject" dir="${mbeddr.home}/${other.langproject.dir}"/> <!-- generate two solutions in the project --> <modules dir="${mbeddr.home}/${solutionproject.fit}/solutions/solution1"/> <modules dir="${mbeddr.home}/${solutionproject.fit}/solutions/solution2"/> </mps.generate> </target>

テストの実行

MPSはテストに使用できる特別なテスト言語をサポートします
制約、型システム規則、およびエディター機能: これらのテストは実行することができます
ソリューションまたはモデルのコンテキストメニューから実行オプションを使用してUIから
(下図参照)

runtests

これらのテストはコマンドラインからも実行できます: これが必要とするコードです:

<!-- make this point to some temp directory --> <property name="mps.platform.caches" value="tmp"/> <!-- path to project .mpr with the tests in it --> <property name="project.mpr" value="relative/path/to/project/project.mpr"/> <target name="run-tests"> <delete dir="${mps.platform.caches}"/> <junit haltonfailure="true" showoutput="true" fork="true" dir="${mps.home}"> <jvmarg value="-ea"/> <jvmarg value="-Xss1024k"/> <jvmarg value="-Xmx1200m"/> <jvmarg value="-XX:MaxPermSize=128m"/> <jvmarg value="-XX:+HeapDumpOnOutOfMemoryError"/> <sysproperty key="idea.system.path" value="${mps.platform.caches}/system"/> <sysproperty key="idea.config.path" value="${mps.platform.caches}/config"/> <sysproperty key="idea.plugins.path" value="${mps.platform.caches}/plugins"/> <sysproperty key="mps.junit.project" value="${mbeddr.home}/${project.mpr}"/> <sysproperty key="mps.junit.pathmacro.mbeddr.home" value="${mbeddr.home}"/> <classpath> <fileset dir="${mps.home}/lib"> <include name="**/*.jar"/> </fileset> <fileset dir="${mps.home}/plugins"> <include name="**/*.jar"/> </fileset> </classpath> <test name="jetbrains.mps.testbench.junit.suites.DefaultTestSuite"/> <formatter type="xml"/> </junit> </target>

ここで重要な成分は、2つのシステム特性です。
mps.junit.projectmps.junit.pathmacro.mbeddr.home最初の1つ
テストを含むプロジェクトを指定します。二つ目はもう少しです
関与した。構文 mps.junit.pathmacro.XXX はパスの値を設定します。
MPSプロジェクト内の変数 XXX。テストを正しく実行するために、
プロジェクトファイルを指すプロジェクト内の TestInfo ノードになります。この
パス変数(MPS設定で定義されている)を使用して、その間で移植可能にします。
ファイルシステム内のさまざまなマシンとさまざまな場所。の
mps.junit.pathmacro.mbeddr.home ものはの値を提供するために使用されます
コマンドラインからマクロ。

testinfo
最終更新日: 2019年7月5日