Ich habe mehrere Projekte eingerichtet, mit Maven und dem Findbugs-Plugin. Ich muss einige Dateien in einem der untergeordneten Projekte ausschließen, also habe ich sie zu findbugs-exclude.xml
hinzugefügt. Das funktioniert, wenn ich das Teilprojekt einbaut.
Mein Problem tritt auf, wenn ich versuche, auf oberster Ebene zu bauen. Maven findet das findbugs-exclude.xml
im Teilprojekt nicht. So ignoriert es meine Fehler nicht und scheitert an ihnen. Ich kann mein findbugs-exclude.xml
in das Top-Level-Verzeichnis setzen und der Ausschluss funktioniert. Aber das verschmutzt die oberste Ebene und würde nicht positiv gesehen werden.
Gibt es eine Möglichkeit, das Maven-Plugin dazu zu bringen, die findbugs-exclude.xml
-Datei aus einem Unterverzeichnis zu verwenden? Vorzugsweise mit wenig bis keine Veränderung auf oberster Ebene?
Eine Lösung hierfür ist, ein separates Projekt zu erstellen, das die Datei findbugs-excludes.xml enthält, und dann das Dependence-Plugin zu verwenden, um es zu entpacken und lokal dort zu platzieren, wo es so etwas benötigt:
%Vor%Mit diesem Ansatz können Sie diese Ausschlussdatei dann bei Bedarf über mehrere Projekte hinweg teilen, was je nach Betrachtungsweise gut oder schlecht sein kann :) Wenn Sie darüber nachdenken, können Sie, wenn Sie ein dediziertes Findbugs-Projekt haben, mit Hilfe von Klassifikatoren verschiedene Varianten von Ausschlüssen erstellen und je nach Kontext einen bestimmten Klassifikator verwenden. Es ist nicht perfekt, aber es funktioniert für mich.
HTH, James
Hier ist, was ich in meinem aktuellen Projekt mache, es setzt findbugs-exclude.xml
in das übergeordnete Projekt (was ich weiß, dass du es nicht willst), aber es behebt das DRY-Problem, es an zwei Stellen zu pflegen. Es ist einfacher als das Entpacken, erfordert jedoch, dass die gesamte Projektstruktur lokal ist. (Ich denke, die Entpackungslösung wäre nützlich, um für viele Projekte dieselbe Konfiguration zu verwenden, wie in einer Unternehmensumgebung.)
Ich speichere meine findbugs-Konfiguration in parent/src/main/resources/shared/findbugs-exclude.xml
, aber solange sie im Elternteil ist, spielt das spezifische Verzeichnis keine Rolle.
Ich verwende dann Eigenschaften, um den Speicherort des 'shared' Verzeichnisses zu beschreiben:
%Vor%Und referenzieren Sie diese Eigenschaften beim Konfigurieren von findbugs im übergeordneten Element:
%Vor% Alle direkten untergeordneten Projekte führen jetzt Findbugs aus, die auf die Konfigurationsdatei im übergeordneten Element verweisen. Wenn Sie mehrere Ebenen der Projektverschachtelung haben, müssen Sie myproject.parent.basedir
im Unter-Parent überschreiben. Wenn Sie zum Beispiel Eltern & lt; - Unterparent & lt; - Kind haben, würden Sie folgendes setzen:
Wenn Sie nicht viele Dateien / Pakete ausschließen müssen, unterdrücken Sie einfach einige Warnungen - versuchen Sie es mit @SuppressFBWarning Annotationen. Das sollte mit sogar mehreren Modulprojekten funktionieren und Anmerkung kann in spezifischen Projekten und Akten wo erforderlich hinzugefügt werden.
Abhängigkeiten für @SuppressFBWarning
%Vor%Eine bessere Alternative zur akzeptierten Antwort ist die Verwendung von maven-remote-resources-plugin . Ich mag James Ansatz, aber dann müssen Sie das saubere Plugin optimieren, um die entpackten Dateien im Ordner src zu löschen.
Erstellen Sie nach James 'Vorschlag ein separates Projekt, das die Datei findbugs-excludes.xml enthält, und fügen Sie folgendes in die Pom-Datei ein:
%Vor%Aktualisieren Sie die Pom-Datei mit dem Findbugs-Plugin:
%Vor%Vergessen Sie nicht, com.myproject: myartifactid: version
zu ändernmaven-remote-resources-plugin kopiert Ihre freigegebenen Dateien in den Zielordner, sodass Sie das Standardverhalten von maven-clean-plugin nicht ändern müssen.