maven-dependency-plugin
は、コンパイル時に警告を生成することにより、コンパイル時に未使用の依存関係であると考えられるものを識別します。
[WARNING] Unused declared dependencies found:
[WARNING] org.foo:bar-api:jar:1.7.5:compile
場合によっては、このメッセージは誤検知であり、依存関係は推移的に必要になります。
質問:pom.xml
でこれが当てはまることをどのように識別できますか?
Pomで ignoredDependencies
要素を構成する必要があります。
無視される依存関係のリスト。このリストへの依存関係は、「宣言されているが未使用」および「使用されているが宣言されていない」リストから除外されます。フィルタの構文は次のとおりです。
[groupId]:[artifactId]:[type]:[version]
ここで、各パターンセグメントはオプションであり、完全および部分的な*ワイルドカードをサポートします。空のパターンセグメントは、暗黙のワイルドカードとして扱われます。 *
公式によっても指定されているように 依存関係分析から依存関係を除外する 。構成例は次のとおりです。
<build>
<plugins>
<plugin>
<artifactId>maven-dependency-plugin</artifactId>
<version>2.10</version>
<executions>
<execution>
<id>analyze-dep</id>
<goals>
<goal>analyze-only</goal>
</goals>
<configuration>
<ignoredDependencies>
<ignoredDependency>org.foo:bar-api:jar:1.7.5</ignoredDependency>
</ignoredDependencies>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
mvn dependency:tree
を使用して依存関係を評価できます。
提供されたスコープを使用してみてください
提供これはコンパイルによく似ていますが、実行時にJDKまたはコンテナーが依存関係を提供することを期待していることを示します。たとえば、Java Enterprise EditionのWebアプリケーションを構築する場合、サーブレットAPIおよび関連するJava EEAPIへの依存関係を提供されたスコープに設定します。 Webコンテナはこれらのクラスを提供します。このスコープは、コンパイルおよびテストクラスパスでのみ使用可能であり、一時的なものではありません。
Maven-dependency-pluginバージョン2.6以降、 sedDependencies タグを使用して、使用されている依存関係を強制することができます。
<plugin>
<groupId>org.Apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<configuration>
<usedDependencies>
<dependency>groupId:artifactId</dependency>
</usedDependencies>
</configuration>
</plugin>
それは私が探していたものとほぼ同じでしたが、もう少し次のように指定していると思います。
<execution>
<goals>
<goal>analyze-only</goal>
</goals>
<configuration>
<failOnWarning>true</failOnWarning>
<ignoredUnusedDeclaredDependencies>
<ignoredUnusedDeclaredDependency>org.reflections:reflections:*</ignoredUnusedDeclaredDependency>
</ignoredUnusedDeclaredDependencies>
<ignoredUsedUndeclaredDependencies>
<ignoredUsedUndeclaredDependency>junit:*:*</ignoredUsedUndeclaredDependency>
</ignoredUsedUndeclaredDependencies>
<ignoreNonCompile>false</ignoreNonCompile>
<outputXML>true</outputXML>
</configuration>
</execution>
したがって、これはほぼ同じですが、どの種類の依存関係を無視する必要があるかについてより具体的です