Есть ли способ использовать mps-расширения через Gradle? - PullRequest
0 голосов
/ 05 ноября 2018

Я вижу, https://github.com/JetBrains/MPS-extensions публикует релизы через GitHub, однако это не выглядит удобным для интеграции артефактов в проект на основе MPS.

Что если мой проект построен через MPS и зависит от MPS-расширений? Было бы замечательно, если бы был способ автоматически загрузить нужный артефакт расширения через командную строку (например, ./gradlew downloadExtensions)

1 Ответ

0 голосов
/ 05 ноября 2018

У меня сработало следующее:

build.gradle (см. https://github.com/Hardella/ide61131/blob/8088fbd9bcc2780f5772856a962fbfe6954b3e50/build.gradle):

repositories {
    maven { url 'https://projects.itemis.de/nexus/content/repositories/mbeddr' }
    mavenCentral()
}

configurations {
    mpsExtensions
}

dependencies {
    mpsExtensions "de.itemis.mps:extensions:2018.2.+"
}

task resolve_extensions(type: Copy) {
    dependsOn configurations.mpsExtensions
    from {
        configurations.mpsExtensions.resolve().collect { zipTree(it) }
    }
    into "lib"
}

Затем ./gradlew resolve_extensions загружает и распаковывает mps-extensions в папку lib/de.itemis.mps.extensions/....

Затем его можно подключить к экземпляру MPS через Preferences -> Build, Execution, Deployment -> Project Libraries / Global Libraries.

Следующая .mps/libraries.xml настраивает библиотеку как Project Library:

<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
  <component name="ProjectLibraryManager">
    <option name="libraries">
      <map>
        <entry key="mps-extensions">
          <value>
            <Library>
              <option name="name" value="mps-extensions" />
              <option name="path" value="$PROJECT_DIR$/lib/de.itemis.mps.extensions" />
            </Library>
          </value>
        </entry>
      </map>
    </option>
  </component>
</project>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...