如何编译没有 EntryPoint 的模块?
Posted
技术标签:
【中文标题】如何编译没有 EntryPoint 的模块?【英文标题】:How do I compile a module without an EntryPoint? 【发布时间】:2010-12-20 23:03:33 【问题描述】:我有一个没有 UI 的 GWT 实用程序模块(因此,没有继承自 com.google.gwt.core.client.EntryPoint
的类。当我尝试使用 GWT 1.7.1 编译此模块时,我收到此错误:
[ERROR] Module has no entry points defined
如何消除此错误?我真的必须定义一个虚拟入口点吗? Google 是如何编译自己的实用程序模块的???
【问题讨论】:
但每个应用程序至少需要一个:这是否涵盖? 是的。我在另一个模块中有一个入口点。我只是很难过如何在没有 EP 的情况下编译模块。 【参考方案1】:如果使用 eclipse GWT 插件,只需从编译前弹出的模块列表中删除没有 EntryPoint 的模块。
【讨论】:
【参考方案2】:我们有一个实用程序模块,它构造和处理一些常见的 UI 元素,以及一堆 javascript/json 常见任务。
看起来我们所做的(也从 totsp 插件迁移到 codehaus 插件的某个地方)是在 util 模块中包含一个入口点;它只是空的。 (它包括评论“故意无操作”)。
然后 pom 只是将事物称为依赖项。
【讨论】:
【参考方案3】:Utility Jars 不需要由 GWT 编译。
如果您只是想在其他 GWT 应用程序中将其作为库重用,那么您只需将 .class 和 .java 文件打包到一个 jar 中,并确保您有一个 .gwt.xml 说明客户端来源是。如果您遵循约定(客户端中的客户端类),那么您可以侥幸逃脱,否则您需要为客户端包指定一个标签
然后确保在要编译入口点的项目中继承此 .gwt.xml。
【讨论】:
令人讨厌的是,如果你不小心使用了 GWT 客户端中不可用的代码,那么在你尝试将其编译成完整的应用程序之前,它不会导致错误。因此,您可以生成实用程序 jar,正如您所称的那样,它们实际上对 GWT 使用无效。有什么办法吗?【参考方案4】:我正在使用gwt-maven-plugin
Maven2 插件来编译我的代码。我从旧版本的 maven-googlewebtoolkit2-plugin
插件迁移代码。对于旧插件,我必须指定哪些模块是入口点,如下所示:
<compileTargets>
<param>com.project.module.Module</param>
</compileTargets>
对于新插件,它是
<module>com.project.module.Module</module>
由于插件找不到要编译的模块,它搜索“*.gwt.xml”并将它们全部编译成“UI模块”(必须有一个入口点)。
【讨论】:
【参考方案5】:不,您不需要入口点。以下是我的一个没有模块的示例:
<?xml version="1.0" encoding="UTF-8"?>
<module>
<source path="grid" />
<inherits name="com.google.gwt.user.User"/>
</module>
简短的回答是您不会在模块中编译代码。 GWT 只需要它们作为源代码。当您编译主模块(带有入口点的模块)时,它会使用您在 .gwt.xml 文件中继承的任何其他模块的源代码来编译整个项目。
【讨论】:
+1 这并没有解决我的问题,但为我指明了正确的方向。以上是关于如何编译没有 EntryPoint 的模块?的主要内容,如果未能解决你的问题,请参考以下文章