如何将自定义JAR添加到" eclipse-pmd"插入?

时间:2015-03-11 09:46:03

标签: java eclipse pmd

here安装 Eclipse PMD插件 (由 Philip Graf 编写)。我尝试关联自定义PMD规则类JAR但无法找到它的规定。此JAR包含自定义规则类(间接extends AbstractJavaRule。)

那么有没有办法配置 eclipse-pmd 插件来接受这个自定义JAR?

我的custompmd.jar具有以下结构:

  

custompmd.jar
└─com/ pmd / custom
  └─AvoidHardcodingRule.class
  └─AvoidCatchWithoutLogErrorRule.class
  └─etc...

简单地将它放在plugins目录中没有帮助。其中一个SO question提出了一个解决方案,但这是针对不同的 plugin

[UPDATE]
我目前正在考虑编辑其中一个eclipse\plugins\ch.acanda.eclipse.pmd.BLAHBLAH.jar,将custompmd.jar添加到lib文件夹中,并通过在 Bundle-ClassPath中附加JAR信息来更新META-INF\MANIFEST.MF文件:部分。这是正确的做法,因为修补插件JAR对我来说似乎很丑陋吗?

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

你们中的任何一位Eclipse专家都知道如何破解它吗?

[UPDATE]
我自己解决了。

[UPDATE]
虽然以下解决方案有效,但这是一场维护噩梦。每当我更改custompmd.jar时,我每次都必须更新插件JAR,这很乏味。有一个干净整洁的解决方案吗?

2 个答案:

答案 0 :(得分:3)

最后我自己想出来了!

(我应该在之前的尝试中使用它,但是由于ANT任务失败导致陈旧custompmd.jar,但是那段时间没有工作)。< / em>的

步骤一步:

  1. ch.acanda.eclipse.pmd.core_<blahblah#>.jarplugins目录复制到临时目录。
  2. 使用7-Zip软件在临时目录中打开JAR
  3. custompmd.jar添加到lib目录。
  4. 修改META-INF/MANIFEST.MF文件,在,lib/custompmd.jar
  5. 末尾添加此字符串Bundle-Classpath:
  6. 关闭7-Zip(并接受“保存”对话框)。
  7. 备份现有的/plugins/ch.acanda.eclipse.pmd.core_<blahblah#>.jar并将其替换为此临时jar。
  8. 退出Eclipse并重新启动

答案 1 :(得分:1)

如果将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的值必须为2Fragment-Host必须包含主机包ch.acanda.eclipse.pmd.core的符号名称,以及您已安装的eclipse-pmd的版本。 Bundle-RequiredExecutionEnvironment指定插件片段所需的最小执行环境。如果使用Java 7编译它,则其值为JavaSE-1.7;如果使用Java 8,则其值为JavaSE-1.8

更改jar的清单后,可以将其复制到eclipse安装的dropins文件夹中。启动Eclipse时会安装插件片段。