7

各子プロジェクトと孫プロジェクトで実行される親 pom でレポート構成を定義しています。

そのようです:

<reporting>
    <plugins>
        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>findbugs-maven-plugin</artifactId>
            <version>1.2</version>
            <configuration>
                <xmlOutput>true</xmlOutput>
                <threshold>Low</threshold>
                <effort>Min</effort>
                <includeFilterFile>${basedir}/findbugsFilter.xml</includeFilterFile>
            </configuration>
        </plugin>
    </plugins>
</reporting>

basedir問題は、定義している POM ではなく、各子がその子を挿入することです。私は ANT に相当するものを探していると思います<property name="name" location="${basedir}"/>

4

4 に答える 4

7

短いバージョン:問題の解決策は、 findbugs-maven-plugin のドキュメントに記載されています。ビルド構成用に別の (最上位) プロジェクトを作成し、findbugsFilter.xmlそのプロジェクトを依存関係として参照するだけです。

長いバージョン: Maven で親プロジェクトまたは兄弟プロジェクトからリソースにアクセスすることは、残念ながら少し複雑です。この理由: 子プロジェクトをビルドするとき、Maven は、親モジュールが 1 レベル上にある、または兄弟プロジェクトがファイル システム内の同じレベルにあると想定できません。実際、これらのプロジェクトがどこかにチェックアウトされているとは想定できません。1 つの子プロジェクトのみをチェックアウトして、それをそのままビルドすることは完全に合法です。したがって、Maven でビルドすると、すべて (ごくわずかな例外を除く) がローカル リポジトリから読み込まれます。これが、複数のモジュールで使用するリソースに対して個別のプロジェクトを作成する必要がある理由です。その後、別のプロジェクトを依存関係として追加し、一連のさまざまな Maven プラグインで使用できます。例は次のとおりです。構成ファイルを読み取るための findbugs プラグイン、外部ファイルをアーティファクトにコピーするためのmaven-dependency-plugin 、または外部プロパティ ファイルをロードするためのproperties-maven-pluginです。

于 2009-05-05T22:55:41.957 に答える
4

子POMに親と同じプロパティファイルを持たせたいという同様の問題がありましたが、 ${project.parent.basedir} 変数を機能させることができませんでした。

しかし、私がしたことは、親に変数を作成し、それぞれの子 Pom で同じ変数を上書きすることでした (これは grand-pom でも機能するはずです...私は何も持っていませんでした)。

例えば:

Parent POM:
    <properties>
        <my_basedir>${basedir}</my_basedir>
    </properties>


Child POMs:
    <properties>
        <my_basedir>${basedir}/../</my_basedir>
    </properties>

ここで、フィルターを親に一度リストするだけで、他のすべての人がそれを取得します。子を移動する場合は、相対パスを変更するだけです。

   <filters>
       <filter>${my_basedir}/myfile.properties</filter>
   </filters>
于 2009-06-26T16:11:25.217 に答える
0

これはあなたの他の質問に関連しています。

フィルタファイルを別のアーティファクトにデプロイするというアイデアをあきらめましたか?なんで?

絶対パスの問題は、子プロジェクトをビルドするときに、親プロジェクトのソースがマシン上に存在するという保証がないことです。これが、リポジトリメカニズムを持つことの要点です。

他の質問に対する私の提案を試しましたか?

于 2009-01-21T17:43:12.560 に答える
0

これで問題が解決するかどうかはわかりませんが、試していただけるアイデアが 2 つあります。

最初のアイデア

親 pom でプロパティを定義し、レポート構成で使用します。

<properties>
    <parent-basedir>${basedir}</parent-basedir>
</properties>
...
<reporting>
    <plugins>
        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>findbugs-maven-plugin</artifactId>
            <version>1.2</version>
            <configuration>
                <xmlOutput>true</xmlOutput>
                <threshold>Low</threshold>
                <effort>Min</effort>
                <includeFilterFile>${parent-basedir}/findbugsFilter.xml</includeFilterFile>
            </configuration>
        </plugin>
    </plugins>
</reporting>

2番目のアイデア

もう 1 つのアイデアは、${project.parent.basedir} を使用することです。

...
<includeFilterFile>${project.parent.basedir}/findbugsFilter.xml</includeFilterFile>
...
于 2009-01-21T15:43:56.577 に答える