Подтвердить что ты не робот

IntelliJ Idea: как разоблачить классы, интерфейсы, аннотации в разработанных плагинах

Я создал плагин для IntelliJ Idea. В плагине я определил аннотацию, которую хочу использовать в своих проектах, но она не кажется доступной. Как я должен указать в файле plugin.xml пакеты, которые я хочу открыть?

4b9b3361

Ответ 1

Когда вы устанавливаете плагин, он будет находиться в определенном месте - например. C:\Users\xxx\.IdeaIC14\config\plugins\...

Теперь, когда вы знаете, где находится ваш файл jar, вы можете добавить его как зависимость от своего проекта. Если вы используете Maven, вы можете добавить что-то подобное вашему pom:

<dependency>
    <groupId>yourplugin</groupId>
    <artifactId>yourplugin</artifactId>
    <version>1</version>
    <systemPath>C:\Users\xxx\.IdeaIC14\config\plugins\yourplugin.jar</systemPath>
    <scope>system</scope>
</dependency>

Или вы можете установить банку в свой локальный репозиторий, а затем использовать ее как обычную зависимость от maven.

Если нет, добавьте зависимость непосредственно в параметры проекта, как это было в любой другой банке.

plugin.xml не имеет ничего общего с этим, это все о баночках и пути к классам. Что вы можете сделать в своем плагине - это некоторые удобные для пользователя проверки и действия, которые добавили бы вам зависимость.

Ответ 2

По умолчанию плагины могут автоматически читать и получать доступ к открытым членам любого другого плагина, установленного на той же IDE (т.е. ваш плагин может читать общедоступные переменные, вызывать общедоступные функции - все идет по одному и тому же пути к классам). Если вы зависите от другого плагина, вы должны сначала добавить его как явная зависимость в файл конфигурации плагина, так что IDE конечного пользователя будет знать, как загрузить и установить ваши плагины, если они отсутствуют.

Во время разработки вы должны теперь использовать Gradle. В файле build.gradle (или build.gradle.kts) проекта intellij.plugins свойство gradle-intellij-plugin позволит вам указать id и version зависимостей плагина. Значения для этих атрибутов можно найти в Репозиторий плагинов, ср. Plugin XML ID). Впоследствии gradle-intellij-plugin добавит желаемый плагин платформы IntelliJ к вашему проекту в качестве внешней библиотеки, что позволит вам получить завершение кода, статический анализ и протестировать ваш плагин вместе со своими зависимостями внутри изолированной программной плагины (через ./gradlew runIde).

Плагины должны избегать использования внутренних классов других плагинов по причинам стабильности. Если вы хотите, чтобы другие плагины использовали ваш плагин программно (т.е. Предположим, что вы хотите предоставить API), платформа IntelliJ имеет концепцию так называемого Точки расширения. Они позволят вам определить конкретный интерфейс или контракт для других плагинов для доступа к функциям вашего плагина, не требуя многого узнать о его исходном коде. Использование точек расширения имеет дополнительное преимущество для развязки этих плагинов из любого внутреннего рефакторинга плагинов.