The MPS extensions aim to ease language development within MPS. They are maintained by itemis, JetBrains, and the open source community, and the development is closely aligned with the development of MPS.
Join the discussion on Slack in the #mps-extensions room.
To use MPS Extensions in your project, add one of the following dependencies to your Maven or Gradle build script:
MPS version | nexus status |
---|---|
Master | |
2025.1 | |
2024.1 | |
2023.2 | |
2022.3 | |
2022.2 | |
2021.3 | |
2021.2 | |
2021.1 |
Run the following commands to build the project:
./gradlew # Mac and Linux
gradlew.bat # Windows
This will download the required MPS version, so you need to be online when executing the build for the first time (later on, the downloaded artifacts will be cached). To refresh the dependencies, you can add the --refresh-dependencies
flag. After this step, you can also click Build->Rebuild Project
from the main menu of the MPS project. When you open the project, make sure to select the code
folder and not the root folder of the repository.
The default task does not run the tests as part of the build. Execute the following command to run the tests:
./gradlew run_tests # Mac and Linux
gradlew.bat run_tests # Windows
See the building page of the documentation for more details.
If you want more information on the individual extensions, please see our documentation. The documentation's source is in this repository's docs
folder if you would like to contribute. To preview the documentation, run the following command:
./gradlew previewDocs # Mac and Linux
gradlew.bat previewDocs # Windows
Please add your change to the changelog located at de.itemis.mps.extensions.changelog
. To update it, rebuild the solution and run ./gradlew copyChangelog
or gradlew.bat copyChangelog
to regenerate the CHANGELOG.md
file. Commit the changes in the MPS model and in the text file.
When you open a PR, the build on TeamCity needs to be approved by a colleague at itemis, and a PR review is necessary. If this doesn't happen, please ask in the Slack channel. Often, builds fail at the following step: Check for dirty files.
If that happens, some migrations were not executed in the project. Run ./gradlew migrate remigrate
or gradlew.bat migrate remigrate
on the command line to execute them and commit the changes. You can also copy the diff from the build log and apply it with git apply
as a patch. You need to strip the line numbers, though:
- Mac:
pbpaste | sed 's/^.\{13\}//' | git apply
- Windows Powershell:
Get-Clipboard | ForEach-Object { $_ -replace '^.{13}', '' } | git apply
- Linux solution 1:
xclip -o | sed 's/^.\{13\}//' | git apply
- Linux solution 2:
xsel --clipboard --output | sed 's/^.\{13\}//' | git apply
Please select the correct target branch for the PR. The master branch builds against the MPS master and is most likely not the branch you want to contribute to. After the PR is merged, a bot will automatically open a PR to merge the changes into the next maintenance branch. You don't have to do anything at the last step.
The Renovate bot updates the dependencies automatically for the master branch or optionally other branches and creates PRs for those changes. The configuration can be found at renovate.json5. The documentation for the configuration can be found at https://docs.renovatebot.com/configuration-options/.