블로그 이미지
올해목표 // 10월 어학연수 떠나자~ 자수씨

카테고리

전체글 (1457)
Brand New! (28)
주절주절 (213)
MOT (11)
해외쇼핑 (49)
쇼핑노트 (150)
취미생활 (94)
iPhone (4)
Eclipse (121)
Google (83)
Spring (31)
JAVA (176)
Ant (2)
Maven (29)
iBATIS (7)
Regular Expression (6)
Java Web Start (4)
WebServices (14)
JAXB (12)
CAS (13)
JBoss Seam (6)
OSGi (1)
Hibernate (2)
James (6)
Alfresco (17)
JavaScript (59)
WEB (49)
Database (20)
OS (26)
Tools (8)
Tips (26)
IT정보 (1)
Book (21)
Programming (37)
외부행사 (43)
주변인들 (17)
여행노트 (60)
학교생활 (30)
회사생활 (52)
사회생활 (5)
외국어공부 (12)
잡동사니 (30)
Total
Today
Yesterday
 
05-10 04:13
 

달력

« » 2024.5
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
 

최근에 올라온 글

최근에 달린 댓글


MANIFEST.MF 파일을 커스터마이징 하기 위해서는 maven-jar-plugin 을 이용합니다.
(http://maven.apache.org/plugins/maven-jar-plugin)

사용법은 아래와 같습니다.




전체적인 MANIFEST 설정은 아래의 구조를 갖습니다. (http://maven.apache.org/shared/maven-archiver/index.html)



addClasspath 설정을 하면 알아서 메이븐 디펜던시를 추가해줍니다. 참편하네요~

Posted by 자수씨
, |

요즘 회사의 기존 프로젝트를 메이븐으로 전환하면서 이런 구조로 프로젝트를 구성하면 좋겠다는 생각이 들어 포스팅을 하게 되었습니다.

erp 의 HR 을 구성하는 2종류가 있다고 가정하고 2개의 메이븐 프로젝트를 생성합니다.

ㅁ vicki-erp-hr-model
>> HR 모듈의 model 프로젝트


ㅁ vicki-erp-hr-service
>> HR 모듈의 service 프로젝트



이러한 경우 HR 을 구성하는 모듈끼리 분리가 되어 있어 모듈에 대한 전체적인 이해가 어려울 수 있습니다.

그래서 대부분의 오픈 소스 프로젝트의 경우 연관있는 모듈의 상위 프로젝트를 pom 프로젝트로 생성하여 자바프로젝트의 classpath를 지정하여 하나의 모듈처럼 처리할 수 있는 구조로 구성되어 있는 것을 많이 볼 수 있었습니다.

vicki-erp-hr 이라는 자바 프로젝트에 메이븐 POM 프로젝트를 적용하여 vicki-erp-hr-model 과 vicki-erp-hr-service 를 하위 모
듈로 구성시키고 클래스 패스를 지정하면 아래와 같은 구조의 프로젝트로 작업이 가능하게 됩니다.




이 구조를 조금더 확장시킨다면 MM 모듈 프로젝트 2개를 하나로 묶고

 + 


=



HR 과 MM 을 묶어서 하나의 프로젝트로 구성한다면 전체적인 프로젝트를 이해할 수 있는 시점에서도 파악할 수 있는 구조가 되는 것 입니다.



구성하는 사람은 클래스패스 잡을 때 쫌 귀찮긴 하더라도 상당한 장점이 많을 것으로 생각됩니다.

Posted by 자수씨
, |

Maven Enforcer Plugin

JAVA/Maven / 2011. 1. 3. 16:21

Maven Enforcer 플러그인은 메이븐 버전, JDK 버전, OS 종류와 같은 환경을 체크해주는 플러그인 입니다.
플러그인 홈페이지: http://maven.apache.org/plugins/maven-enforcer-plugin/



위의 사용예를 보게 되면, 메이븐 버전은 2.0.6, 자바 버전은 1.5, OS 는 unix 를 체크하게 됩니다.
위를 만족시키지 못한다면 빌드 에러가 발생하게 됩니다.

아직까지는 정의를 해줄만한 프로젝트를 구성해 본 적은 없으나 다른 메이븐 프로젝트를 보면 정의되어 있는 곳들이 좀 있어서 알아두면 좋을 것 같아 정리합니다.

Posted by 자수씨
, |

[Maven] Super POM

JAVA/Maven / 2010. 12. 26. 10:58

모든 메이븐 프로젝트의 POM 은 슈퍼 POM 을 확장합니다.
슈퍼 POM은 설치된 메이븐 디렉토리의 lib 에 maven-x.x.x-uber.jar 파일 안에서 찾을 수 있습니다. (3.0.x 버전에서는
maven-model-3.0.x.jar 파일에서 찾을 수 있습니다.)




 
우리가 접할 수 있는 POM 파일에 별도의 디펜던시와 플러그인 리파지토리를 지정하지 않아도 사용할 수 있는 것은 슈퍼 POM 에 설정된 내용을 확장하기 때문에 가능한 것 입니다.

Posted by 자수씨
, |

메이븐을 마구잡이로 사용하는 것 보다는 책을 통해서 한번 정리를 하는 것이 좋을 것 같아서 책을 구매하게 되었습니다.

항상 구매하듯이 YES24 에서 구매하였습니다.



짜잔~ 원서입니다.



가격은 $39.99 입니다.



레알 원서입니다.




뭐 원서라도 전체를 이해하는 것이 아니라 그 의미만 마음 속으로 받아들이면 될 것 같네요~

훗~ 메이븐~




Posted by 자수씨
, |

CAS Server를 설치하다가 문제에 봉착하였습니다.
회사 내에서 사용하기 위해 Internal Repository를 Sonatype Nexus 로 구성해 놓았는데, cas에서 설정된 사설 repository에 있는 jar를 받지 못하는 문제가 발생하였습니다.

현재 cas 에 잡혀있는 repository


에러를 보아하니 nexus에서 위의 repository에 접근하지 못하는 문제로 보였습니다.


 
 
회사로 복귀하니 포스팅 할 거리도 많아지고 포스팅 할 시간도 생기도 좋네요~ ㅋㅋㅋ


 

Posted by 자수씨
, |

웹 프로젝트를 생성해서 메이븐 테스트를 돌리려하니 위와 같은 문제가 발생하였습니다.

해결책은 간단합니다.

Maven Dependencies 에 javax.servlet 을 추가해줍니다.

<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.4</version>
<scope>provided</scope>
</dependency>


끝~ ㅎㅎㅎ





Posted by 자수씨
, |

요즘에 만들고 있는 maven archetype에 iBatis를 넣을 일이 있어서 설정을 하다보니 sqlmap-config에 resource location이 들어가는 부분이 있는 것을 확인하였습니다.

<sqlMapConfig>

 

        <sqlMap resource="kr/co/vicki/gwt/portal/dao/mysql/sqlmap/Member.xml" />

 

</sqlMapConfig>


다른 파일들은 ${package} 라는 프로퍼티를 사용할 수 있는데, location 같은 '/' 로 구분자를 두는 부분을 어떻게 처리해야 할지 몰라서 고민하던 그때 ${packageInPathFormat} 라는 것을 발견할 수 있었습니다.

즉, groupId가 kr.co.vicki.gwt.portal 이라면
${package} = kr.co.vicki.gwt.portal
${packageInPathFormat} = kr/co/vicki/gwt/portal
으로 변환이 된다는 이야기입니다.

쉽게 해결할 수 있다는 생각에 마음의 안정을 찾고 만든 archetype을 가지고 새로운 프로젝트를 생성하는데 다음과 같은 경고메세지가 떨어졌습니다.
[WARNING] org.apache.velocity.runtime.exception.ReferenceException: reference : template = archetype-resources/src/main/webapp/WEB-INF/sqlmap-config.xml [line 11,column 27] : ${packageInPathFormat} is not a valid reference.

물론 결과는 이런식으로... 변환이 되지 않은 그대로의 sqlmap-config 가 나왔습니다.

<sqlMapConfig>

 

        <sqlMap resource="${packageInPathFormat}/dao/mysql/sqlmap/Member.xml" />

 

</sqlMapConfig>



maven source repository의 소스도 체크아웃 받아서 훑어보고, 구글을 찾아봐도 저 경고에 대한 답은 찾을 수 없었습니다.
머 찾은 것이라고는 위와 관련된 버그 리포팅을 정리한 페이지만 찾을 수 있었습니다.
(내용은 원래 잘 되던건데 왜 다시 reopen 했냐는 이야기만...)

구글과 구글코드 서치를 계속 뒤지던 중에 archetype 파일들 상단에 이상한 것들이 있는 것을 발견할 수 있었습니다.

#set( $symbol_pound = '#' )

#set( $symbol_dollar = '$' )

#set( $symbol_escape = '\' )



검색을 해보니 Velocity 문법이더군요... Maven이 Velocity를 사용한다는 것을 알게 되었습니다.
 Apache Velocity is an open source software project directed by the Apache Software Foundation. Velocity is a Java-based template engine that provides a simple yet powerful template language to reference objects defined in Java code. Its aim is to ensure clean separation between the presentation tier and business tiers in a Web application (see model-view-controller design pattern).

Wikipedia 에서는 Apache Velocity에 대해서 위와 같이 설명을 하는 군요. Java-based 라는 것을 발견하고, Velocity 문법을 살짝 본 후, 다음과 같이 설정을 하고 배포를 해보았습니다.

#set( $symbol_pound = '#' )

#set( $symbol_dollar = '$' )

#set( $symbol_escape = '\' )

#set( $packageInPathFormat = $package.replaceAll('\.', '/') )

<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE sqlMapConfig

    PUBLIC "-//ibatis.apache.org//DTD SQL Map Config 2.0//EN"

    "http://ibatis.apache.org/dtd/sql-map-config-2.dtd">

 

<sqlMapConfig>

 

        <sqlMap resource="${packageInPathFormat}/dao/mysql/sqlmap/Member.xml" />

 

</sqlMapConfig>


다시 로컬 리포지토리에 install 하고, 새로운 프로젝트를 만들어서 확인해보니 원하는 결과를 확인할 수 있었습니다.


큼큼... 저만 저런 결과를 본 것 일까요... 구글에도 관련 내용이 거의 없는 걸 보아하니 영 깨름직합니다.
삽질한거 같아서...





Posted by 자수씨
, |

열심히 만들어댔던 maven-gwtext-archetype 을 외부로 배포가 가능해졌습니다.
그리하여 언제 어디서나 손쉽게 gwtext 프로젝트를 생성할 수 있습니다.

원격 리포지토리를 통해서 프로젝트 생성하기

mvn archetype:create -DarchetypeGroupId=kr.co.vicki.gwt -DarchetypeArtifactId=maven-gwtext-archetype -DarchetypeVersion=1.0.0.v20090216 -DremoteRepositories=http://db.skuniv.ac.kr/nexus/content/repositories/releases -DgroupId=myGroupId -DartifactId=myArtifactId

몇 가지 [WARNING] 이 발생하긴 하지만 정상적으로 프로젝트가 생성이 될 것입니다.

생성된 폴더(위의 명령 그대로 치게 되면 myArtifactId) 로 이동하여 아래 명령을 실행하여 GWT 에뮬레이터가 뜨는지를 확인합니다.

mvn com.totsp.gwt:maven-googlewebtoolkit2-plugin:gwt


생성된 프로젝트에 대한 설명은 조만간 시간이 날 때~~~


Posted by 자수씨
, |

지난번에 만들었던 archetype 을 deploy 를 못해서 고생했었는데 헛다리만 짚고 있던거였습니다.

기선님블로그를 보고 깨달음을 얻고서 배포에 성공하였습니다.

일단 자신의 LocalRepository 의 .settings.xml 을 수정해야 합니다.

<servers> tag

위와 같이 구성하는데, username 과 password 는 nexus 에서 설정한 배포유저의 설정값으로 각자 수정해야합니다.

<mirrors> tag

nexus 를 설치한 경로로 url 설정만 바꾸어주면 됩니다.

제가 실수했던 부분이 바로 mirror 로 설정했던 곳 (public group) 과 repository 를 착각하고 있었던 것이였습니다.
pom.xmldistributionManagement 설정을 mirror 설정으로 잡아서 재대로 안된 것이었습니다.

before pom.xml :: <distributionManagement>


after pom.xml :: <distributionManagement>



archetype 프로젝트 폴더에 가서 아래 명령을 실행합니다.
mvn deploy

[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESSFUL
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 3 seconds
[INFO] Finished at: Thu Feb 26 17:07:57 KST 2009
[INFO] Final Memory: 9M/17M
[INFO] ------------------------------------------------------------------------

반가운 메시지와 함께 성공!!!!

아... 잘됩니다만 또 다른부분을 건들여놔서 그걸 또 해결해야 하네요...

이번에는 maven-archetype-webapp 쪽이 말썽~



Posted by 자수씨
, |

글 보관함

최근에 받은 트랙백