playframework 的 gwt 插件无法处理模块依赖项

发布于 2024-12-04 13:51:19 字数 493 浏览 0 评论 0原文

我有一个 play-framework 应用程序,它使用我通过 play new-module 创建的一个模块,然后将其添加到我的应用程序的 dependency.yml 中。

我已经使用应用程序文件夹中的 play depsplay mymodule:hello 测试了我的模块 - 一切正常。

[我的应用程序---用途---> mymodule]

但是当我尝试通过 play gwt2:compile 编译该模块时,出现错误,应用程序无法从 mymodule 中找到/解析类。

那么,如果模块已在应用程序中解析,为什么 gwt 无法编译我的应用程序呢?

聚苯乙烯 我使用 gwt2-1.7 插件,如果我不使用任何模块,该应用程序运行良好。

I have play-framework application that uses one module which I've created by play new-module and then added it to the dependencies.yml to my app.

I've tested my module with play deps, play mymodule:hello from the app flolder - everything ok.

[myapplication ---uses---> mymodule]

But when I try to compile that module by play gwt2:compile I have an error that application can not find/resolve classes from mymodule.

So why gwt can not compile my application if module is already resolved in the application?

P.S.
I use gwt2-1.7 plugin and the application works well if I don't use any modules for it.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

因为看清所以看轻 2024-12-11 13:51:19

我通过修复 gwt2-play 插件代码解决了这个问题。因此,在文件 devmode.py 中添加了一行代码:

cp.append(os.path.normpath(os.path.join(application_path, 'lib/gwt-user.jar')))
cp.append(os.path.normpath(os.path.join(gwt2_module_dir, 'app')))
cp.append(os.path.normpath(os.path.join(gwt2_module_dir, 'hack')))
cp.append(os.path.normpath(os.path.join(application_path, 'app')))
#added by me
cp.append(app.readConf('gwt2.additional_classpath_entry'))

这使我们能够在 application.conf 中指定其他类路径条目。像这样:

gwt2.additional_classpath_entry = /home/me/projects/myproject/my_modules/my_module/app

而且,这一点很重要:如果我们想要像这样有依赖关系
[my_application] ---使用--> [my_module]

如果我们想在 my_application 的 gwt-services 中使用 my_moudle 中的类,那么我们应该通过 play gwt2:init、play gwt2:create 使 my_moudle 成为 gwt-module我们应该将这些类添加到 while 列表中,如下所示:

package gwt.myproject.client;

import com.google.gwt.user.client.rpc.IsSerializable;
import gwt.mymodule.shared.MyModuleClass;

public class WhiteList implements IsSerializable {

    public MyModuleClass mymoduleObject;

} 

I have resolved this problem by fixing the gwt2-play plugin code. So added one line of code to the file devmode.py:

cp.append(os.path.normpath(os.path.join(application_path, 'lib/gwt-user.jar')))
cp.append(os.path.normpath(os.path.join(gwt2_module_dir, 'app')))
cp.append(os.path.normpath(os.path.join(gwt2_module_dir, 'hack')))
cp.append(os.path.normpath(os.path.join(application_path, 'app')))
#added by me
cp.append(app.readConf('gwt2.additional_classpath_entry'))

This enables us to specify additional classpath entries in application.conf. Like this:

gwt2.additional_classpath_entry = /home/me/projects/myproject/my_modules/my_module/app

and, this important: if we want to have dependency like this
[my_pplication] ---uses--> [my_module]

and if we want to use classes from my_moudle in our gwt-services in the my_application, then we should make my_moudle to be gwt-module by play gwt2:init, play gwt2:create, and we should add these classes to while list like this:

package gwt.myproject.client;

import com.google.gwt.user.client.rpc.IsSerializable;
import gwt.mymodule.shared.MyModuleClass;

public class WhiteList implements IsSerializable {

    public MyModuleClass mymoduleObject;

} 
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文