Maven依存関係をテストランタイム(テストコンパイルではない)のクラスパスとしてのみ使用すると宣言する最も良い方法は何ですか?Maven依存関係をテストランタイムとして宣言する
具体的には、通常のコンパイルスコープの依存関係として、ログオンファサードが必要ですが、テストランタイムクラスパス上でのみslf4j-simple
(ユニットテストに適したベアボーンの実装)が必要です(テストコンパイルには不要です)。私はこれを行ってきた:
[WARNING] Unused declared dependencies found:
[WARNING] org.slf4j:slf4j-simple:jar:1.7.7:test
私はruntime
を使用することはできません。
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
<scope>test</scope>
</dependency>
しかし、これの欠点はdependency:analyze
レポートがslf4j-simple
それはコンパイルに必要ではないですおそらくので、未使用ということです(例えば、下流の依存関係がlog4jなどを代わりに使用できるように)従属関係を推移的に継承したくないからです。私はoptional=true
でruntime
を試しましたが、同じ警告が表示されます。
(私も依存関係のプラグインのignoreNonCompile
を設定することができることに注意してください、それが他の潜在的な問題を隠してしまう非常に鈍器のように思える。)
実行時にメインソースには何が必要ですか?ランタイムスコープの依存関係についてはまだ不平を言いませんか? –
一般に、推移的依存関係を宣言する必要はありません。オプションの依存関係(通常、異なるフレームワークを使用できるロギングのような)では、プロシージャは正しいです。スコープテストを追加することもできます。 –
また、(間違って、IMHO) 'ランタイム'の依存関係についても文句を言うので、スコープだけでは解決できないようです。私が本当に望むのは、 'test'と' runtime'(クラスパスまで)の交差点であるスコープと、依存性プラグインが ''未使用 ''ランタイム'依存性についてあまり愚かではないということです。 –