7

宣言された依存関係 A、B、および C を持つ pom があります。依存関係を削除するプロファイルを作成することは可能ですか?

4

2 に答える 2

15

プロファイル内の最上位の依存関係を除外する方法がわかりません (<exlusions>推移的な依存関係でのみ使用できます)。ただし、次の例のように、「通常の」依存関係をデフォルト プロファイルで指定し、削減された依存関係を別のプロファイルで指定できます。

<profiles>

    <profile>
        <id>default</id>
        <activation>
            <activeByDefault>true</activeByDefault>
        </activation>
        <dependencies>
            <dependency>
                <groupId>log4j</groupId>
                <artifactId>log4j</artifactId>
                <version>1.2.14</version>
            </dependency>
        </dependencies>
    </profile>

    <profile>
        <id>excludeDependency</id>
        <dependencies>
        </dependencies>
    </profile>

</profiles>

log4j をどこかで使用すると、「excludeDependency」プロファイルでのコンパイルが失敗します。

あなたのユースケースは明確ではありません。オプションの依存関係提供された依存関係など、他のソリューションもニーズに合うかもしれません。これらの可能性を見てください。

于 2012-12-11T12:11:25.827 に答える
3

Maven では、プロファイルは基本プロファイルに追加されるため、この使用パターンは依存関係を除外するのに適していることがわかりました。

    <dependency>
        <groupId>log4j</groupId>
        <artifactId>log4j</artifactId>
        <version>1.2.14</version>
    </dependency>
</dependencies>

<profiles>
    <profile>
        <id>Exclude</id>
        <dependencies>
            <dependency>
                <groupId>log4j</groupId>
                <artifactId>log4j</artifactId>
                <version>1.2.14</version>
                <scope>test</scope>
            </dependency>
        </dependencies>
    </profile>
</profiles>

次に、テストするスコープを変更して、依存関係を「除外」します。すべての用途に適しているわけではありませんが、別のオプションとして。

于 2015-03-12T11:16:17.780 に答える