Я узнал, что это возможно, хотя через довольно много взлома.FindBugs может обрабатывать только те плагины, которые находятся в локальных JAR-файлах, поэтому вам нужно создать один для него, но есть более гибкий способ сделать это, чем через плагин Dependency.
Параметр <pluginList>
можетвозьмите либо локальный путь к файлу, либо URL, либо ресурс (т.е. что-то из пути к классам).Все, что вы дадите ему, адресуемый файл будет скопирован в target/<filename>
и передан самой FindBugs.Вы можете передать FindBugs файл JAR, если вы создадите файл JAR, содержащий ваш файл JAR.Вы можете достичь этого в проекте my-detectors
с помощью плагина Assembly с дескриптором, подобным следующему:
<assembly>
<id>doublepack</id>
<formats>
<format>jar</format>
</formats>
<includeBaseDirectory>false</includeBaseDirectory>
<files>
<file>
<source>${project.build.directory}/${project.build.finalName}.jar</source>
<destName>my-detectors.jar</destName>
</file>
</files>
</assembly>
Единственная другая проблема, которую нужно решить, - это то, что плагин FindBugs (по крайней мере версия 2.3.1) используетустаревшая версия Plexus ResourceManager, которая неправильно извлекает my-detectors.jar
, так что вам тоже придется «обновить» ее.Теперь ваши пользовательские детекторы будут работать с этим:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>findbugs-maven-plugin</artifactId>
<configuration>
<pluginList>my-detectors.jar</pluginList>
</configuration>
<dependencies>
<dependency>
<groupId>org.codehaus.plexus</groupId>
<artifactId>plexus-resources</artifactId>
<version>1.0-alpha-7</version>
</dependency>
<dependency>
<groupId>com.lptr.findbugs</groupId>
<artifactId>my-detectors</artifactId>
<version>1.0</version>
<classifier>doublepack</classifier>
</dependency>
</dependencies>
</plugin>