2015-05-04 95 views
21

我已經爲IntelliJ Idea創建了一個插件。在插件中,我定義了一個我想在我的項目中使用的註釋,但它似乎無法訪問。 我應該如何在plugin.xml文件中指定我想要公開的包?IntelliJ Idea:如何在開發插件中公開類,接口和註釋

+1

也許你應該用這個類,接口和註解來創建一個項目,你的主要項目將依賴於這個項目嗎? –

+0

這些註釋由插件使用,因此我希望它們成爲插件的一部分。我不希望用戶重新定義它們。我會盧克從插件導入他們,我想這是可能的 – lowcoupling

+1

不贊同近距離投票。問題非常清楚 - 請保持開放。 – vikingsteve

回答

5

當你安裝一個插件時,它會在某個地方 - 例如, 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> 

或者你可以install the jar into your local repository,然後用它作爲正常Maven的依賴。

如果不是,則直接在項目設置中添加依賴項,因爲它是任何其他jar。

plugin.xml與此無關,這是關於罐子和類路徑。你可以在你的插件中執行一些用戶友好的檢查和操作,這會增加對你的依賴。

0

默認情況下,插件可以自動讀取和訪問的公衆成員安裝在同一個IDE任何其他插件(即你的插件可以讀取公共變量,調用公共職能 - 一切都在相同的類路徑)。如果您依賴於另一個插件,則必須首先在plugin configuration file內將其作爲explicit dependency添加,以便最終用戶的IDE將知道如果缺少它們,將下載並安裝插件所需的插件依賴關係。

在開發過程中,您現在應該使用Gradle。在您的項目的build.gradle(或build.gradle.kts)文件中,的intellij.plugins屬性將允許您指定插件依賴項的idversion。這些屬性的值可以在Plugin Repository上找到,參見參考資料。 Plugin XML ID)。隨後,gradle-intellij-plugin會將所需的IntelliJ平臺插件作爲外部庫添加到您的項目中,從而允許您在插件沙箱內(通過./gradlew runIde)獲得代碼完成,靜態分析和測試插件以及其依賴關係。

出於穩定性考慮,插件應該避免使用其他插件的內部類。如果您希望啓用其他插件以編程方式使用您的插件(即假設您想提供API),那麼IntelliJ Platform具有所謂的Extension Points的概念。這些將允許你定義一個具體的接口,或合同讓其他插件訪問你的插件的功能,而不需要知道太多的源代碼。使用擴展點具有將這些插件與任何內部插件重構解耦的附加好處。

相關問題