私はSLF4Jは、反射を経てorg.slf4j.impl.StaticLoggerBinderをロードするだろうと思ったが、org.slf4j.LoggerFactoryのコードを見て、それはそうではありません。SLF4Jロガー工場
StaticLoggerBinder.getSingleton().getLoggerFactory();
それは彼らがSLF4J-api.jarのをパッケージ化するとき、彼らが持っていたことを示唆しているかもしれませんどちらかとして循環依存につながるSLF4J-simple.jarしかし、クラスパスに(またはSLF4J-nop.jar)ILoggerFactory上記のインターフェイスメソッドの戻りSLF4J-api.jarのに定義されています。
だから、私は彼らがSLF4J-api.jarのをパッケージ化するとき、彼らはコンパイルが、その後のjarから.classファイルを削除することになるStaicLoggerBinder(および他の類似のクラス)のスタブ実装を持っていたと思います。少し不道徳なようですね。
ビルドツールのどのような種類の一つは、このような結果を達成するために使うのでしょうか?私はMavenを使用していた場合に具体的に、どのように私は、コンパイル時に生成するクラスは、アーティファクトから除外されているようにjarファイルをビルドするのですか?彼らはあまりにも除去しなければならない、あまりにも生産され、匿名や他のネストされた/インナークラスがあるかもしれませんか?
質問するには? – Perception
質問は、ビルドステップは、Mavenのようなもののためになる何でしたか?コンパイル後にパッケージ全体が削除されるのは意味がありますが、私は同様の静的バインディング戦略を採用しようとしており、スカラーファイルによって生成されたクラス/特性を削除する方法を設定しようとしていました。コンパイル後にすべてのMyMainStub * .classを削除しようとしています。 –