【问题标题】:How to make Maven automatically recompile if Changes are detected?如果检测到更改,如何使 Maven 自动重新编译?
【发布时间】:2014-12-30 07:10:55
【问题描述】:

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

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

编辑:我在 Eclipse 中使用 mvn jetty:run,不使用外部终端

【问题讨论】:

  • 你可以使用jrebel,它有maven插件。

标签: java eclipse spring maven jetty


【解决方案1】:

你只需要在插件中设置scanIntervalSeconds属性

scanIntervalSeconds

  • 扫描 web 应用程序以检查更改并自动热重新部署(如果检测到任何更改)之间的暂停(以秒为单位)。 默认为 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 文件应该被拾取,我只是在谈论其他文件)。如果是这种情况,您可以明确指定&lt;scanTargets&gt;

扫描目标

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

【讨论】:

    【解决方案2】:

    也许你可以使用 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

    【讨论】:

      猜你喜欢
      • 2011-07-18
      • 2012-07-05
      • 1970-01-01
      • 2021-05-28
      • 2018-11-26
      • 1970-01-01
      • 1970-01-01
      • 2015-03-30
      • 1970-01-01
      相关资源
      最近更新 更多