如何在多个GWT Eclipse项目之间共享代码?

4
我想要有多个共享公共代码的GWT项目。这是否可能?据我所知,我的GWT项目需要各自拥有自己的目录,并直接位于源代码下面,这似乎排除了代码共享。我尝试使用链接文件夹,但GWT似乎不喜欢那样做(在这里有描述)。
如果我想要这样做,我的唯一选择是将我想要共享的代码转换为.jar文件,然后在每个项目的XML文件中继承它吗?是否有一种方法可以使Eclipse自动执行此打包操作,或者我需要某种“更改共享代码 / 编译jar / 在其他项目中使用”循环?
还有其他解决方案吗?
2个回答

4

我用maven解决了这个问题。通用代码打包成一个单独的maven项目,然后作为库来使用。以下是pom.xml文件的一些片段:

<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 > clean命令(这将强制嵌入式Maven复制上面代码片段中指定的所有资源)。


我并没有太多使用Maven的经验,但是看起来在这个阶段它是不可避免的,所以我会在有机会的时候尝试一下。谢谢。 - Mark Schmit
这里能正常工作,应该可以被接受吧?我甚至不需要运行Maven构建,在Eclipse Maven集成(至少在Kepler中)中,只要我保存文件,.java文件就会自动更新到输出目录中。 - ddekany

1

我认为你所需要做的就是创建两个独立的GWT项目,例如项目A用于共享代码,项目B使用来自项目A的代码。

一旦你有了这两个项目,需要执行两个步骤:

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

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


我期待着尽快尝试这个。谢谢。 - Mark Schmit
这只是解决方案的一半,因为当将项目A添加到项目B的构建路径中时,项目B只会看到A的已编译类,而不是.java文件,而GWT编译器也需要.java文件。因此,您必须将Java文件作为A的“资源”添加到输出中。如果A是Maven项目,则可以执行此操作,如morisil所示。 - ddekany

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接