GWT在编译器的类路径上获取继承的模块

mre*_*404 2 gwt maven

我有一个包含多个gwt模块的项目,其中一个是没有入口点的库模块,其他模块继承该入口点.所有模块都包含在使用maven和gwt-maven-plugin构建的单个项目中.不幸的是,构建项目失败是因为gwt:compile在编译继承它的主要模块时在类路径上寻找继承的模块.如何在类路径上获取库模块以编译主模块?

Jas*_*482 5

你需要做一些创造性的"Mavening",因为我只是用这个术语来描述它.(实际上它可能根本就没有创意,但我自己就是一个Maven新手,所以它也让我感到困惑了一段时间).

你就在一定意义上,GWT comipler 正在寻找继承模块的类路径上的时候,它会编译你的"主"模块.要实现这一点,您需要在库模块的源上(主要针对编译阶段)向主模块的pom添加依赖项.

像这样的东西:

...
<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>
...
Run Code Online (Sandbox Code Playgroud)

现在,你从哪里获得这些来源可能会有所不同.如果您只是尝试从IDE(如Eclipse)执行此操作,这可能就足够了,因为m2eclipse插件非常智能,可以知道从哪里获取这些源(如果库模块也在您的工作区中).如果这是您的实际构建过程,那么您将需要修改库模块的pom以生成-sources工件以及标准的"库工件".所以你最终会得到两个:

library-artifact-0.1-SNAPSHOT.jar
Run Code Online (Sandbox Code Playgroud)

library-artifact-0.1-SNAPSHOT-sources.jar
Run Code Online (Sandbox Code Playgroud)

希望更明确gwt-maven-plugin是如何从这一点开始的.

几乎忘了,我在这里回答的另一个问题也可能有一些用处:GWT项目结构.

  • 啊,我最初错过了"单项目"部分.实际上,我正在描述一个单独的项目/工件.但是,您应该能够像在其他GWT模块之间设置继承一样.GWT模块A的gwt.xml,你有"<inherits name ='some.shared.package.ModuleB'/>",其中模块B是你的共享GWT模块(带有gwt.xml文件,但入口点 - 少,如果你想).现在,GWT编译器很容易找到B的源代码,因为它们都在同一个Eclipse项目中.您是否尝试在(-X)上转换Maven调试堆栈跟踪? (2认同)