我有一个数据库密集的可分发java应用程序,目前只有400k。我们需要改进数据库查询构建以及支持一些特定的数据库方言。
jOOQ必须加入我们的JAR中,即使使用minimizeJar
元素进行遮挡,它也会增加到1.6MB。
有没有办法可以自定义构建或删除我们现在没用的jOOQ组件?方言,非插入/选择/删除查询类,我们不需要的其他功能?
我想过尝试识别我们正在使用的每个导入的类,并设置maven只遮蔽那些,但我还需要处理jOOQ内部使用的类,我不知道jOOQ对所有内容的依赖程度。
如果我可以将它剥离到几百k,我将继续使用它出售。
答案 0 :(得分:0)
jOOQ是一种特定于域的语言,根据此处说明的原则实现: http://blog.jooq.org/2012/01/05/the-java-fluent-api-designer-crash-course/
这意味着DSL规范中的每个“生产”或“主要”都会生成一个Java接口,其中包含可能在类加载器中生成的所有开销。另外,由于jOOQ 3.0,引入了具有1-22度的记录和行类型(例如org.jooq.Row1,org.jooq.Row2,... org.jooq.Row22)。所有这些元素都是API的一部分,可能无法进一步删除。
当然,您可以尝试手动删除jOOQ API和实现,从中删除所有行类型。您可能不需要的另一个完整语句是MERGE语句,它也具有广泛的API。然后,有一些工具包,不是严格需要的,具体来说是:
此外,您可以尝试从org.jooq.impl包中删除几个类。类名应该相当简单,以帮助您决定是否需要某些东西。
看看你采取这些措施的程度会很有趣。这对Android用户也很有用。