我有一个相当大的项目(具有相当大的堆栈,包括Spring和Hibernate),我是使用Maven通过Netbeans构建的。

不幸的是,每次我更改班级时,都需要重新构建。这表示


全部保存并编译
运行所有测试
建立大规模的战争
从Tomcat取消部署
从Tomcat重新部署
启动应用程序(春季= Zzzzzzz /休眠= Zzzzzzz)


这可能需要5分钟的时间才能检查出小的更改是否有所作为。也许我有错误的做法?

请指教...

最佳答案

好吧,我也在进行非常类似的设置,所以这里是我的2美分。

首先,使用Maven-Jetty插件将脚弄湿。使它扫描文件中的更改,以便您不必为每个更改重建/部署整个项目。还要将其配置为存储会话,这样,在进行每次(自动)部署时,您无需重新登录即可进入更改前的状态:

    <plugin>
        <groupId>org.mortbay.jetty</groupId>
        <artifactId>maven-jetty-plugin</artifactId>
        <version>6.1.24</version>
        <configuration>
            <stopPort>9669</stopPort>
            <stopKey>myapp</stopKey>
            <!-- Redeploy every x seconds if changes are detected, 0 for no automatic redeployment -->
            <scanIntervalSeconds>3</scanIntervalSeconds>
            <connectors>
                <connector implementation="org.mortbay.jetty.nio.SelectChannelConnector">
                    <port>8080</port>
                    <maxIdleTime>60000</maxIdleTime>
                </connector>
            </connectors>
            <webAppConfig>
                <contextPath>/myapp</contextPath>
                <sessionHandler implementation="org.mortbay.jetty.servlet.SessionHandler">
                    <sessionManager implementation="org.mortbay.jetty.servlet.HashSessionManager">
                        <storeDirectory>${project.build.directory}/sessions</storeDirectory>
                    </sessionManager>
                </sessionHandler>
            </webAppConfig>
        </configuration>
    </plugin>


现在,转到项目Properties(通过右键单击项目)> Build> Compile> Compile on save并选择For both application and text execution

另外,转到Options> Miscellaneous> Maven>并检查/选择Skip Tests for any build executions not directly related to testing,以便仅在实际运行“测试”时运行测试。

按照这些简单的步骤,我可以实时进行编码和测试更改,而无需重新部署。也就是说,我遇到了一些小问题/烦恼:


在某些不起作用的时间(例如,您删除了某些内容且更改未反映出来)时,您仍然必须清理构建
使其长时间运行会导致PermGen异常(空间不足),这是合理的,并且您始终可以使用jvm opts增加内存
一旦习惯了此设置,您将不愿在jboss / websphere等容器上开发/测试项目

07-26 09:29
查看更多