Whiteship's Note


아키타입(메이븐 프로젝트 베이스) 만들기

Build/Maven : 2008. 11. 3. 16:43


메이븐에는 아주 괜찮아 보이는 기능이 하나 있습니다. 프로젝트 기본 구조를 생성해주는 아키타입이라는 기능입니다. 매번 프로젝트 시작할 때마다 pom.xml에 필요한 라이브러리 정의한 것조차 매우 귀찮습니다. 웹 프로젝트일 경우에는 자주 사용하는 설정 파일들까지도 매번 다른 프로젝트에서 복사해서 붙여 넣던지 이클립스에 등록한 템플릿 코드를 사용해서 찍어내다시피 합니다. 이런 것들을 전부 처음부터 프로젝트 시작할 때 가지고 있는 상태에서 시작한다면...정말 좋겠죠? ㅎㅎ 하지만 공짜는 없었습니다.

OSAF 웹 애플리케이션 샘플을 아키타입으로 만들어서 OSAF를 사용한 웹 개발을 편리하게 할 수 있는 기능을 제공하려고 마음 먹고 아키타입 개발을 시작했습니다. (원래 오전에 할려고 했는데 블로깅하다보니. 밥먹을 시간이고 밥먹고 좀 놀다보니;;; 어느새 2시..ㄷㄷㄷㄷ)

http://maven.apache.org/plugins/maven-archetype-plugin-1.0-alpha-7/examples/archetype.html

위 링크에 나와있는 맨땅에서 아키타입을 만드는 방법은 완전 완전 완전 완전 완전 노가다입니다. pom.xml 만 살짝 수정하는 아키타입을 만들꺼라면 상관없는데.. 제가 만들고자 하는 아키타입을 기본으로 제공할 파일들이 엄청나게 많습니다. 그럴 때 저런 방법으로 아키타입을 만드는건.. 그냥... 너 좀 고생해봐라.. 라는 것 밖에 안 됩니다.

제가 선택한 방법은

http://maven.apache.org/plugins/maven-archetype-plugin/advanced-usage.html


링크에서부터 느껴지는 포스. 어드밴스드.. 하지만 이 녀석으로 아키타입 만드는 방법도 노가다가 필요합니다. 그다지 행복하진 않았습니다.

만드는 방법을 보죠. 아주 간단합니다.
012



0. 프로젝트 정리

기존 프로젝트에서 아키타입에 포함시키지 않을 폴더와 파일을 제거합니다. 버전 관리를 하고 있는게 안전하겠죠.

특 히 제거해야 할 폴더는 이클립스 빌드 패스에 output 폴더로 지정되어 있는 폴더 그걸 삭제해 줍니다. 그럼 폴더만 다시 생기고 그 안에 있는 파일과 폴더들은 삭제됩니다. 기본적으로 그 폴더는 Package Explorer에선 안 보이고 Navigator에서 봐야 보일 겁니다.

1. mvn archetype:create-from-project


아키타입으로 만들 프로젝트로 이동해서 위 명령을 입력해 줍니다. 아.. 아닙니다. 주의할 것이 있는 프로젝트 기본 인코딩이 UTF-8이면 그냥 저렇게 실행해도 되지만, 저처럼 euc-kr이면 -DdefaultEncoding=euc-kr 옵션을 추가합니다.

2. 생성된 파일들 확인(노가다)

위 명령을 실행하면 target/generated~~/archytype/ 밑에 아키타입에 추가할 파일들이 쫙 보입니다. 그 파일들을 전부 열어서 원하는 대로 생성될지 확인합니다. 특히 인코딩과 ${packageInPathFormat} 같은걸 제대로 확인합니다.

3. 로컬 저장소에 설치합니다.

target/generated~~/archytype/ 폴더로 이동해서 mvn install을 실행합니다. 그럼 로컬 저장소에 아키타입이 설치됩니다.

4. 로컬 저장소의 아키타입을 이용해서 프로젝트를 생성합니다.

mvn archetype:generate -DarchetypeCatalog=local

이 명령어를 사용하면 아키타입 목록을 메이븐 중앙 저장소가 아니라 로컬 저장소에서 읽어옵니다. 이 목록에 위에서 설치한 아키타입이 보일 겁니다. 그 번호를 선택해줍니다.

그리고 필요한 정보를 줘서 프로젝트를 생성하면 됩니다.

5. 원격 저장소에 배포

최종적으로 프로젝트를 확인하고 원하는대로 생성이되면 원격 저장소에 배포해서 다른 개발자도 이용할 수 있게하면 되겠습니다.

배포하는 방법은 mvn install하던 장소로 이동해서 mvn deploy를 하면 되겠죠. 간단 간단.

ps: 한글 문제는 해결했지만, 패키지가 동적으로 안 바뀌는 문제가 남아있습니다. -_-;; 흠... 이상하네. package명을 주면 만들 때 알아서 바껴야지 왜 패키지는 고정적으로 만들고 import 문에 있는 package만 바뀌는거얌.. 어쩌라구 ㅠ.ㅠ


top

Write a comment.


Spring Dynamic Modules Maven Archetype

Spring DM/Appendix D : 2008. 7. 9. 11:16


스프링 DM은 메이븐 아키타입archetype을 제공하여 스프링 DM 번들 개발 시에 사용할 수 있는 자바 프로젝트 기본 틀을 제공한다. 아키타입을 실행하려면 다음의 명령어를 사용하면 된다.

mvn archetype:generate

메이븐 플러그인이 가용한 archetype을 보여줄 것이다. 그 중에서 spring-osgi-bundle-archetype을 선택하면 된다.(현재 32번으로 설정되어 있다.) 그리고 프로젝트에 필요한 몇 가지 정보를 입력한다.(그룹id, 아티팩트id, 버전, 패키지) 가용한 모든 아키타입과 버전은 여기를 참조하라.

물론 archetype:create를 사용해서 직접 아키타입을 설정하여 프로젝트를 생성할 수도 있다.

mvn archetype:create \
-DarchetypeGroupId=org.springframework.osgi \
-DarchetypeArtifactId=spring-osgi-bundle-archetype \
-DarchetypeVersion=   \
-DgroupId=<your-project-groupId>  \
-DartifactId=<your-project-artifactId> \
-Dversion=<your-project-version>

(과연 누가 저렇게 쓸까;;; 오타 없아 커맨드 창에 저걸 전부 입력 할 수 있는 사람~?)

둘 모두 같은 프로젝트 구조를 생성해준다. 그 안에 두 개의 스프링 설정 파일 src/main/resources/META-INF/spring/bundle-context.xml 와 src/main/resources/META-INF/spring/bundle-context-osgi.xml 가 있다. 프로젝트는 OSGi 번들로 패키지 형태가 설정되어 있다.

프로젝트에 MANIFEST.MF 파일이 없는데, 이 건 메이븐의 bnd 플러그인으로 자동 생성한다. 따라서 번들을 생성하고 싶으면 다음과 같이 하면 된다.

mvn package

번들 말고, MANIFEST.MF 파일만 생성하고 싶을 때는 다음과 같이 한다.

mvn org.apache.felix:maven-bundle-plugin:manifest

D.1. 생성한 프로젝트 살펴보기
  • OSGi 번들로 패키징 함.
  • MATA-INF/MANIFEST.MF 는 자동 생성함.
  • src/main/java/<package> 번들이 공개할 패키지
  • src/main/java/<package>/internal 번들이 공개하지 않을 패키지
  • src/main/resources/META-INF/spring/bundle-context.xml 번들 내부에서 사용할 스프링 설정 파일
  • src/main/resources/META-INF/spring/bundle-context-osgi.xml OSGI 관련 스프링 설정 파일
  • .project, .classpath, 그리고 build.properties 파일은 이 프로젝트를 이클립스 PDE 플러긴 프로젝트로 인식하게 해 줌.



'Spring DM > Appendix D' 카테고리의 다른 글

Spring Dynamic Modules Maven Archetype  (0) 2008.07.09
top

Write a comment.


Maven의 archetype:create DEPRECATED 되다.

Build/Maven : 2008. 5. 13. 21:14


이런.. 아랫 글은 쓰자마자 Deprecated 해야겠네요.

mvn archetype:create 어쩌구 저쩌구를 실행하고 콘솔에 뜨는 메시지를 잘 보면, generate로 Deprecated 됐다는 메시지를 볼 수 있습니다. 돌리다가 나중에 해봐야지 그러고 그냥 지나쳤다가, 토비 사부님께서 언급하셔서 실행해보고 놀랐습니다.

사용자 삽입 이미지

처음엔 저렇게 중간에 한 번 확인하는 기능이 추가됐구나.. 어째 좀 귀찮을 수도 있겠는데.. 하고 넘어가려다 다시 mvn archetype:generate만 쳐보라고 하셔서 쳐봤더니..

어머나..
사용자 삽입 이미지

아키타입을 선택하고 그룹 아이디, 아티팩트 아이디, 버전, 기본 패지키를 입력할 수 있게 되었습니다. 잘 보시면 32번에 스프링 DM 프로젝트도 있습니다.

에구구.. 아랫글은 쓰자마자 삶이 끝나네요. 하루살이도 아니고 한시간살이급 포스팅이었습니다.

저 목록들은 archetype-catalog.xml에서 읽어오는데, Q4E 플러그인을 사용해서 커스텀 아키타입을 설정하는 방법도 있습니다.
top

Write a comment.


Archetype 만들기

Build/Maven : 2007. 12. 21. 11:49


참조 : http://sonatype.com/book/archetypes.html#creating_your_own_archetypes

새로운 프로젝트 구조를 만들고 싶을 때 사용합니다.

1. 프로젝트 생성

mvn archetype:create -DarchetypeGroupId=org.apache.maven.archetypes
                     -DarchetypeArtifactId=maven-archetype-archetype
                     -DarchetypeVersion=1.0
                     -DgroupId=com.mycompany
                     -DartifactId=my-archetype

2. pom.xml 파일 수정하기

이곳에서 기본 소스 디렉터리 설정, 기본으로 사용할 의존성들을 설정합니다.

3. src/main/resources/META-INF/maven/archetype.xml 파일 작성하기

특정 파일을 리소스로 등록하는 xml 파일 인듯 합니다.
<archetype>
  <id>my-archetype</id>
  <allowPartial>true</allowPartial>
  <resources>
    <resource>src/main/resources/META-INF/MANIFEST.MF</resource>
  </resources>
</archetype>

토비님께서 이 파일을 자동으로 만들어주는 애플리케이션을 만들어 두셨습니다.
Maven archetype 설정파일 자동생성기 - ArchetypeXmlWriter

4. 설치

mvn install

5. 새로운 아치타입으로 프로젝트 생성하기

mvn archetype:create -DarchetypeGroupId=com.mycompany \
                     -DarchetypeArtifactId=my-archetype \
                     -DarchetypeVersion=1.0-SNAPSHOT
                     -DgroupId=com.mycompany \
                     -DartifactId=my-project \


'Build > Maven' 카테고리의 다른 글

이클립스용 Maven 플러그인 Q4E  (10) 2008.04.18
기본적인 managed dependency 사용법  (2) 2008.04.17
Managed Depedency 네 녀석의 정체를 드디어 알았다.  (0) 2008.04.17
Managed dependency는 무슨 뜻인가요?  (0) 2008.04.14
Maven을 쓴다고 해서 종속성을 안중에서 Out 시킬 수 있느냐?  (2) 2008.03.03
Archetype 만들기  (4) 2007.12.21
Assemblies  (0) 2007.12.04
Maven 괜찮은데~  (0) 2007.12.04
Site Generation  (0) 2007.12.03
http://mvnrepository.com/  (0) 2007.12.02
Profile  (0) 2007.11.30
top

  1. 2008.08.18 23:37 PERM. MOD/DEL REPLY

    비밀댓글입니다

    Favicon of https://whiteship.tistory.com BlogIcon 기선 2008.08.19 08:31 신고 PERM MOD/DEL

    켁;; 저도 저 파일은 없어서요; 흠.. archetype 만드시려나보군요. 파이팅이요 ^^

  2. Favicon of https://arawn.tistory.com BlogIcon Arawn 2008.08.19 15:26 신고 PERM. MOD/DEL REPLY

    에고.. 그렇군요.
    간단한 테스트용 프로젝트 만들때마다 기본적으로 만들어놓은 골격 복사, 붙이기 방식으로
    사용하다보니... archetype 에 욕심이 생겨서요.
    수동으로라도 열쉬미 뒤적거려봐야겠어요 ^^;;

    Favicon of https://whiteship.tistory.com BlogIcon 기선 2008.08.19 22:20 신고 PERM MOD/DEL

    넹. 파일 하나만 만들면 되니깐요. 한 번 해보시는 것도 좋을 듯 합니다. ^^

Write a comment.


Archetype

Build/Maven : 2007. 11. 29. 14:21


Archetype은 한국어로 원형(prototype), 전형과 같은 뜻이라고 네이버 사전이 알려줬습니다. Maven에서도 그와 비슷하게 프로젝트의 기본 레이아웃 구조를 생성할 때 사용할 템플릿으로 사용하고 있습니다. RoR의 scaffold랑 비슷한 것 같네요.

archetype:create Goal을 실행하면 다음과 같은 구조의 기본 Archetype을 만들어 줍니다. 이것을 quickstart라고 하며, Hello World 를 출력하는 자바 코드를 가지고 있습니다.

mvn archetype:create -DgroupId=com.mycompany -DartifactId=my-proj

my-proj
|-- pom.xml
`-- src
    |-- main
    |   `-- java
    |       `-- com
    |           `-- mycompany
    |               `-- App.java
    `-- test
        `-- java
            `-- com
                `-- mycompany
                    `-- AppTest.java

이런 프로젝트 구조를 만들어 낸 기반은 META-INF/maven/archetype.xml 리소스 정의 파일과 src/main/resources/archetype-resources 디렉터리 밑에 위치한 Archetype 리소스 파일들 입니다.

maven-quickstart-archetype
|-- pom.xml
`-- src
    `-- main
        `-- resources
            |-- META-INF
            |   `-- maven
            |       `-- archetype.xml
            `-- archetype-resources
                |-- pom.xml
                `-- src
                    |-- main
                    |   `-- java
                    |       `-- App.java
                    `-- test
                        `-- java
                            `-- AppTest.java

Maven에서 가용한 Archetype들은 http://repo1.maven.org/maven2/org/apache/maven/archetypes/ 에서 확인할 수 있습니다.
사용자 삽입 이미지
위에있는 Atchetype 중에서 맘에 드는 것이 없거나, 자신이 자주 사용하는 프로젝트 템플릿이 있다면 그것을 mvn install로 등록하여 사용할 수도 있습니다. 자세한 내용은 http://sonatype.com/book/archetypes.html
위 글의 후반부에는 사용자 정의 archetype 구성에 대하 나왔습니다.

'Build > Maven' 카테고리의 다른 글

Assemblies  (0) 2007.12.04
Maven 괜찮은데~  (0) 2007.12.04
Site Generation  (0) 2007.12.03
http://mvnrepository.com/  (0) 2007.12.02
Profile  (0) 2007.11.30
Archetype  (0) 2007.11.29
Plugin  (4) 2007.11.28
Build Lifecycle(site)  (0) 2007.11.27
Build Lifecycle(default 자세히)  (0) 2007.11.27
Build Lifecycle(default)  (0) 2007.11.27
Build Lifecycle(clean)  (2) 2007.11.27
top

Write a comment.