如何编译没有 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 的模块?的主要内容,如果未能解决你的问题,请参考以下文章

最小化docker镜像

如何在没有主机编译器的情况下创建 Cuda 模块

docker容器中的EntryPoint和CMD命令区别

如何发布自己模块到NPM

如何在没有模块加载系统的情况下将我的 Typescript 编译成单个 JS 文件?

dockerfile:如何使用基础镜像中的 CMD 或 ENTRYPOINT