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”):
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 least1
because of the requirements stated by the MPS Testing plugin (since-build="183.1"
, see itsplugin.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:
You can either use some external means of adding this file to the build or make use of the MPS build language as follows:
-
Create a
build.txt
file to serve as a template. It should contain a single line:@VERSION@
-
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.