IntelliJ Idea:如何在开发的插件中公开类,接口,注释

2022-09-02 04:50:37

我为IntelliJ Idea创建了一个插件。在插件中,我定义了一个我想在我的项目中使用的注释,但它似乎无法访问。我应该如何在插件.xml文件中指定要公开的软件包?


答案 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>

或者,您可以将 jar 安装到本地存储库中,然后将其用作正常的 maven 依赖项。

如果没有,则直接在项目设置中添加依赖项,就像它是任何其他jar一样。

plugin.xml与这些无关,这都是关于jar和classpath的。您可以在插件中做的是一些用户友好的检查和操作,这将为您添加依赖项。


答案 2

默认情况下,插件可以自动读取和访问安装在同一IDE上的任何其他插件的公共成员(即,您的插件可以读取公共变量,调用公共函数 - 所有内容都在同一类路径上进行)。如果您依赖于另一个插件,则必须首先将其作为显式依赖项添加到插件配置文件中,以便最终用户的 IDE 知道在缺少插件所需的插件依赖项时下载并安装这些依赖项。

在开发过程中,您现在应该使用Gradle。在项目的(或)文件中,的 intellij.plugins 属性将允许您指定插件依赖项的 and。这些属性的值可以在插件存储库中找到,参见 )。随后,会将所需的 IntelliJ 平台插件作为外部库添加到您的项目中,从而允许您获得代码完成、静态分析并测试您的插件及其在插件沙箱内的依赖项(通过 )。build.gradlebuild.gradle.ktsgradle-intellij-pluginidversionPlugin XML IDgradle-intellij-plugin./gradlew runIde

出于稳定性原因,插件应避免使用其他插件的内部类。如果您希望使其他插件能够以编程方式使用您的插件(即假设您要提供API),那么IntelliJ平台具有所谓的扩展点的概念。这些将允许您定义一个具体的接口,或其他插件的合同来访问您的插件的功能,而无需了解其源代码。使用扩展点具有将这些插件与任何内部插件重构分离的额外好处。


推荐