如何获得GWT,以提供与 mvn依赖关系相同的依赖关系见解:分析?
maven可以报告依赖关系(使用的未确定依赖关系和未使用的声明依赖关系)。我想让gwt做同样的事情,因为在我的gwt.xml中确定缺失 sharthits 证明很难。
系统可以分析依赖性状态吗?
谢谢
彼得
我不知道任何这样的工具,虽然我认为分析和报告GWT依赖关系的实用程序可能很有趣,但我也认为很难定义很好。<<<<<<<<<<<<<<<<
使用的,未宣布的依赖项
在尝试解决这个问题之前,有什么问题?在Maven中,此类别意味着一个类是从不直接依赖但要透支加载的依赖项中加载的。这开始涉及整个依赖性(GWT中存在)和示波器(不存在)的整个问题。如果A在C中使用类,但仅取决于B(取决于C),则将在"使用过的未申请依赖关系"列表中列出。
在GWT中,我们很少列出直接使用的每个依赖关系。相反,我们假设传递依赖性将保持传递性 - 只要我们已经列出了com.google.gwt.user.User
,我们就不会为RPC继承com.google.gwt.user.RemoteService
。
那么,我们怎么能判断我们是否正在使用未确定的依赖性,那是我们执行gwt:compile
时警告的?也许这样的工具可以在类Path上找到每个.gwt.xml
文件,并仔细阅读其<source>
和<super-source>
规则以查找我们正在使用的类的地方?或者,如果在某些东西上调用GWT.create
并恢复非凝结类型,则可以查找<replace-with>
和<generate-with>
规则。只要您的代码已经在Java中编译了,这些类都在类路径上,但是您仍然承担着类别在那里时的风险,.java
或.gwt.xml
文件可能不会。
未使用,声明为依赖项
这似乎是一个更容易的问题 - 分析我们正在继承的模块,并查看它们是否可以修剪的任何模块。不幸的是,正如上面的讨论所指出的那样,我们不能仅仅寻找类别以及它们所在的包,<source>
和<super-source>
元素未使用 - 我们还需要查找<replace-with>
和<generate-with>
规则,请考虑使用com.google.gwt.user.RemoteService
的内容,仅添加规则和一些配置详细信息,甚至com.google.gwt.user.RemoteServiceObfuscateTypeNames
,它仅修改远程服务模块的单个设置。如果删除了远程服务器fuscateTypenames,那么一切仍将编译,但是现在可能有有关您的RPC类的信息,您不希望在您的应用中汇编。
考虑到这些,也许这样的工具可以观察当前构建中的所有可能的重新启用规则,以及所有配置设置,属性等,并查看在gwt:compile
过程中是否没有使用这些规则。然后,指示哪些模块有未使用的零件,如果任何模块(及其所有继承的模块)未使用,则可以向用户显示为可以删除的用户。
更重要的一件:定义<inherits>
语句时,订单很重要。如果我添加了com.google.gwt.logging.Logging
的继承,然后使用com.google.gwt.logging.LoggingDisabled
遵循它,则记录类将在源路径上,并且会编译,但不会产生效果。但是,如果将它们相反,那么它们不仅会在源路径上,而且都将是功能正常的。因此,对所使用和未使用的模块的任何分析都需要包括及时的继承语句及其订单。