You used the MPS built-in wizard to create a RCP build and you built your RCP on it. Now you are testing whether it works and find the RCP complaining about a plugin being incompatible (“MPS Testing: Incompatible with the current [CUSTOM RCP] version”):

Some plugins do not load because of incompatible versions

Looking carefully through the IDE logs, you may stumble upon a message similar to this:

2019-06-01 13:36:15,795 [ 2136] INFO - #com.intellij.ide.plugins.PluginManager - Plugin 'MPS Testing' can't be loaded because: Plugin since-build or until-build don't match this product's build number

You know you are shipping the 2018.3 version of the MPS Testing plugin with your RCP based on MPS 2018.3, so how it is possible for the two to be incompatible?

If this matches the problem you’re having, I have good news for you because the fix is very simple: add a build.txt file with the proper version number.

When MPS starts, it figures out its own version to be able to decide whether the plugins it finds are actually safe to load. This mechanism relies on reading a file named build.txt in the MPS home directory. If the file is absent, the version is set to 999.SNAPSHOT. If present, the contents of build.txt are used as the version number.

Some examples of acceptable version numbers are 183.1, 191.5, or 192.SNAPSHOT

  • The part before the dot is the product version (so 183 corresponds to MPS 2018.3, 191 is MPS 2019.1).
  • The part after the dot is the build number and is either SNAPSHOT or a number. The number should be at least 1 because of the requirements stated by the MPS Testing plugin (since-build="183.1", see its plugin.xml file).

The file must be placed in the RCP home directory which is the directory that would contain the lib and plugins subdirectories. On macOS it would be under CUSTOM RCP 1.0.app/Contents.

After adding the build.txt file, the plugins will all be loaded correctly:

All plugins load correctly

You can either use some external means of adding this file to the build or make use of the MPS build language as follows:

  1. Create a build.txt file to serve as a template. It should contain a single line: @VERSION@
  2. Add the following to the build script that generates the distribution files for your RCP:

    file ./build.txt
        replace @VERSION@ -> 183.SNAPSHOT
    

    NOTE 1: You may need to use the reflective editor to enter the replace copy parameter since the default MPS editor only shows the parameter collection if it’s non-empty (this is a bug).

    NOTE 2: The right-hand side of replace accepts macros if you’d rather not hardcode the version number.

Want more MPS tips? Leave your e-mail address below and get MPS tips and tricks delivered to your inbox