속성 자리 표시자를 확인해야하는 XML 파일 (urlrewrite.xml)이 있습니다. 이를 달성하기 위해 Maven 필터링을 활성화합니다. 이것은 조립 된 WAR 파일에서 잘 작동합니다. 실행 : 받는다는 부두로 받는다는 - 부두 - 플러그인 (메이븐 부두 플러그인)를 사용하여 개발 모드에서 응용 프로그램을 실행하려고 할 때Maven Jetty Plugin을 사용할 때 리소스를 필터링하는 방법은 무엇입니까?
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
문제입니다.
해당 파일 urlrewrite.xml은 src/main/resources 디렉토리에 있으므로/WEB-INF/classes (또는 maven jetty : run의 대상/클래스)에서 끝나야합니다.). 다음과 같이
URLRewriteFilter의 설정은 설정 파일의 위치를 지정 :이 배치시 작동
<filter>
<filter-name>UrlRewriteFilter</filter-name>
<filter-class>org.tuckey.web.filters.urlrewrite.UrlRewriteFilter</filter-class>
<init-param>
<param-name>confPath</param-name>
<param-value>/WEB-INF/classes/urlrewrite.xml</param-value>
</init-param>
</filter>
. 그러나 Jetty Maven 플러그인을 사용하면 config.loadResourceAsString ("/ WEB-INF/classes/urlrewrite.xml")을 사용하여 구성 파일을로드하기 때문에 URLRewrite가 NullPointerException으로 종료됩니다. Jetty는 작업 영역에서 애플리케이션을 실행할 때/WEB-INF/classes/...를 src/main/webapp/WEB-INF/...로 해석하기 때문에 null을 반환합니다. WAR 파일이 아직 어셈블되지 않았기 때문에 파일이 존재하지 않습니다. 대신 target/classes/urlrewrite.xml에서 자원을 가져와야합니다.
그게 불분명하다면이 질문에 답할 수 없을 것입니다. 나는 당신이 문제 해결법을 알아 내기 위해 부두 전문가가되어야 할 것 같아서 (힌트 : 그것은 도전입니다!).
누구든지이 문제를 해결할 방법을 알고 있습니까? 새로운 디렉토리 아래
- 을 넣어 urlrewrite.xml, SRC/메인/webResources과 받는다는 전쟁 플러그인에 <webReources>를 추가하고 필터링을 사용 : 나는 또한 소용이 알고 다음과 같은 대안을 시도했다. WAR를 패키지로 만들었을 때 적절한 위치에 내용을 복사하지만 부티크에서는 사용할 수 없습니다. run
- 내가 기억하지 못하는 다른 몇 가지 해킹 ... (내가 할 경우 업데이트됩니다)
은 받는다는 - 부두 - 플러그인은 받는다는 부두에 사용할 수하기 위해 SRC/메인/자원/웹 애플리케이션/삽입 경로와 파일 이름 아래로 파일을 필요로 ... 실행 명령
감사합니다.
감사합니다. 로이드 F orce
+1 문서 작성 솔루션의 경우 (그물에 너무 많은 답변이 없습니다). 이 방법이 효과가 있다면 스스로 받아들입니다. 그냥 제쳐두고, 당신은 '개발'메이븐 프로필을 전문 자원 필터링과 함께 추가하려고 했습니까? 그것이 비 분사 (non-jetty) 웹 프로젝트를 위해 취한 접근 방식이었습니다. –
선택적으로 maven-replacer-plugin을 사용하여 바뀐 파일을/WEB-INF/classes/dir에 씁니다. dir 구조가 있는지 확인합니다. – Steven
Jetty 9를 사용하는 경우 : org.mecolipse.jetty.util.resource.ResourceCollection 대신 org.mortbay.resource.ResourceCollection을 사용하십시오. – RockMeetHardplace