I have published version 1.4.0 of mps-gradle-plugin, a convention-based Gradle plugin for MPS builds. This latest version will make builds of subprojects less wasteful.

Before, each Gradle project using the plugin would download its own distribution of MPS and unpack it under the project build directory so each project would have its own distribution of MPS.

Since a typical MPS distribution takes multiple hundreds of megabytes of disk space unpacked, and the projects typically do not modify it in any way, this was wasteful if you had several projects would use the same MPS version.

The new version of mps-gradle-plugin now has Gradle itself download and unpack the MPS distribution. The unpacked version will be stored in the local Gradle cache and can be potentially shared among multiple projects.

The caching algorithm of Gradle is rather complex and incorporates such data as Gradle version, so projects that use different Gradle versions will still end up with separate MPS distributions. However, this is an improvement over the previous situation, and makes it feasible to use the plugin with a project comprising many MPS-based subprojects.

About Gradle plugins for MPS

There are two Gradle plugins for MPS, mbeddr/mps-gradle-plugin and specificlanguages/mps-gradle-plugin.

The mbeddr plugin is more of a library defining various tasks that were found useful when building customer projects with MPS. This plugin does not extend the Gradle build DSL in any way nor does it define any conventions.

The goal of the specificlanguages plugin is to define conventions so that it is possible to define Gradle builds of MPS projects with minimum configuration. The focus of the plugin is on building project libraries, it is not suitable for building MPS-based RCP distributions.


Are you stuck on a difficult issue with MPS? Or are you just starting out and everything seems strange and difficult? Come to MPS Office Hours and get your questions answered. The next meeting is tomorrow at 14:00 CEST. Attendance has been quite low in the past so you are likely to get your questions answered.