我有一个包含多个 GWT 模块的项目,其中之一是一个库模块,它没有入口点,其他模块从中继承。所有模块都包含在一个使用 Maven 和 gwt-maven-plugin 构建的项目中。不幸的是,构建项目失败,因为 gwt:compile 在编译继承它的主模块时,在类路径上寻找继承的模块。如何将库模块添加到主模块的编译类路径中?
...
<artifactId>main-module</artifactId>
...
<dependency>
<groupId>library-group</groupId>
<artifactId>library-artifact</artifactId>
<type>jar</type>
<version>0.1-SNAPSHOT</version>
<classifier>sources</classifier>
<scope>compile</scope>
</dependency>
...
现在,你可以从不同的渠道获取这些源代码。如果你只是想在IDE(如Eclipse)中完成此操作,那么这可能已经足够了,因为m2eclipse插件足够智能,知道从哪里获取这些源代码(如果库模块也在你的工作区中)。如果这是你实际的构建过程,那么你需要修改库模块的pom文件,以生成-sources构件和标准的“library-artifact”一起使用。所以你最终会得到这两个东西:
library-artifact-0.1-SNAPSHOT.jar
并且
library-artifact-0.1-SNAPSHOT-sources.jar
好的,我能够通过在项目的pom文件的gwt-maven-plugin配置中显示列出我的GWT模块来解决这个问题。 这样做,我能够强制执行GWT编译的顺序,确保共享模块首先编译并在其编译期间对继承它的其他模块可用。
以下是配置示例:
<configuration>
<modules>
<module>com.foo.gwt.shared.Shared</module>
<module>com.foo.feature.one.gwt.One</module>
<module>com.foo.feature.two.gwt.Two</module>
</modules>
</configuration>
感谢Jason482提供的所有帮助。
我本来想评论上面的答案,但是我的声望还不够,所以我在这里发表我的发现。
Jason482的答案对我有用。添加以下内容:
<classifier>sources</classifier>
<scope>compile</scope>
到我每个子模块的依赖中,在反应堆pom文件内部解决了我的问题。
mreynolds采用的解决方法是将GWT模块引用添加到主pom文件的gwt-maven-plugin配置中,似乎只有在GWT子模块中有其他入口点时才必要。对于我来说,这一步是不必要的,因为我没有其他入口点。