我正在尝试在另一场战争中重用已组装的gwt编译。为此,我尝试将当前maven模块的包装从war
更改为pom
。然后我计划使用maven-assembly-plugin来压缩gwt的模块js输出,并在以后的另一个war模块中使用它。
我尝试将来自Validation sample的pom.xml中的打包标记从<packaging>war</packaging>
更改为<packaging>pom</packaging>
。 gwt-maven-plugin永远不会进入编译阶段。相反,它会跳过编译!!!!!
What is happening?
Is this expected?
Is there any workaround?
答案 0 :(得分:3)
要将多个gwt编译的模块合并到一个.war
文件中,使用maven-dependency-plugin
mvn install
或mvn deploy
。war
类型的空maven模块,没有代码但是使用maven文件夹结构,您可以在此处添加所需的任何其他内容,如全局src/main/webapp/index.html
。将新模块配置为使用如下所示的maven-dependency-plugin
,然后运行mvn package
:
<dependency>
<groupId>my.group</groupId>
<artifactId>example1</artifactId>
<version>...</version>
<type>war</type>
</dependency>
...
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<id>unpack-gwt-examples</id>
<phase>prepare-package</phase>
<goals>
<goal>unpack-dependencies</goal>
</goals>
<configuration>
<includeGroupIds>my.group</includeGroupIds>
<includes>**/example1/**</includes>
<outputDirectory>${project.build.directory}/${project.artifactId}-${project.version}</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
最后与gwt-maven-plugin相关,就像任何其他maven插件一样,只需选择pom-packaging生命周期的适当阶段(打包,安装或部署):
...
<packaging>pom</packaging>
...
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>gwt-maven-plugin</artifactId>
...
<configuration>
...
</configuration>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>compile</goal>
</goals>
</execution>
</executions>
</plugin>
不幸的是,当包装是pom时,gwt-maven-plugin特别禁止编译,请查看line #269 of CompileMojo.java
答案 1 :(得分:1)
您可以将可重用模块(在评论中提及为 samples )创建为没有EntryPoint的单独GWT项目。将它们打包为jar
,并将以下内容添加为resources:
这样的事情:
<build>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
...
</plugin>
</plugins>
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/services/**</include>
<include>**/client/**</include>
<include>**/public/**</include>
<include>**/*.gwt.xml</include>
</includes>
</resource>
</resources>
</build>
就是这样,您可以在任何其他GWT项目中重复使用它。当您这样做时,您只需要在pom.xml
中的import
和*.gwt.xml
添加依赖项(到可重用模块)。
至于Maven的行为,似乎是正确的。 pom
packaging正在进行package
,install
和deploy
阶段和
默认情况下,编译目标配置为在“准备包”阶段执行,以便尽可能晚地运行。
您可以更改插件执行中的阶段,但我认为这样做有风险,因为您无法知道在package
阶段到期时代码是否会被编译。