maven 依存関係プラグインによって提供される興味深い機能を発見しました。プロジェクトの 1 つを分析したところ、次の出力が得られました。
[WARNING] Used undeclared dependencies found:
[WARNING] org.apache.geronimo.specs:geronimo-javamail_1.4_spec:jar:1.6:compil
e
[WARNING] javax.xml.soap:saaj-api:jar:1.3:compile
[WARNING] org.apache.geronimo.specs:geronimo-annotation_1.0_spec:jar:1.1.1:co
mpile
[WARNING] org.apache.geronimo.specs:geronimo-jaxws_2.1_spec:jar:1.0:compile
[WARNING] org.hibernate.javax.persistence:hibernate-jpa-2.0-api:jar:1.0.1.Fin
al:compile
[WARNING] org.apache.geronimo.specs:geronimo-ws-metadata_2.0_spec:jar:1.1.2:c
ompile
[WARNING] Unused declared dependencies found:
[WARNING] junit:junit:jar:4.5:test
[WARNING] log4j:apache-log4j-extras:jar:1.1:compile
[WARNING] org.slf4j:slf4j-log4j12:jar:1.6.4:compile
[WARNING] org.slf4j:slf4j-api:jar:1.6.4:compile
[WARNING] org.hibernate:hibernate-c3p0:jar:3.6.8.Final:runtime
「未使用の宣言」セクションは私には明らかです。「未宣言の使用」セクションに関しては、プロジェクトで直接使用されているが、Maven によって推移的にクラスパスに含まれている依存関係が表示されます。
最初の「org.apache.geronimo.specs:geronimo-javamail_1.4_spec:jar:1.6:compile」を例に取りましょう。この依存関係は、cxf-rt-core-2.2.6 の依存関係であるため、含まれています。ただし、JAR に存在するコードはプロジェクトでも直接使用されます。このプロジェクトが作成された時点で、開発者は別の Java Mail JAR を使用するつもりだったのではないかと考えています。
プロジェクトの 1 つで CXF 2.2.6 を使用したい場合、Geronimo が提供する Java Mail 仕様を推移的な依存関係として自動的に取得します。別の Java Mail API を使用したい場合はどうすればよいですか? search.maven.org を見ると、多くの JAR が Java Mail API を提供していることがわかります。
ありがとう