【问题标题】:How to share code between multiple GWT eclipse projects?如何在多个 GWT eclipse 项目之间共享代码?
【发布时间】:2011-04-08 06:04:33
【问题描述】:

我希望有多个共享公共代码的 GWT 项目。这可能吗? AFAICT 我的 GWT 项目需要每个都有自己的目录,源代码直接位于下面,这似乎排除了代码共享。我尝试使用链接文件夹,但 GWT 似乎不喜欢那样(描述为 here)。

如果我想这样做,我唯一的选择是将要共享的代码转换为 .jar 文件,然后在我的每个项目的 XML 文件中继承它吗?有没有办法让 eclipse 自动进行这种打包,或者我需要某种“change-shared-code/compile-jar/use-in-other-project”循环?

还有其他解决方案吗?

【问题讨论】:

    标签: java eclipse gwt module organization


    【解决方案1】:

    我在 maven 的帮助下解决了这个问题。通用代码打包为单独的 maven 项目,然后用作库。以下是 pom.xml 文件中的 sn-ps:

    <dependency>
      <groupId>com.google.gwt</groupId>
      <artifactId>gwt-user</artifactId>
      <version>2.0.4</version>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>com.google.gwt</groupId>
      <artifactId>gwt-dev</artifactId>
      <version>2.0.4</version>
      <scope>provided</scope>
    </dependency>
    
    <build>
      <resources>
        <resource>
          <directory>src/main/java</directory>
          <includes>
            <include>**/client/**/*.java</include>
            <include>**/client/**/*.properties</include>
            <include>**/shared/**/*.java</include>
            <include>**/shared/**/*.properties</include>
            <include>**/*.gwt.xml</include>
          </includes>
        </resource>
      </resource>
    </build>
    

    上述构建配置将 GWT 编译器所需的其他源文件复制到最终 jar 中。

    如果使用 Eclipse 作为 IDE,m2eclipse 插件可用于自动处理所有依赖项。可以在单个工作区中打开所有项目,并且共享公共项目的类路径。唯一的缺点是需要不时调用project &gt; clean(将强制嵌入的maven复制上面sn-p中指定的所有资源)。

    【讨论】:

    • 我在 Maven 上工作不多,但目前看来这是不可避免的,所以我会在有机会时尝试一下。谢谢。
    • 它在这里工作,应该被接受吗?我什至不必运行 Maven 构建,因为 Eclipse Maven 集成(至少在 Kepler 中)会在我保存它们时自动更新输出目录中的 .java 文件。
    【解决方案2】:

    我认为您需要做的就是创建两个单独的 GWT 项目,例如项目 A 用于共享代码,项目 B 使用项目 A 中的代码。

    拥有这两个项目后,需要两个步骤:

    1. 在 Eclipse 中将项目 A 添加到项目 B 的构建路径中。
    2. 在项目 B 中继承项目 A 的 gwt.xml。

    您现在应该能够在 Eclipse 中使用托管模式/编译。

    【讨论】:

    • 我期待尽快尝试这个。谢谢。
    • 这只是解决方案的一半,因为将项目A添加到项目B的构建路径时,项目B将只能看到A的编译类,而不是.java文件和GWT编译器也需要.java 文件。因此,您必须将 java 文件作为“资源”添加到 A 的输出中。如果 A 是 Maven 项目,您可以这样做,如 morisil 上面所示。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-11-11
    • 1970-01-01
    • 2014-07-05
    • 1970-01-01
    • 2015-05-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多