注意:以下说明仅适用于旧版本的gwt-maven-plugin
在过去的某个时候,IntelliJ发布了一个更新,该更新使使用GWT插件无法运行Workbench。 与团队中的成员交流想法并总结解决方案后,出现了一些解决方法。 本指南提供了有关在IntelliJ最新版本中运行任何基于Errai的应用程序以及其他模块的信息,以利用IntelliJ(不幸的是有限的)实时重载功能来加快开发工作流程。
目录
1.在最新的IntelliJ中运行基于Errai的应用程序
2.导入其他模块并将实时重载用于客户端代码
3.高级配置
3.1。 配置项目的pom.xml
为您下载和解压缩Wildfly 3.2。 未修补的Wildfly发行版的替代解决方法
1.在最新的IntelliJ中运行基于Errai的应用程序
正如Max Barkley早在#logicabyss上所述,IntelliJ已决定在GWT插件中启动Super Dev Mode时将gwt-dev
类硬编码到类路径中。 由于我们使用EmbeddedWildflyLauncher
部署Workbench应用程序,因此这些依赖项现在已部署在Wilfdfly实例中。 除了gwt-dev
jar依赖于apache-jsp
,这没有什么错,该文件具有ServletContainerInitializer
标记文件,该文件会导致部署失败。
为了解决该问题,在Maven Central的org.jboss.errai
组ID下提供的自定义修补版本的Wildfly中删除了查找ServletContainerIntitilizer
文件并导致部署失败的代码。
以下步骤提供了在最新版本的IntelliJ上运行任何基于Errai的应用程序的快速指南。
1.下载打补丁的Wildfly版本并将其解压缩到您喜欢的任何目录中
–对于Wildfly 11.0.0.Final,请转到此处
2.导入要使用的模块(我使用drools-wb
进行了测试)
–打开IntelliJ,转到File -> Open
..并选择pom.xml
文件,单击Open,然后选择Open as Project
3.像以前在IntelliJ上一样配置GWT插件执行
– VM选项:
-Xmx6144m
-Xms2048m
-Dorg.uberfire.nio.git.dir=/tmp/drools-wb
-Derrai.jboss.home=/Users/tiagobento/drools-wb/drools-wb-webapp/target/wildfly-11.0.0.Final
–开发模式参数:
-server org.jboss.errai.cdi.server.gwt.EmbeddedWildFlyLauncher
4.点击播放按钮,等待应用程序被部署
2.导入其他模块并将实时重新加载用于客户端代码
能够在最新版本的IntelliJ中运行单个webapp之后,也可以导入其某些依赖项,这很有用,因此,在对该依赖项更改客户端代码后,您不必等待(方式)对于GWT来说太长了,无法再次编译并捆绑您应用程序JavaScript代码。
只需File > New > Module from existing sources
进入File > New > Module from existing sources
然后选择要导入的模块的pom.xml
。
如果您将kie-wb-common
或appformer与另一个项目一起导入,则肯定会在Webapp的beans.xml
文件中应用补丁。
对于drools-wb
您可以在此处下载补丁。 对于其他项目,例如jbpm-wb
,optaplanner-wb或kie-wb-distributions
,您基本上必须做同样的事情,但是要更改.diff文件中的目录。
如果您的Web应用程序已启动,请单击“停止”按钮,然后再次单击“播放”。 现在,您应该能够更快地重新编译IntelliJ中更改的所有代码。
配置项目的pom.xml为您下载和解压缩Wildfly
如果您习惯于较少的手动工作流程,则可以使用maven-dependency-plugin
将所选的Wildfly实例下载并解压缩到所需的任何目录中。
在将以下片段添加到pom.xml
文件之后,请记住在GWT Configuration
的“启动之前”部分中,在Build
应用程序之前添加“运行Maven目标”。 在这里,我正在使用process-resources
阶段,但其他阶段也可以。
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<id>unpack</id>
<phase>process-resources</phase>
<goals>
<goal>unpack</goal>
</goals>
<configuration>
<artifactItems>
<artifactItem>
<!-- Using a patched version of Wildfly -->
<groupId>org.jboss.errai</groupId>
<artifactId>wildfly-dist</artifactId>
<version>11.0.0.Final</version>
<type>zip</type>
<overWrite>false</overWrite>
<!-- Unpacking it into /target/wildfly-11.0.0.Final -->
<outputDirectory>${project.build.directory}</outputDirectory>
</artifactItem>
</artifactItems>
<skip>${gwt.compiler.skip}</skip>
</configuration>
</execution>
</executions>
</plugin>
未修补的Wildfly发行版的替代解决方法
如果您想尝试其他版本的Widlfly,或者只是不想依赖任何修补的版本,仍然可以使用官方发行版,并排除
ServletContainerInitializer
从文件apache-jsp
您M2_REPO文件夹罐子。
如果您在Unix系统上工作,则应使用以下命令。
1。 cd〜/ .m2 /存储库/
2。 zip -d org / eclipse / jetty / apache-jsp / {version} / apache-jsp- {version} .jar META-INF / services / javax.servlet.ServletContainerInitializer
通过从apache-jsp
jar中手动排除它,Maven在删除文件后不会尝试再次下载它。 只要您不删除~/.m2/
文件夹,该解决方案便会永久存在。 请记住,如果您需要apache-jsp
jar来恢复该文件,最好的选择是删除apache-jsp
依赖项目录,然后让Maven重新下载它。
新版本的gwt-maven-plugin
新说明即将发布,敬请期待!