use*_*128 8 google-app-engine maven
我们最近根据以下结构将我们的app引擎项目转换为模块.这个新的开发工作流程的问题是我们必须在每次更改时重建EAR并重新启动应用程序引擎本地开发服务器.每次我们对代码进行更改并想要测试时,这会使我们松散30分钟到一分钟.
/commons
 -pom.xml
/model
 -pom.xml
/webapp //app engine module
 -pom.xml
/apis //app engine module
 -pom.xml
/ear
 -pom.xml
pom.xml //main (parent) project pom
在我们之前的工作流程中,使用单片应用程序,我们可以使用app引擎的热重新加载功能,其中自动拾取修改IDE中的代码(例如eclipse).
在这种情况下,你们推荐什么作为最好的maven配置和/或dev工作流程?理想情况下,任何模块的更改都不需要完全重建项目.
我使用的是类似的结构,但差别很小.顶级目录有war和ear,然后它们包含特定的pom.xml.我使用Eclipse进行调试,我能够"大部分时间"进行热部署,而且我没有使用Eclipse插件,我知道这是你想要的.
.
|-- pom.xml
|-- README.md
|-- my-ear
|   |-- devpid
|   |-- pom.xml
|   `-- src
|       `-- main
|           `-- application
|               `-- META-INF
`-- my-war
    |-- build
    |   `-- classes
    |       |-- main
    |       |   |-- java
    |       |   `-- webapp
    |       `-- test
    |           `-- java
    |-- pom.xml
    `-- src
        |-- main
        |   |-- java
        |   |   `-- com
        |   `-- webapp
        |       |-- css
        |       |-- favicon.ico
        |       |-- index.html
        |       |-- js
        |       |-- test.html
        |       `-- WEB-INF
        `-- test
            `-- java
在maven ear/pom.xml中,将xArgs添加到appengine插件以便在调试模式下运行.
<plugin>
    <groupId>com.google.appengine</groupId>
    <artifactId>appengine-maven-plugin</artifactId>
    <version>${appengine.target.version}</version>
    <configuration>
        <jvmFlags>
        <jvmFlag>-Xdebug</jvmFlag>
            <jvmFlag>-Xrunjdwp:transport=dt_socket,address=1044,server=y,suspend=n</jvmFlag>
        </jvmFlags>
        <disableUpdateCheck>true</disableUpdateCheck>
    </configuration>
</plugin>
注意suspend = n.
mvn appengine:devserver > ~/.logs/.appengine.devserver.logs & echo $! > devpid
让我们称这个终端1.tail -f ~/.logs/.appengine.devserver.logs | sed 's/INFO/^[[0;34m&^[[0m/g;s/ERROR/^[[0;31m&^[[0m/g;s/WARN\|WARNING/^[[0;35m&^[[0m/g;s/SEVERE\|FATAL/^[[0;31;47m&^[[0m/g'
上面是一个难以输入的命令.^ [的每个实例实际上是Ctrl + V Esc  - 值得输入一次的努力.但这当然是主观的,取决于你.在Eclipse中,在Remote Java Application下为项目创建调试配置文件 - 选择war项目和套接字附加选项.这个步骤可以在互联网上的很多地方找到,但这里仍然是一个图像 

打开另一个终端,war目录中的Terminal 2并保持打开状态,以便mvn compile install在需要时运行.
mvn compile install从终端2 运行.Devserver将自动检测.mvn compile install从外部运行.给出Windows列表(Eclipse,终端1和终端2)的原因只是为了表明Alt + Tab实际上比eclipse中的Shift + F7更快.这是主观的,当然由你决定.