Maven jetty插件使用了错误的资源文件URL

Maven jetty插件使用了错误的资源文件URL,maven,maven-plugin,vagrant,maven-jetty-plugin,Maven,Maven Plugin,Vagrant,Maven Jetty Plugin,我正在我的eclipse工作区上的一个vagrant box设置中运行一个项目。我正在建立一个新的maven项目,但是我在使用windows路径而不是vagrant路径时遇到了问题。我的windows工作区是在C:\Dev中设置的,所以当我“漫游”起来时,我的整个工作区都可以在我的VM中使用。换句话说,VM中的/vagrant包含C:\Dev的内容 当我执行mvnjetty:run时,一切正常启动,所有路径都使用vagrant版本(/vagrant/mvn_project/target…)。但是

我正在我的eclipse工作区上的一个vagrant box设置中运行一个项目。我正在建立一个新的maven项目,但是我在使用windows路径而不是vagrant路径时遇到了问题。我的windows工作区是在C:\Dev中设置的,所以当我“漫游”起来时,我的整个工作区都可以在我的VM中使用。换句话说,VM中的/vagrant包含C:\Dev的内容

当我执行mvnjetty:run时,一切正常启动,所有路径都使用vagrant版本(/vagrant/mvn_project/target…)。但是,一旦插件开始扫描项目的更改,就会抛出以下错误:

2014-02-26 01:18:53.756:WARN:oejw.WebAppContext:Scanner-0: Failed startup of context o.e.j.m.p.JettyWebAppContext@591f46d8{/,[file:/vagrant/mvn_project/web, file:/vagrant/mvn_project/target/webapps/ROOT/],STARTING}{/ROOT/]}
javax.servlet.UnavailableException: Malformed URL 'file://C:\\Dev\\mvn_project/target/webapps/ROOT/WEB-INF/dtd/web-app_2_3.dtd' : For input string: "\\Dev\\mvn_project"
    at org.apache.struts.action.ActionServlet.init(ActionServlet.java:402)
    at javax.servlet.GenericServlet.init(GenericServlet.java:244)
    at org.eclipse.jetty.servlet.ServletHolder.initServlet(ServletHolder.java:561)
    at org.eclipse.jetty.servlet.ServletHolder.initialize(ServletHolder.java:351)
    at org.eclipse.jetty.servlet.ServletHandler.initialize(ServletHandler.java:840)
    at org.eclipse.jetty.servlet.ServletContextHandler.startContext(ServletContextHandler.java:300)
    at org.eclipse.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1347)
    at org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:745)
    at org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:492)
    at org.eclipse.jetty.maven.plugin.JettyWebAppContext.doStart(JettyWebAppContext.java:282)
    at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:69)
    at org.eclipse.jetty.maven.plugin.JettyRunMojo.restartWebApp(JettyRunMojo.java:532)
    at org.eclipse.jetty.maven.plugin.JettyRunMojo$1.filesChanged(JettyRunMojo.java:485)
    at org.eclipse.jetty.util.Scanner.reportBulkChanges(Scanner.java:681)
    at org.eclipse.jetty.util.Scanner.reportDifferences(Scanner.java:539)
    at org.eclipse.jetty.util.Scanner.scan(Scanner.java:391)
    at org.eclipse.jetty.util.Scanner$1.run(Scanner.java:329)
    at java.util.TimerThread.mainLoop(Timer.java:555)
    at java.util.TimerThread.run(Timer.java:505)
这是插件的一个bug,还是我可以使用配置设置来设置这个值

编辑:多一点上下文。。。问题似乎与过滤的资源有关

     <resources>
        <resource>
            <directory>${project.basedir}/src/main/filtered-resources</directory>
            <filtering>true</filtering>
            <targetPath>${project.basedir}/target/webapps/ROOT</targetPath>
        </resource>
    </resources>

${project.basedir}/src/main/filtered资源
真的
${project.basedir}/target/webapps/ROOT
将${project.basedir}更改为/vagrant/mvn_项目似乎可以解决问题,但显然这只是一种解决方法,而不是解决方案(例如,在CI中不起作用)


更新:事实证明,责任在于Eclipse。Eclipse偶尔会构建项目,在构建项目时,${project.basedir}引用C:\Dev\mvn_项目,而不是/vagrant/mvn_项目。有没有一种不用硬编码就能覆盖${project.basedir}的方法?

简单的答案:在eclipse中禁用构建。取消选中项目->自动生成。始终从vagrant(mvn编译)中运行构建。JSP热更改仍然自动工作