TL DR; Я решил записать некоторые выводы, болевые точки, извлеченные уроки и т.д. из создания моего первого коммерческого плагина для рынка плагинов JetBrains/| Книга заклинаний . Если вы создали классный плагин или у вас есть классная идея плагина для IDE JetBrains и вы ищете хорошее решение для его монетизации, ПРОДОЛЖАЙТЕ ЧИТАТЬ…
С тех пор как JetBrains анонсировала рынок для сторонних разработчиков плагинов, чтобы продавать свои работы, мне было любопытно попробовать что-то создать и протестировать возможности решения JetBrains marketplace. Я очень рад сообщить, что совсем недавно завершил разработку своего первого коммерческого плагина, Книга заклинаний , и выпустила ее через рынок плагинов JetBrains! БУТ! БУТ! В случае🥳!
Как бы ни была удивительна для меня эта веха, я должен сказать, что это было не так просто, как я себе представлял; не только создать плагин, но и пройти процесс выпуска плагина на рынке. Я решил, что напишу здесь некоторые выводы и извлеченные уроки, чтобы закрепить в уме процесс создания следующего плагина, который я планирую создать, а также предоставить некоторую информацию другим разработчикам, которые могут быть заинтересованы в создании собственного плагина!
Вам нравится Ява и СВИНГ? Я надеюсь, что это так…
IDE JetBrains – это настольные приложения, созданные с использованием Java и инструментария Swing GUI. Таким образом, любые расширения пользовательского интерфейса IDE также разрабатываются с использованием Java и Swing. Похоже, что Kotlin теперь также поддерживается для разработки плагинов, но я не пытался использовать Kotlin, поэтому я не уверен, насколько глубока поддержка.
В IDE Intellij есть несколько довольно удивительных встроенных инструментов, которые помогут вам приступить к разработке, включая проекты шаблонов, инструменты отладки и экземпляры разработки IDE для тестирования вашего плагина во время разработки. Я предполагаю, что теоретически вы могли бы использовать любой текстовый редактор или IDE, поддерживающий Java для разработки, но IMO Intellij определенно предоставляет товары, необходимые для быстрого запуска и поддержки вас в процессе разработки.
Вам нужно будет использовать API-интерфейсы Intellij для выполнения большей части работы с пользовательским интерфейсом для вашего плагина. Многие компоненты, предоставляемые в API, являются очень индивидуальными реализациями различных компонентов Swing. Вы, вероятно, могли бы использовать только виджеты пользовательского интерфейса Swing для создания пользовательского интерфейса вашего плагина, но для обеспечения единообразного внешнего вида в IDE JetBrains лучше использовать компоненты API Intellij всякий раз, когда вы можете. Расширение их для добавления дополнительных функций, как правило, довольно тривиально.
Построение с помощью Gradle и запуск экземпляра IDE
Есть два варианта создания вашего плагина для его запуска: набор разработчиков или Gradle. Gradle – это более современный способ создания плагинов для продуктов JetBrains, и его использование рекомендуется JetBrains для новых проектов плагинов. DevKit – это более старый инструмент, используемый для создания проектов плагинов, и, хотя он устарел, он все еще доступен, если вы хотите пойти по этому пути. Я выбрал Gradle из-за рекомендации JetBrains и потому, что я лучше знаком с ним. Мне также понравилось, что я мог управлять зависимостями библиотеки плагинов наряду с задачами сборки плагинов.
При создании нового проекта плагина с использованием проекта шаблона, запущенного в Intellij, plugin.xml файл и файл build.gradle создаются для вас. Файл build.gradle создается с набором задач, которые вам понадобятся для создания плагина, а также для запуска плагина в экземпляре IDE и развертывания плагина в репозитории плагинов, если требуется. Тот plugin.xml файл по сути является файлом дескриптора вашего плагина. Он содержит, среди прочего, объявления о любых действиях, которые будет выполнять ваш плагин, услугах, которые будет предоставлять ваш плагин, и окнах инструментов, которые будет использовать ваш плагин. Здесь также вы укажете административные данные для своего плагина (т. Е. Информацию о поставщике, информацию о версии и т.д.).
В какой-то момент вам нужно будет запустить свой плагин, чтобы увидеть все полезные функции, которые вы создавали. Очевидно, что вам понадобится экземпляр IDE для работы с вашим кодом. Ну, когда файл build.gradle был создан для вас стартером проекта Intellij, он также создал задачу под названием “выполнить скрытие” . При выполнении эта задача запускает экземпляр среды разработки IDE с включенным кодом вашего плагина. Я не буду слишком углубляться в кроличью нору здесь о том, как управлять настройками для экземпляра разработки, поскольку это довольно подробно. Но вы можете найти очень полезную информацию об этом здесь .
Использование других библиотек наряду с API-интерфейсами Intellij
Мне вообще нравится использовать Spring/Spring Boot для большинства проектов разработки Java, над которыми я работаю. Весенний IOC и внедрение зависимостей обычно необходимы для меня, когда речь заходит о проектах с более чем несколькими классами и интерфейсами. К сожалению, у меня были большие проблемы с тем, чтобы заставить Spring играть хорошо, когда дело дошло до платформы плагинов. Особенно у меня были проблемы с правильной инициализацией бобов.
Обычно при загрузке Spring вы просто указываете класс инициализации с помощью метода main, который выполняет и инициализирует контекст Spring при запуске приложения. Однако плагины так не работают. Чтобы запустить код при запуске приложения для плагина, вам необходимо определить компонент приложения в plugin.xml а затем напишите класс реализации для компонента приложения. Я не совсем уверен, почему, но, что бы я ни пытался, я не мог инициализировать контекст Spring в компоненте приложения. Я пробовал как Spring Boot, так и vanilla Spring, но так и не смог заставить их правильно инициализироваться. В конце концов я закончил тем, что двигался дальше без инъекции зависимостей и IOC, что определенно было упущено, но я справился без этого 😉 .
Документации и примеров для конкретных материалов JetBrains было мало…
Мне было несколько сложно найти хорошие ресурсы в Интернете, поддерживающие разработчиков плагинов JetBrains. Помимо официальной документации JetBrains SDK, документация по API Intellij была скудной. Я не смог найти никакой справочной документации Javadoc для API-интерфейсов Intellij, что было довольно неприятно, когда мне нужно было ссылаться на параметры метода и возвращаемые типы или просто видеть описание определенного класса или интерфейса. Много раз мне приходилось просто переходить к скомпилированным классам в Intellij, чтобы просмотреть комментарии и специфику параметров и тому подобное. Это явно не идеально, но все же выполнимо. И… возможно, там есть лучшая документация, я просто не смог ее найти.
Что касается примеров и примеров кода того, как что-то делать с API-интерфейсами Intellij, мне повезло немного больше, но я все еще не мог найти много в Интернете. Вот список некоторых ресурсов, которые я нашел в Интернете, которые помогли мне на этом пути, пока я разрабатывал свой плагин:
- Руководство по разработке JetBrains SDK
- Руководство по разработке SDK, безусловно, является тем местом, где можно начать работу. Руководство разработчика полно полезной информации об архитектуре платформы плагинов, о том, как разрабатывать конкретные продукты, стратегии тестирования и т.д. Имейте в виду, однако, что в руководстве по разработке содержится много полезной информации, но здесь очень мало примеров кода или примеров того, как что-то делать.
- Плагин-Разработчик
- Plugin-Dev – это блог создателя плагинов Bush Support и Bash Support Pro для Intellij (Иоахим Ансорг). Он опубликовал здесь несколько очень полезных статей, в которых содержится информация и пример кода о том, как выполнить несколько жизненно важных задач для разработки качественных плагинов. Его статьи охватывают такие вещи, как внедрение надлежащих отчетов об ошибках, код инициализации плагина и завершение кода. К сожалению, в этом блоге не так много контента. Но то, что там есть, – это деньги 💵 !
- Примеры кода GitHub – Intellij SDK
- Это репозиторий GitHub содержит множество примеров для общих реализаций API Intellij. Реализация действий, работа с редактором и основы окна инструментов – это лишь некоторые из задач, с которыми этот блог помог мне, когда я разрабатывал свой плагин.
- Бельдунг
- Отличный блог Baeldung Java также содержит милую заметку о написании плагинов для Intellij. Хотя представленная информация довольно полезна, это также довольно простой пример плагина. Этот пост не очень полезен, если вы ищете образцы более продвинутых реализаций плагинов.
Это ресурсы, которые я нашел в Интернете, которые помогли мне на этом пути. Если вы решите создать собственный плагин, надеюсь, вы сможете найти несколько более полезных ресурсов, чем я смог.
Наконец-то готов к выпуску и запуску 🚀 !
Итак, вы закончили создание и тестирование своего потрясающего плагина… что теперь? До того, как JetBrains представила рынок плагинов, все, что вам нужно было сделать, это дополнительно запутать свою кодовую базу, создать архивный файл для вашего плагина и загрузить его в репозиторий плагинов. Легко, правда? Единственная проблема с этим заключается в том, что плагин, в который вы вложили кровь, пот и время, был общедоступен для всех БЕСПЛАТНО. Если вы хотите монетизировать свою тяжелую работу, вам нужно либо создать собственное решение для лицензирования и продаж, либо найти хорошее решение для использования в Интернете.
Рынок плагинов JetBrains открыл разработчикам плагинов возможность зарабатывать деньги на тяжелой работе, которую они вложили в свой продукт. Хотя процесс выпуска плагина на рынок все еще, похоже, находится в стадии разработки, в целом, я был довольно впечатлен всем до сих пор.
Торговая площадка предоставляет то же решение для лицензирования и продаж, которое сами JetBrains используют для лицензирования своих продуктов IDE. Они предоставляют несколько различных вариантов лицензирования, которыми вы можете воспользоваться, включая бессрочные резервные лицензии, но все их варианты лицензий основаны на подписке (т. Е. ежемесячно или ежегодно). На самом деле я был немного разочарован тем, что не было простой бессрочной лицензии (одноразовый платеж). Некоторые продукты просто не соответствуют бизнес-модели подписки, и, я думаю, было бы полезно иметь возможность одноразовой оплаты. Предположительно, они работают над тем, чтобы предложить этот вариант на ближайшее будущее, хотя 🤞🏽 .
Процесс получения плагина, одобренного для выпуска на рынке, довольно прост:
- Отправьте запрос на продажу плагинов на торговой площадке.
- После принятия запроса JetBrains выдаст вам код продукта для вашего плагина.
- Добавьте код продукта в свой plugin.xml файл.
- Необязательно запутывать кодовую базу ваших плагинов.
- ПРИМЕЧАНИЕ: Я попытался запутать кодовую базу своих плагинов с помощью ProGuard, и это нарушило некоторые функции моего плагина. Я думаю, что это как-то связано с запутыванием API Intellij. Я попробовал только один обфускатор, возможно, другой обфускатор (т. Е. Zelix Klassmaster) будет работать лучше.
- Протестируйте свой плагин на демонстрационном рынке.
- Таким образом, JetBrains столкнулся с проблемой создания тестовой площадки для разработчиков плагинов США, чтобы протестировать решение marketplace. Сотрудники JetBrains работают с вами напрямую, чтобы убедиться, что у вас есть все необходимое для загрузки вашего плагина на демонстрационный рынок для тестирования. Они даже заходят так далеко, что настраивают канал Slack для связи с вами, пока вы тестируете свой плагин. Это довольно круто 😀 !
- Выпустите свой плагин на волю!!!
Я нашел этот процесс очень тщательным, но не слишком сложным.
Так…что я построил?
После всего этого вам может быть интересно, что я построил, что породило эту свалку мыслей. Хорошо… Я написал довольно хороший пост о плагине, который я только что закончил создавать и выпускать на рынке плагинов прямо здесь, на DEV. Проверьте это!
В посте вроде как все сказано, поэтому я буду здесь кратким и простым… Я создал полезный плагин для заметок, который интегрирует службу заметок Evernote прямо в вашу среду разработки JetBrains. Плагин работает во ВСЕХ IDE JetBrains (например, Intellij IDEA, PyCharm, WebStorm, PhpStorm и т.д.) и представляет собой довольно приятный инструмент для создания фрагментов кода, который вы можете использовать, даже не покидая уютных рамок своей среды разработки.
Поэтому, если вы являетесь пользователем JetBrains и вам нужно повысить свою производительность, ознакомьтесь Книга заклинаний или БЕСПЛАТНАЯ, но ограниченная Базовая книга заклинаний .
Вывод
Поэтому я надеюсь, что никого не отпугнул от решения создавать коммерческие плагины для рынка плагинов JetBrains. Хотя есть некоторые болевые точки, в целом впечатления были совсем неплохими, и в конце дня есть плагин, над которым я надрывался на рынке, который, возможно, когда-нибудь принесет мне доллар или два 🤞🏽 🙏🏽 . Я очень рад, что JetBrains выпустила это решение для поддержки своих разработчиков плагинов и с нетерпением жду создания большего в будущем. В конце концов, любой, кто вкладывает все свои силы в создание чего-то, заслуживает того, чтобы ему за это заплатили.
Ура 🍻 !
Оригинал: “https://dev.to/mediocre_dev/building-a-commercial-plugin-for-the-jetbrains-plugin-marketplace-kdo”