2014-02-26 61 views
1

我正在eclipse工作區中設置一個流浪框設置項目。我正在設置一個新的Maven項目,但我遇到了使用Windows路徑而不是流浪路徑的插件的問題。我的Windows工作區是在C:\ Dev中設置的,所以當我'流浪'時,我的整個工作區都可以在我的虛擬機中使用。換句話說,VM中的/ vagrant包含C:\ Dev的內容。Maven碼頭插件使用錯誤的資源文件URL

當我執行mvn jetty:run時,一切都開始良好,所有路徑都使用vagrant版本(/ vagrant/mvn_project/target ...)。然而,一旦插件開始掃描項目的變化,它會引發以下錯誤:

2014-02-26 01:18:53.756:WARN:oejw.WebAppContext:Scanner-0: Failed startup of context [email protected]{/,[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到/遊民/ mvn_project似乎解決這個問題,但顯然這只是一種變通方法,而不是一個解決方案(不會在CI工作爲例)。

更新:事實證明,責任在Eclipse上。 Eclipse偶爾會構建該項目,並且當它這樣做時,$ {project.basedir}引用C:\ Dev \ mvn_project而不是/ vagrant/mvn_project。有沒有辦法可以覆蓋$ {project.basedir}而無需硬編碼?

回答

1

簡單的答案:禁用Eclipse中的構建。取消選中Project - > Build Automatically。始終從vagrant(mvn compile)運行構建。 JSP熱更改仍然自動工作。

相關問題