Windows上Maven jetty插件的热部署失败

ejk8hzay  于 2023-02-11  发布在  Maven
关注(0)|答案(1)|浏览(240)

我已经配置了Jetty Maven插件来运行我编译的war。
下面是我的 pom.xml 的相关部分。

<plugin>
    <groupId>org.eclipse.jetty</groupId>
    <artifactId>jetty-maven-plugin</artifactId>
    <version>9.4.50.v20221201</version>
    <configuration>
      <war>${jway.webapps.dir}/myapp.war</war>
      <scanIntervalSeconds>2</scanIntervalSeconds>
    </configuration>
</plugin>

如果我执行mvn jetty:run-war,我的war是build,Jetty按预期提供应用程序。
我已将 scanIntervalSeconds 配置为允许热重新部署。但是,如果使用mvn install重建,则在重新部署期间出现以下错误:

java.lang.IllegalStateException: Failed to delete temp dir F:\...\myproject\target\tmp
    at org.eclipse.jetty.webapp.WebInfConfiguration.configureTempDirectory (WebInfConfiguration.java:532)
    at org.eclipse.jetty.webapp.WebInfConfiguration.resolveTempDirectory (WebInfConfiguration.java:424)
    at org.eclipse.jetty.webapp.WebInfConfiguration.preConfigure (WebInfConfiguration.java:140)
    at org.eclipse.jetty.webapp.WebAppContext.preConfigure (WebAppContext.java:488)
    at org.eclipse.jetty.webapp.WebAppContext.doStart (WebAppContext.java:523)
    at org.eclipse.jetty.maven.plugin.JettyWebAppContext.doStart (JettyWebAppContext.java:397)
    at org.eclipse.jetty.util.component.AbstractLifeCycle.start (AbstractLifeCycle.java:73)
    at org.eclipse.jetty.maven.plugin.JettyRunWarMojo.restartWebApp (JettyRunWarMojo.java:113)
    at org.eclipse.jetty.maven.plugin.AbstractJettyMojo$1.filesChanged (AbstractJettyMojo.java:472)
    at org.eclipse.jetty.util.Scanner.reportBulkChanges (Scanner.java:848)
    at org.eclipse.jetty.util.Scanner.reportDifferences (Scanner.java:765)
    at org.eclipse.jetty.util.Scanner.scan (Scanner.java:641)
    at org.eclipse.jetty.util.Scanner$1.run (Scanner.java:558)
    at java.util.TimerThread.mainLoop (Timer.java:555)
    at java.util.TimerThread.run (Timer.java:505)

Jetty好像想删除这个文件,但是Windows把这个文件锁了,在插件的文档里面,我没有找到任何有用的配置,而且我在Google上也没有找到,有没有办法解决这个问题?
我不知道这是否相关,但我没有使用 jetty:run 目标,因为我的war是使用第三方工具构建的,而且我没有标准的目录结构。

6kkfgxo0

6kkfgxo01#

Jetty文档包含有关Windows上锁定文件故障排除的部分。
所以我根据文档更新了我的插件配置:

<plugin>
  <groupId>org.eclipse.jetty</groupId>
  <artifactId>jetty-maven-plugin</artifactId>
  <version>9.4.50.v20221201</version>
  <configuration>
    <war>${jway.webapps.dir}/myapp.war</war>
    <scanIntervalSeconds>2</scanIntervalSeconds>
    <webApp>
    <_initParams>
        <org.eclipse.jetty.servlet.Default.useFileMappedBuffer>false</org.eclipse.jetty.servlet.Default.useFileMappedBuffer>
    </_initParams>
    </webApp>
  </configuration>
</plugin>

相关问题