我想SLF4J會通過反射加載org.slf4j.impl.StaticLoggerBinder但看着org.slf4j.LoggerFactory的代碼,它是不是這樣的:SLF4J和記錄器工廠
StaticLoggerBinder.getSingleton().getLoggerFactory();
這可能表明,當他們打包SLF4J-api.jar中,他們要麼SLF4J-simple.jar在classpath(或SLF4J-nop.jar),但是這將導致循環依賴作爲ILoggerFactory界面即上面方法返回在slf4j-api.jar中定義。
所以,我認爲當他們包裝SLF4J-api.jar中,他們有一個存根實現的StaicLoggerBinder(以及其他相似的類),他們將編譯,但隨後從罐中取出的.class文件。聽起來有點不靈活,不是嗎?
用什麼樣的構建工具來達到這樣的結果?具體來說,如果我使用的是Maven,我該如何構建這種在編譯時產生的類從工件中排除的罐子?可能會有匿名和其他內部/嵌套類也被生成,如果它們也被刪除?
這是什麼問題? – Perception 2012-02-08 18:42:00
問題是構建步驟對於像Maven這樣的東西會是什麼?編譯後刪除整個包的事實是有道理的,但我試圖採用類似的靜態綁定策略,並試圖配置如何刪除由scala文件生成的類/特徵。我現在正在編譯後刪除所有MyMainStub * .class。 – 2012-02-10 03:00:58