如果检测到更改,如何使Maven自动重新编译?

时间:2014-12-30 07:10:55

标签: java eclipse spring maven jetty

我在spring mvc中做了一些项目,并使用mvn jetty作为运行时环境,整个工作区也在Eclipse中。我已经在使用tomcat作为运行时的servlet中看到过,如果在Java文件中进行任何更改,那些文件会在eclipse中自动重新编译,这会阻止我们再次重新启动tomcat,从而节省大量时间。

但是在maven中,它将文件编译为目标文件夹,除少数情况外,jsp中的任何更改都会立即反映出来,但在我使用mvn jetty之前,Java文件中的更改不会自动重新编译:再次运行。即使在跳过测试之后,这也会消耗大量时间,是否有任何配置使maven自动重新编译已更改的java文件,或者我应该运行mvn jetty:每次更改时一次又一次地运行..?感谢

编辑:我使用mvn jetty:在eclipse中运行,而不是使用外部终端

2 个答案:

答案 0 :(得分:1)

您只需在插件

中设置scanIntervalSeconds属性即可
  

<强> scanIntervalSeconds

     
      
  • 扫描webapp以检查更改并自动进行热重新部署(如果检测到任何内容)之间的暂停秒数。 默认情况下为0,这会禁用热部署扫描。大于0的数字可以启用它。
  •   

基本上像

<plugin>
    <groupId>org.eclipse.jetty</groupId>
    <artifactId>jetty-maven-plugin</artifactId>
    <version>${jetty.version}</version>
    <configuration>
        <contextPath>/</contextPath>
        <stopKey>foo</stopKey>
        <stopPort>9999</stopPort>
        <scanIntervalSeconds>5</scanIntervalSeconds>
    </configuration>
</plugin>

我一直都在使用它。工作良好。以上将每5秒扫描一次更改。是的,甚至是你的Java文件。

此外,扫描完成后,如果在该时间间隔内接收到更改,您应该会在控制台中看到一些更新。如果您没有看到任何更新,则可能无法获取特定文件(尽管应该选择的Java文件,我只是在谈论关于其他文件一般)。如果是这种情况,您可以明确指定<scanTargets>

  

<强> scanTargets

     
      
  • 可选。除了插件自动扫描的文件和目录之外,还要定期扫描的文件和目录列表。
  •   
<configuration>
    ...
    <scanTargets>
        <scanTarget>path/to/somefile</scanTarget>
    </scanTargets>
</configuration>

答案 1 :(得分:0)

也许你可以使用Run-Jetty-Run eclipse插件。

https://code.google.com/p/run-jetty-run/wiki/UserGuide 部分如何使用Java热部署 http://code.google.com/p/run-jetty-run/wiki/RunMavenWebAPP