我将开发一个生成gwt应用程序的系统。这些应用程序共享了很多小部件,编译时间对我来说非常重要。我想知道我是否可以准备一组小部件,将它们包装在一个没有入口点的模块中,编译它们只是一次,并在其他项目中重用编译过的代码,其中其他模块从它继承。
- ModuleA(仅共享部件)
- Module1 (app1的其余部分继承自ModuleA)。
- Module2 (app2的其余部分继承自ModuleA)。
我可以编译Module2没有重新编译ModuleA每次新应用程序生成?
我还使用了superDevMode和所有编译优化,但这已经成为一个原则性问题了:)
我不关心GWT优化。
谢谢
如果不使用jsni,就不能编译模块并从其他模块调用它们。
即使使用jsni,除了primitive
和Overlay
类型之外,您也不能在模块之间传递对象。
我看到的最好的解决方案是,您可以使用gwt-export从ModuleA导出小部件到javascript,我之前写的这个教程可以帮助您。
但是在将ModuleA导出为javascript API之后,您必须使用GWT中的jsni包装此API以从ModuleB和ModuleC调用它。
恕我直言,当您排除ModuleA时,在编译ModuleB时节省的时间是不值得的。
认为当你导出ModuleA时,你必须编译所有东西,尽管它没有在ModuleB中使用。如果你必须使用原语和覆盖类型与ModuleA交换信息,那么你在ModuleB中的代码将是一团糟。还有很多其他的问题。