如何将自定义JAR文件添加到“eclipse-pmd”插件?

3
这里安装了由Philip Graf编写的Eclipse PMD插件。我试图关联一个自定义的PMD规则类JAR,但找不到相应的配置项。这个JAR包含自定义规则类(间接地扩展了extends AbstractJavaRule)。
那么有没有办法配置eclipse-pmd插件来接受这个自定义的JAR呢?
我的custompmd.jar的结构如下:

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

把它简单地放在plugins目录下没有任何用处。其中一个SO问题提出了一个解决方案,但那是针对一个不同的插件[更新]
我目前正在考虑编辑其中一个eclipse\plugins\ch.acanda.eclipse.pmd.BLAHBLAH.jar,将custompmd.jar添加到lib文件夹中,并在META-INF\MANIFEST.MF文件中将JAR信息附加到Bundle-ClassPath:部分。这样做是否正确,因为修改插件JAR看起来有些丑陋? [更新]
上述方法并没有起作用。
你们Eclipse大师知道如何解决吗? [更新]
我自己解决了它。 [更新]
虽然下面的解决方案可行,但它是一个维护的噩梦。每当我更改custompmd.jar时,我都必须同时更新插件JAR,这非常繁琐。有没有一种干净、简洁的解决方案呢?
2个回答

3

最终自己解决了!

(我应该在之前的尝试中就让它工作起来了,但由于因为失败的ANT任务而导致的陈旧的custompmd.jar,那时它没有起作用)。

步骤:

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

1
修改来自eclipse-pmd的插件的缺点是,在发布新版本的eclipse-pmd并替换插件为其更新版本时,您会失去您的修改。如果您将您的jar转换为插件片段并在Eclipse中安装它,则不会出现这个问题。我的答案向您展示如何做到这一点。 - eclipse-pmd
@大家,请参见上方(被接受的答案)以获取一个可维护的解决方案(并且它是来自插件作者的真实解决方案)。 - KrishPrabakar

2
你可以使用自定义规则类,如果你将你的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必须包含宿主bundle的符号名称ch.acanda.eclipse.pmd.core,并且还可以选择您安装的eclipse-pmd版本。 Bundle-RequiredExecutionEnvironment指定插件片段所需的最小执行环境。如果您使用Java 7编译,则其值为JavaSE-1.7,如果使用Java 8,则为JavaSE-1.8
一旦您更改了jar的清单,就可以将其复制到eclipse安装的dropins文件夹中。当您启动Eclipse时,将安装您的插件片段。

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