5

FindBugsMavenプラグインで使用したいカスタムFindBugs検出器の素晴らしいJARがあります。構成パラメーターを介してプラグインでこれを行う方法があり<pluginList>ますが、それはローカルファイル、URL、またはリソースのみを受け入れます。

そうするために私が見つけた唯一の方法は、JARをローカルファイルに(おそらくDependencyプラグインを介して)コピーしてから、FindBugsプラグインを次のように構成することです。

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>findbugs-maven-plugin</artifactId>
    <version>2.3.1</version>
    <configuration>
        <pluginList>${project.build.directory}/my-detectors.jar</pluginList>
    </configuration>
</plugin>

しかし、これはあまり柔軟ではありません。Mavenの依存関係管理機能をFindBugsのプラグインと一緒に使用する方法はありますか?次のようなものを使用したいと思います。

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>findbugs-maven-plugin</artifactId>
    <dependencies>
        <dependency>
            <groupId>com.lptr.findbugs</groupId>
            <artifactId>my-detectors</artifactId>
            <version>1.0</version>
        </dependency>
    </dependencies>
</plugin>

...しかし、これは単にcoreFindBugs検出器をオーバーライドします。

4

2 に答える 2

2

別の回避策は、ローカルリポジトリ内のプラグインへのパスを指定することです。ローカルリポジトリパスのプロパティがあるので、これは引き続き移植可能です。

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>findbugs-maven-plugin</artifactId>
    <version>2.3.1</version>
    <configuration>
        <pluginList>${settings.localRepository}/path/to/plugin/1.0-SNAPSHOT/artifact-1.0-SNAPSHOT.jar</pluginList>
    </configuration>
</plugin>

更新: findbugs mavenプラグインのバージョン2.4.1以降、まさにこのユースケースの構成オプションがあります。

于 2011-02-24T13:42:06.977 に答える
2

かなりのハッキングを通じて、これが可能であることがわかりました。FindBugsはローカルJARにあるプラグインのみを処理できるため、プラグインを作成する必要がありますが、これを行うには、Dependencyプラグインを使用するよりも柔軟な方法があります。

<pluginList>パラメータは、ローカルファイルパス、URL、またはリソース(つまり、クラスパスからの何か)のいずれかを取ることができます。あなたがそれに与えるものは何でも、アドレス指定されたファイルはにコピーされtarget/<filename>、FindBugs自体に渡されます。JARファイルを含むJARファイルを作成する場合は、FindBugsに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)がmy-detectors.jar誤って抽出する古いバージョンのPlexus ResourceManagerを使用しているため、それも「アップグレード」する必要があることです。これで、カスタム検出器がこれで動作します。

<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>
于 2010-08-09T10:24:41.607 に答える