簡體   English   中英

如何將自定義JAR添加到“eclipse-pmd”插件?

[英]How to Add custom JAR to the “eclipse-pmd” plugin?

這里安裝了Eclipse PMD插件 (由Philip Graf編寫)。 我嘗試關聯自定義PMD規則類JAR但無法找到它的規定。 此JAR包含自定義規則類(間接extends AbstractJavaRule )。

那么有沒有辦法配置eclipse-pmd插件來接受這個自定義JAR?

我的custompmd.jar有這樣的結構:

custompmd.jar
└─com/ PMD /自定義
└─AvoidHardcodingRule.class
└─AvoidCatchWithoutLogErrorRule.class
└─etc...

簡單地將它放在plugins目錄中沒有幫助。 其中一個問題提出了一個解決方案,但這是針對不同的 插件

[UPDATE]
我目前正在考慮編輯其中一個eclipse\\plugins\\ch.acanda.eclipse.pmd.BLAHBLAH.jar ,將custompmd.jar添加到lib文件夾中,並通過在JAR信息中附加JAR信息來更新META-INF\\MANIFEST.MF文件。 Bundle-ClassPath:部分。 這是正確的做法,因為修補插件JAR對我來說似乎很丑陋嗎?

[UPDATE]
上述方法不起作用。

你們中的任何一個Eclipse大師都知道如何破解它?

[UPDATE]
我自己解決了這個問題。

[UPDATE]
雖然以下解決方案有效,但這是一場維護噩夢。 每當我更改custompmd.jar ,我每次都必須更新插件JAR,這很乏味。 有干凈整潔的解決方案嗎?

終於弄清楚了自己!

(我應該在我之前的嘗試中使用它,但是由於ANT任務失敗而導致custompmd.jar過時,但是那段時間不起作用)。

一步步:

  1. ch.acanda.eclipse.pmd.core_<blahblah#>.jarplugins目錄復制到臨時目錄中。
  2. 使用7-Zip軟件在臨時目錄中打開JAR
  3. custompmd.jar添加到lib目錄中。
  4. 編輯META-INF/MANIFEST.MF文件,在Bundle-Classpath:末尾附加此字符串,lib/custompmd.jar Bundle-Classpath:
  5. 關閉7-Zip(並接受“保存”對話框)。
  6. 備份現有的/plugins/ch.acanda.eclipse.pmd.core_<blahblah#>.jar並將其替換為此臨時jar。
  7. 退出Eclipse並重啟

如果將jar作為Eclipse插件片段添加到Eclipse安裝中,則可以使用自定義規則類。 插件片段的主機必須是ch.acanda.eclipse.pmd.core

要將jar轉換為插件片段,您必須修改文件MANIFEST.MF文件並添加一些清單頭。 以下是Eclipse插件片段的完整清單:

Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: Custom PMD Rules
Bundle-SymbolicName: org.example.customrules
Bundle-Version: 1.0.0
Fragment-Host: ch.acanda.eclipse.pmd.core;bundle-version="1.4.1"
Bundle-RequiredExecutionEnvironment: JavaSE-1.7

您可以為標題Bundle-NameBundle-SymbolicNameBundle-Version選擇自己的值。 標頭Bundle-ManifestVersion的值必須為2 Fragment-Host必須包含主機包的符號名稱ch.acanda.eclipse.pmd.core以及您已安裝的eclipse-pmd的版本。 Bundle-RequiredExecutionEnvironment指定插件片段Bundle-RequiredExecutionEnvironment的最小執行環境。 如果使用Java 8編譯它,則使用Java 7或JavaSE-1.8編譯它的值為JavaSE-1.7

更改jar的清單后,可以將其復制到eclipse安裝的文件夾dropins中。 啟動Eclipse時會安裝插件片段。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM