我想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