2014-02-26 2 views
1

내 eclipse 작업 영역에서의 방해 물 상자 설정 내에서 프로젝트를 실행 중입니다. 새로운 Maven 프로젝트를 설정하고 있지만, 이진진 경로 대신 Windows 경로를 사용하는 플러그인에 문제가 있습니다. 내 Windows 작업 공간은 C : \ Dev에 설치되므로, '위로 향하다'때 내 전체 작업 공간을 내 VM에서 사용할 수 있습니다. 즉, VM의/vagrant는 C : \ Dev의 내용을 포함합니다.잘못된 리소스 파일 URL을 사용하는 Maven 부두 플러그인

mvn jetty : run을 실행하면 모든 것이 잘 시작되고 모든 경로는 방랑자 버전 (/ 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) 

이 플러그인에 버그가 아니면이 값을 설정하는 데 사용할 수있는 구성 설정이 있습니다 : 플러그인이 변경 프로젝트를 스캔하기 시작하면 그러나, 다음과 같은 오류가 발생합니다?

편집 : 조금 더 많은 컨텍스트 ... 문제는 필터링 된 리소스와 관련이있는 것으로 보입니다.

 <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에서 발생합니다. 이클립스는 때때로 프로젝트를 빌드하고 있으며, 그렇게하면 $ {project.basedir}은/vagrant/mvn_project 대신 C : \ Dev \ mvn_project를 참조합니다. 하드 코딩없이 $ {project.basedir}를 재정의 할 수있는 방법이 있습니까?

답변

1

간단한 대답 : 이클립스에서 빌드 사용 안 함. 프로젝트 -> 자동으로 빌드를 선택 취소하십시오. 항상 vagrant 내에서 빌드를 실행합니다 (mvn 컴파일). JSP 핫 변경 사항은 여전히 ​​자동으로 작동합니다.