【问题标题】:Hook into GWT before compilation to add more sources在编译之前挂钩 GWT 以添加更多源
【发布时间】:2016-04-22 13:46:57
【问题描述】:

我已经使用<super-source> 功能(GWT 2.7)成功模拟了一些源文件。

但我在 Eclipse 中遇到“错误的包名称”错误。

GWT 编译器需要 Java 文件具有原始包名称,但 Eclipse 需要它们具有与其在源文件夹中的位置相对应的包名称。

有没有一种方法可以在 GWT 编译器编译和添加模拟源文件之前以编程方式连接到它?我想这样我可以在 GWT 编译器查看它们之前使用 replaceAll() 调整包声明。

作为一个临时解决方法,我在编译之前运行了一个单独的步骤来完成这个技巧。它可以工作,但最好将其作为实际编译过程的一部分,以便在超级开发模式下刷新页面会自动执行此过程。

我查看了生成器,但我看不出有任何方法可以使用它们。

我考虑过的另一个想法是让复制成为 Eclipse 编译的一部分。每次我保存一个模拟类时,它都可以复制源代码并重新打包它。但是我在 Windows 上进行设置有点麻烦,而且它不是正常编译的一部分,所以我必须在我的构建脚本中复制这些操作。

【问题讨论】:

    标签: java gwt


    【解决方案1】:

    Eclipse 抱怨是因为它想编译它们,但它不应该这样做。 您应该从 Eclipse 中排除超级源,因此它只将它们视为资源/文本文件。 如果您在编辑这些文件时确实需要 Eclipse 的功能,那么您可以添加您的 super(或者无论如何它被称为)“包”作为源文件夹,Eclipse 将不再抱怨包名称不匹配(但可能会出现重复的问题原始和超级源之间的类;此外,Eclipse 将编译它们,如果它们在运行时/DevMode 时出现在您的类路径中,它可能会失败;您的应用程序使用超级源而不是原始类JVM)

    TL;DR:问题出在 Eclipse,而不是 GWT。

    【讨论】:

    • 谢谢托马斯。我想在同一个项目中拥有两个版本,并在两者上都使用 Eclipse Java 编辑器。不幸的是,这些建议都不允许。如果 GWT 不关心包声明是否完全匹配,那就太好了——如果它可以将超前缀包翻译成真正的包名。我的方法做到了这一点,它有效,但有点笨拙。我假设没有办法连接到你知道的编译器?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多