'maven'에 해당되는 글 9건

  1. 2011.10.13 maven package goal 로 war나 jar 파일 생성시 생성되는 파일명 설정하기
  2. 2011.08.24 Maven, SVN 을 이용한 개발서버(Tomcat) 자동배포 하기
  3. 2011.08.24 Maven Jetty Plugin 으로 개발하면서 css, js, html 같은 정적 파일이 저장안될때
  4. 2011.08.22 Oracle JDBC Driver maven 디펜던시에 추가하기 3

maven package goal 로 war나 jar 파일 생성시 생성되는 파일명 설정하기


아무것도 설정하지 않고 maven package 골로 빌드를 하면 artifactId-version.war 로 war 파일이 생성된다.

이 war 파일로 배포를 하는데  배포를 할때마다 ROOT.war 나 컨텍스트명.war 로 파일명을 변경해야 되서 귀찮기 그지없다.

mvn package 를 했을때 ROOT.war 나 project.war 같이 생성될 war 파일명을 설정해 보자.

<project 
	xmlns="http://maven.apache.org/POM/4.0.0" 
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

	<modelVersion>4.0.0</modelVersion>
	<groupId>com.tistory.stove99</groupId>
	<artifactId>MyProject</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<packaging>war</packaging>

	<build>
		<!-- ROOT.war 가 생성된다. -->
		<finalName>ROOT</finalName>
		<plugins>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-war-plugin</artifactId>
				<version>2.1.1</version>

				<configuration>
					<warSourceDirectory>WebContent</warSourceDirectory>
					<webXml>WebContent/WEB-INF/web.xml</webXml>
				</configuration>
			</plugin>
		</plugins>
	</build>
</project>
build 태그 아래에 finalName 태그를 추가한 다음 원하는 이름을 설정하면 설정한이름.war 로 war 파일이 생성된다.

Maven, SVN 을 이용한 개발서버(Tomcat) 자동배포 하기

이것저것 개발하기도 바쁜데 개발한것들을 자꾸 개발서버에 배포해 달라고 보채면 평온하던 마음에 욱 하는 마음이 살포시 자리잡게 된다.

나의 평온한 마음을 계속 유지하기 위해서 일정시간 마다 개발서버에 자동배포 되도록 잔머리를 굴려 보았다.

소스를 SVN으로 관리하고 있고 프로젝트가 Maven 프로젝트이고, 톰캣이 윈도우 서비스로 등록되 있어야 요렇게 하는것이 가능하다. 

개발서버가 윈도우기 때문에 배치파일과 윈도우  보조프로그램 > 시스템 도구 > 작업스케쥴러를 활용하기로 했다.

※ 만약 리눅스나 유닉스 같은 경우는 배치파일을 리눅스용 스크립트로 작성하고 고것을 cron 으로 돌리면 될것이다.

먼저 배치파일 스크립트 소스는 다음과 같다.
@echo off

:: 변수 설정 시작

set temp_build_dir=c:\tmp2\

:: SVN 에 등록된 프로젝트 이름
set project_name=MyProject

:: SVN 정보 설정
set svn_repository=https://xxx.xxx.xxx.xxx/svn/%project_name%
set svn_user=xxxxx
set svn_passowrd=xxxxxx

:: Maven에서 빌드후 생성해주는 war 파일,  보통 xxxx-0.0.1-SNAPSHOT.war 로 생성됨
set to_gen_war=xxxxxxx.war

:: 빌드후 생성된 war 파일을 복사할 대상 war 파일, 톰캣에서 바라보는 webapps 디렉토리
set target_webapp_dir=C:\webapps\xxxx\

:: 프로젝트의 컨텍스트 패스, / 면 ROOT 라고 적어주면 됨
set target_webapp_war_name=ROOT


:: service 에 등록된 톰캣 서비스이름으로 바꿔주셈~
set tomcat_service_name=tomcat6


:: 변수 설정 끝




:: 배포시작
:: 톰캣 정지
net stop %tomcat_service_name%


:: 기존 배포된 디렉토리 지우기
rd /s /q %target_webapp_dir%%target_webapp_war_name%


::체크아웃 받을 디렉토리가 존재하지 않으면 맨듬
IF NOT EXIST %temp_build_dir% (
	mkdir %temp_build_dir%
)

cd %temp_build_dir%

:: svn 에서 프로젝트를 CHECKOUT 받는다.
svn co %svn_repository% --username %svn_user% --password %svn_passowrd%

cd %project_name%

:: maven 으로 war 파일 생성될때까지 기다림
start /wait cmd /c mvn clean package

cd target

:: war 파일을 개발서버 톰캣 webapps 폴더로 복사
copy %to_gen_war% %target_webapp_dir%%target_webapp_war_name%.war /y

:: 톰캣 시작
net start %tomcat_service_name%

개발서버배포.bat


상단에 있는 변수 설정하는 부분을 프로젝트에랑 개발서버 환경에 맞게 바꿔주면 된다.

스크립트를 보면 알겠지만 매우간단하다.


1. 톰캣 STOP
2. 기존 배포된 디렉토리 지우기 
3. SVN 으로 소스 체크아웃
4. Maven으로 war 파일 생성
5. 생성된 war 파일 복사
6. 톰캣 START

요런 과정을 거친다.



위 스크립트가 실행되기 위해서는 svn, mvn 명령어가 아무데서나 실행될수 있도록 시스템 환경변수 PATH 에 해당경로를 추가해 줘야 한다. 

죠래 만든 스크립트를 이제 윈도우에 있는 기능인 작업 스케쥴러에 등록해서 원하는 시간에 실행되도록 추가해 주기만 하면 된다.

윈도우2008 이나 윈도우7 인 경우 대략 아래와 같을 것이고, XP 도 찾아보면 비슷한게 있을 것이다.


1. 새작업 만들기



2. 일반설정



 3. 트리거 설정(트리거탭)

매일 언제 실행할건지 설정한다.


4. 실행할 스크립트 설정(동작탭)

어떤 스크립트를 실행할것인지 선택


죠렇게 설정해 주고 스케쥴에 추가를 해주면 이제부터 설정한 시간마다 SVN에서 소스를 체크아웃 받아 서버에다 자동 배포를 시켜줄것이다.
 

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

이클립스에서 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 요기임.

Oracle JDBC Driver maven 디펜던시에 추가하기

Oracle JDBC 드라이버는 메이븐 센트럴 레파지토리에 없다. 그래서 따로 레파지토리를 추가해 줘야 하는데

검색을 해보니 예전에는 오라클에서 제공하는 메이븐 레파지토리(http://download.oracle.com/maven)가 있었는데

요즘 오라클 사이트가 전체적으로 삐꾸가 되서 이제 잘 되지 않는것 같다.



다음은 JDBC 드라이버가 오라클 사이트에 올라오는 최신 버전은 아니지만  그래도 거의 준 최신 버전을 받을수 있는 레파지토리이다.

http://maven.jahia.org/maven2

pom.xml 파일  repositories 에 요걸 추가하고
<repository>
	<id>oracle</id>
	<name>ORACLE JDBC Repository</name>
	<url>http://maven.jahia.org/maven2</url>
</repository>


dependencies 에 요걸 추가해 주면 된다.
<dependency>
	<groupId>com.oracle</groupId>
	<artifactId>ojdbc6</artifactId>
	<version>11.1.0.7.0</version>
</dependency>
ojdbc5 가 필요한 사람은 ojdbc6 대신에 ojdbc5 로 바꿔서 적어주면 됨.



나는 꼭 최신버전 드라이버를 maven으로 가져와서 써야 겠다는 사람들은 자기 로컬 레파지토리를 만들면 된다 -_-;
prev 1 2 next