maven

Maven Jetty Plugin 으로 개발하면서 css, js, html 같은 정적 파일이 저장안될때

스토브 2011. 8. 24. 01:23
이클립스에서 maven을 쓰면서 jetty plugin 으로 서버를 띄워놓고 개발을 할때

css, js, html 같은 정적 컨텐츠 파일을 편집해서 저장할려고 하면

"요청한 작업은, 사용자가 매핑한 구역이 열려 있는 상태인 파일에서 수행할 수 없습니다" 요런 야리꾸리한 에러 메시지가 뜨면서 저장이 안된다.



어디서 찾아봤는데 이런 현상은 윈도우에서만 발생하고 서버가 올라간 상태에서 해당파일을 jetty 가 참조하고 있어서 동시에 파일을 변경할수 없어서 나는 에러라고 한다. 

요것을 해결하기 위한 방법은

1. pom.xml 에서 jetty plugin 이 설정된 부분에 아래처럼 <defaultsDescriptor>위치</defaultsDescriptor> 를 추가해준다.
<plugin>
	<groupId>org.mortbay.jetty</groupId>
	<artifactId>jetty-maven-plugin</artifactId>
	<version>8.0.0.RC0</version>
	<configuration>
		<scanIntervalSeconds>1</scanIntervalSeconds>
		<webAppConfig>
			<defaultsDescriptor>src/main/resources/jetty/webdefault.xml</defaultsDescriptor>
		</webAppConfig>
	</configuration>
</plugin>

 jetty 8.0.0. 어쩌고 하는 버전부터인지 몰라도 아무튼 최신버전은 webdefault.xml 위치를 설정하는 방법이 바껴서 위와 같은 태그로 설정해야 한다.

Maven Jetty Configuration 참고 URL : http://wiki.eclipse.org/Jetty/Feature/Jetty_Maven_Plugin





2. pom.xml에서 설정한 위치로 webdefault.xml 파일을 복사하고 webdefault.xml 파일에서 init-param 들 중에 useFileMappedBuffer 이라는 항목이 true 로 설정되 있을건데 요걸 false 로 바꿔주면 된다.
<init-param>
	<param-name>useFileMappedBuffer</param-name>
	<param-value>false</param-value>
</init-param>

webdefault.xml

 요렇게만 해주면 이제부터 파일이 훅훅 저장이 잘 된다.




※ 옛날 버전에서 webdefault.xml 위치 지정 : configuration 태그 아래에 바로 <webDefaultXml>위치</webDefaultXml> 요렇게 설정하면 된다.
<configuration>
	<webDefaultXml>src/main/resources/jetty/webdefault.xml</webDefaultXml>
</configuration>
옛날버전 Jetty Configuration 참고 URL : http://docs.codehaus.org/display/JETTY/Maven+Jetty+Plugin



※ 디폴트 webdefault.xml 위치
[메이븐로컬레파지토리]\org\eclipse\jetty\jetty-webapp\플러그인버전\jetty-webapp-XXX.jar 파일안에 org/eclipse/jetty/webapp/ 폴더 안에 있다~~
 
[메이븐로컬레파지토리] 경로는 별다른 설정을 안했다면 사용자 홈 디렉토리\.m2\repository 이다.

나같은 경우는 C:\Users\Administrator\.m2\repository 요기임.