如何为IntelliJ IDEA插件指定库依赖?

12
我正在为 IntelliJ IDEA 开发插件。 我的做法是在 IDEA 中创建一个插件项目,然后将其打包成带有适当的 META-INF/plugin.xml 的 jar 包,并从 jar 包安装插件。
问题在于我想添加对 org.scala-lang:scala-library:2.11.0 的依赖。 我已经将其指定为 IDEA 项目中的库依赖项,但是这些信息似乎从未传递到生成的 JAR 中。
如何以这种方式包含此信息,使 IntelliJ IDEA 能够识别它?

“this information never seems to get passed along to the generated JAR” 是什么意思?你看到了什么?你得到了什么错误? - Software Engineer
插件jar的文档结构没有提供在jar中指定库依赖的任何方法。我希望有其他方法可以实现它(也许涉及插件依赖的巧妙方法)。 - Owen
一个五秒钟的网络搜索返回了这个链接,我认为它非常接近你正在做的事情:http://confluence.jetbrains.com/display/SCA/Developing+IDEA+plugin+with+dependency+on+Scala+plugin。 - Software Engineer
嗯,这有点相关,但我真的不想依赖于Scala插件,只想依赖于Scala库。 - Owen
目前我正在使用SBT,但是,是的,库是以与Maven相同的方式从Maven存储库中检索的。但是,实际上使用Maven也是一种选择。 - Owen
那么这个SO问题可能会有所帮助:https://dev59.com/EWbWa4cB1Zd3GeqPTiJb -- 这意味着你必须在maven中将依赖项列为提供的依赖项(或在IntelliJ项目结构中的等效位置),并将lib部署到IntelliJ主目录下的lib目录中。 - Software Engineer
2个回答

7
据我所理解,您想将某些库(例如scala库)与您的插件捆绑在一起。 这很简单。
1. 进入项目设置,选择模块并进入依赖项选项卡。 将要捆绑的库的作用域设置为“Compile”。 在此示例中,“checker-framework”库具有此设置,而“groovy-2.3.6”库由于其作用域设置为“Provided”而不会被捆绑。 保存更改。 Module dependencies tab图片链接:https://istack.dev59.com/1NwYG.webp 2. 准备插件进行部署 Prepare plugins for deployment action图片链接:https://istack.dev59.com/inP5A.webp 宽度400
3. 然后您就可以得到该插件的zip文件,准备进行部署(上传到仓库或在本地安装)。 它将包含lib文件夹,其中包含所有必要的jar文件。

6
官方支持的插件依赖管理解决方案是使用Gradle和gradle-intellij-plugin,通过Gradle的dependenciesintellij.plugins入口。如果您想在工程中添加一个artifact(例如托管在Maven Central上),那么只需像在基于Gradle的项目中一样配置dependencies即可:
buildscript {
    repositories {
        mavenCentral()
    }
}

dependencies {
    compile("org.scala-lang:scala-library:2.11.0")
}

intellij.plugins入口将在当前项目中添加一个工件,以及一个<depends>标签到您的plugin.xml文件中。如果要与自己的插件一起安装外部插件,例如如果您正在使用插件扩展功能(假设插件托管在JetBrains插件存储库上),请使用以下代码片段:

plugins {
    id "org.jetbrains.intellij" version "0.2.13"
}

intellij {
    //...
    plugins "org.intellij.scala:2017.2.638"
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接