问题描述
我有一个通过maven pom为多个Apex自定义规则创建的jar文件。 我的src / main / java文件夹包含8个Java程序。 我已经从中创建了一个jar文件,但是不确定执行jar时将执行哪个类?我想通过单个jar文件运行分析 当我使用pmd.bat命令运行此命令时,我得到了空指针异常,因为jar无法获取要首先调用哪个主类来运行分析
解决方法
您必须检入.jar
,文件META-INF/MANIFEST.MD
,该文件在Main-Class
键中被引用。如果有的话,可以在运行时使用java -jar myjar.jar com.test.Main
指定它(如果您的班级是com.test.Main
)。
但是,最好在MANIFEST.MD中直接指定它,例如通过一个maven插件
<project>
...
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
...
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<mainClass>fully.qualified.MainClass</mainClass>
</manifest>
</archive>
</configuration>
...
</plugin>
</plugins>
</build>
...
</project>
,
我想,您想执行以下操作:
- 您已经为Apex语言创建了自定义PMD规则。
- 您要编译自定义规则。
- 您要创建一个自定义PMD发行版,其中包含所有库存规则和自定义规则,以便您可以轻松地安装和使用它。
为此,请看一个示例项目(https://github.com/pmd/pmd-examples)-特别是Java的示例:https://github.com/pmd/pmd-examples/tree/java 可能有些过时,您需要针对顶点进行调整,但是它描述了您拥有的两个选项(使用自定义发行版或仅将自定义规则jar复制到lib文件夹中)。
一旦您将自定义规则集成到PMD安装中,您的规则在执行PMD时就会可用。