요즘 XML 설정이 복잡한 메이븐Maven(http://maven.apache.org/) 대신 그레들Gradle(http://www.gradle.org/)이 사람들의 많은 관심을 받고 있다. 그루비Groovy를 바탕으로 하는 자동화 배포툴이라고 할 수 있으려나? 설정이 간략화되는 것에 대해서 높은 점수를 받고 있는 것으로 보인다. 그루비를 배워야 하나? ㅡ0-)?

안드로이드 배포툴도 그레들로 나오기 시작하던데...


우분투에서 Gradle 설치를 위한 명령어는 간단하다.

    $ sudo apt-get install gradle

honeymon@honeymon-ubuntu:~$ sudo apt-get install gradle

[sudo] password for honeymon: 

패키지 목록을 읽는 중입니다... 완료

의존성 트리를 만드는 중입니다       

상태 정보를 읽는 중입니다... 완료

다음 패키지를 더 설치할 것입니다:

  ant ant-optional antlr aspectj binfmt-support bnd bsh bsh-gcj checkstyle

  default-jdk default-jre default-jre-headless eclipse-jdt eclipse-pde

  eclipse-platform eclipse-platform-data eclipse-rcp fastjar fop gcj-4.6-base

  gcj-4.6-jre-lib groovy ivy jarwrapper junit junit4 libantlr-java

  libapache-pom-java libapr1 libaprutil1 libasm3-java libaspectj-java

  libavalon-framework-java libbatik-java libbindex-java libbonoboui2-0

  libbonoboui2-common libbsf-java libclassworlds-java libcodenarc-groovy-java

  libcommons-beanutils-java libcommons-cli-java libcommons-collections3-java

  libcommons-compress-java libcommons-configuration-java libcommons-dbcp-java

  libcommons-digester-java libcommons-el-java libcommons-httpclient-java

  libcommons-io-java libcommons-jexl-java libcommons-jxpath-java

  libcommons-lang-java libcommons-logging-java libcommons-net2-java

  libcommons-parent-java libcommons-pool-java libcommons-vfs-java libdb-java

  libdb-je-java libdb4.8 libdb5.1-java libdb5.1-java-gcj libdoxia-java

  libeasymock-java libecj-java libequinox-osgi-java libfop-java

  libganymed-ssh2-java libgcj-bc libgcj-common libgcj12

  libgeronimo-jpa-2.0-spec-java libgeronimo-jta-1.1-spec-java

  libgeronimo-osgi-support-java libglade2-0 libgmetrics-groovy-java

  libgnomecanvas2-0 libgnomecanvas2-common libgnomeui-0 libgnomeui-common

  libgnuinet-java libgnujaf-java libgnumail-java libgoogle-collections-java

  libgradle-announce-java libgradle-antlr-java libgradle-code-quality-java

  libgradle-core-java libgradle-ide-java libgradle-jetty-java

  libgradle-maven-java libgradle-osgi-java libgradle-plugins-java

  libgradle-scala-java libgradle-wrapper-java libhamcrest-java

  libhawtjni-runtime-java libhttpclient-java libhttpcore-java

  libicu4j-4.4-java libicu4j-java libitext1-java libjansi-java

  libjansi-native-java libjasper-java libjetty-extra libjetty-extra-java

  libjetty-java libjline-java libjna-java libjna-posix-java libjoptsimple-java

  libjsch-java libjsoup-java libjsr305-java libjtidy-java libjzlib-java

  liblogback-java liblucene2-java libmaven-ant-tasks-java libmaven-scm-java

  libmaven2-core-java libmockobjects-java libmodello-java libmx4j-java

  libnetbeans-cvsclient-java libosgi-compendium-java libosgi-core-java

  libosgi-foundation-ee-java libplexus-ant-factory-java

  libplexus-archiver-java libplexus-bsh-factory-java libplexus-build-api-java

  libplexus-cipher-java libplexus-classworlds-java

  libplexus-component-api-java libplexus-container-default-java

  libplexus-containers-java libplexus-i18n-java

  libplexus-interactivity-api-java libplexus-interpolation-java

  libplexus-io-java libplexus-sec-dispatcher-java libplexus-utils-java

  libregexp-java librhino-java libsaxon-java libservlet2.4-java libslf4j-java

  libsvn-java libsvn1 libsvnkit-java libswt-cairo-gtk-3-jni

  libswt-glx-gtk-3-jni libswt-gnome-gtk-3-jni libswt-gtk-3-java

  libswt-gtk-3-jni libswt-webkit-gtk-3-jni libtomcat6-java

  libtrilead-ssh2-java libwagon-java libxbean-java libxmlgraphics-commons-java

  libxstream-java openjdk-6-jdk rhino sat4j testng

제안하는 패키지:

  ant-gcj ant-doc liboro-java jython libjdepend-java libcommons-net-java

  javacc ant-optional-gcj bsh-doc eclipse fop-doc groovy-doc libbcprov-java

  libbcpg-java ivy-doc junit-doc libavalon-framework-java-doc

  libclassworlds-java-doc libcodenarc-groovy-java-doc

  libcommons-beanutils-java-doc libcommons-collections3-java-doc

  libgeronimo-jta-1.0.1b-spec-java libcommons-digester-java-doc

  libcommons-httpclient-java-doc libcommons-io-java-doc

  libcommons-jxpath-java-doc libcommons-logging-java-doc

  libexcalibur-logkit-java libcommons-net2-java-doc libcommons-vfs-java-doc

  libdoxia-java-doc libeasymock-java-doc ecj libecj-java-gcj libgcj12-dbg

  libgcj12-awt libgeronimo-jpa-2.0-spec-java-doc libgeronimo-jta-java-doc

  libgeronimo-osgi-support-java-doc libgmetrics-groovy-java-doc

  libgnumail-java-doc gradle-doc maven2 scala jetty libjetty-java-doc

  libjline-java-doc libjna-java-doc libjsoup-java-doc libjsr305-java-doc

  libjtidy-java-doc glassfish-javaee janino libmaven-scm-java-doc

  libmodello-java-doc libhessian-java libosgi-compendium-java-doc

  libosgi-core-java-doc libosgi-foundation-ee-java-doc

  libplexus-build-api-java-doc libplexus-cipher-java-doc

  libplexus-classworlds-java-doc libplexus-component-api-java-doc

  libplexus-container-default-java-doc libplexus-i18n-java-doc

  libplexus-interactivity-api-java-doc libplexus-interpolation-java-doc

  libplexus-sec-dispatcher-java-doc libplexus-utils-java-doc libsaxon-java-doc

  libswt-gtk-3-java-gcj tomcat6 libwagon-java-doc libspring-core-java

  libspring-beans-java libspring-context-java libspring-web-java

  libjoda-time-java libstax-java libcglib2.1-java libjettison-java

  openjdk-6-demo openjdk-6-source visualvm librhino-java-doc testng-doc

다음 새 패키지를 설치할 것입니다:

  ant ant-optional antlr aspectj binfmt-support bnd bsh bsh-gcj checkstyle

  default-jdk default-jre default-jre-headless eclipse-jdt eclipse-pde

  eclipse-platform eclipse-platform-data eclipse-rcp fastjar fop gcj-4.6-base

  gcj-4.6-jre-lib gradle groovy ivy jarwrapper junit junit4 libantlr-java

  libapache-pom-java libapr1 libaprutil1 libasm3-java libaspectj-java

  libavalon-framework-java libbatik-java libbindex-java libbonoboui2-0

  libbonoboui2-common libbsf-java libclassworlds-java libcodenarc-groovy-java

  libcommons-beanutils-java libcommons-cli-java libcommons-collections3-java

  libcommons-compress-java libcommons-configuration-java libcommons-dbcp-java

  libcommons-digester-java libcommons-el-java libcommons-httpclient-java

  libcommons-io-java libcommons-jexl-java libcommons-jxpath-java

  libcommons-lang-java libcommons-logging-java libcommons-net2-java

  libcommons-parent-java libcommons-pool-java libcommons-vfs-java libdb-java

  libdb-je-java libdb4.8 libdb5.1-java libdb5.1-java-gcj libdoxia-java

  libeasymock-java libecj-java libequinox-osgi-java libfop-java

  libganymed-ssh2-java libgcj-bc libgcj-common libgcj12

  libgeronimo-jpa-2.0-spec-java libgeronimo-jta-1.1-spec-java

  libgeronimo-osgi-support-java libglade2-0 libgmetrics-groovy-java

  libgnomecanvas2-0 libgnomecanvas2-common libgnomeui-0 libgnomeui-common

  libgnuinet-java libgnujaf-java libgnumail-java libgoogle-collections-java

  libgradle-announce-java libgradle-antlr-java libgradle-code-quality-java

  libgradle-core-java libgradle-ide-java libgradle-jetty-java

  libgradle-maven-java libgradle-osgi-java libgradle-plugins-java

  libgradle-scala-java libgradle-wrapper-java libhamcrest-java

  libhawtjni-runtime-java libhttpclient-java libhttpcore-java

  libicu4j-4.4-java libicu4j-java libitext1-java libjansi-java

  libjansi-native-java libjasper-java libjetty-extra libjetty-extra-java

  libjetty-java libjline-java libjna-java libjna-posix-java libjoptsimple-java

  libjsch-java libjsoup-java libjsr305-java libjtidy-java libjzlib-java

  liblogback-java liblucene2-java libmaven-ant-tasks-java libmaven-scm-java

  libmaven2-core-java libmockobjects-java libmodello-java libmx4j-java

  libnetbeans-cvsclient-java libosgi-compendium-java libosgi-core-java

  libosgi-foundation-ee-java libplexus-ant-factory-java

  libplexus-archiver-java libplexus-bsh-factory-java libplexus-build-api-java

  libplexus-cipher-java libplexus-classworlds-java

  libplexus-component-api-java libplexus-container-default-java

  libplexus-containers-java libplexus-i18n-java

  libplexus-interactivity-api-java libplexus-interpolation-java

  libplexus-io-java libplexus-sec-dispatcher-java libplexus-utils-java

  libregexp-java librhino-java libsaxon-java libservlet2.4-java libslf4j-java

  libsvn-java libsvn1 libsvnkit-java libswt-cairo-gtk-3-jni

  libswt-glx-gtk-3-jni libswt-gnome-gtk-3-jni libswt-gtk-3-java

  libswt-gtk-3-jni libswt-webkit-gtk-3-jni libtomcat6-java

  libtrilead-ssh2-java libwagon-java libxbean-java libxmlgraphics-commons-java

  libxstream-java openjdk-6-jdk rhino sat4j testng

0개 업그레이드, 170개 새로 설치, 0개 제거 및 5개 업그레이드 안 함.

279 M바이트 아카이브를 받아야 합니다.

이 작업 후 407 M바이트의 디스크 공간을 더 사용하게 됩니다.

계속 하시겠습니까 [Y/n]?


관련해서 설치해야하는 gradle이 억수로 많네~ ㅡ0-)>


   설치 확인!  
 

honeymon@honeymon-ubuntu:~$ gradle

:help

Welcome to Gradle 1.0-milestone-3.

To run a build, run gradle <task> ...

To see a list of available tasks, run gradle tasks

To see a list of command-line options, run gradle --help

BUILD SUCCESSFUL

Total time: 1.615 secs

honeymon@honeymon-ubuntu:~$


 

그레들 버전 확인

 

$ gradle -v

honeymon@honeymon-ubuntu:~$ gradle -v

------------------------------------------------------------

Gradle 1.0-milestone-3

------------------------------------------------------------

Gradle build time: Thursday, September 8, 2011 4:06:52 PM UTC

Groovy: 1.8.6

Ant: Apache Ant(TM) version 1.8.2 compiled on December 3 2011

Ivy: non official version

JVM: 1.6.0_27 (Sun Microsystems Inc. 20.0-b12)

OS: Linux 3.5.0-25-generic amd64

honeymon@honeymon-ubuntu:~$ 


 

 그레들 설치 위치  

 

/usr/share/gradle


 

 참고사이트

 

* 손권남님의 위키 : http://wiki.kwonnam.pe.kr/gradle

* Gradle/lean :http://www.gradle.org/learn



메이븐Maven을 사용할 때, 프로젝트에서 의존성을 가지는 라이브러리들을 검색하는 사이트로 이전까지는

http://mvnrepository.com

그런데, 다른 개발자(@awran)가 또다른 검색 사이트를 찾아냈다.

http://search.maven.org/

이전까지 사용하던 http://mvnrepository.com 에는 이런저런 광고가 붙어있어서, 사용하면서도 긴가민가했는데, http://search.maven.org/ 의 모습을 보고 하단에 있는 Apache Software Fundation 을 보니까 '이 녀석이 진퉁이구나' 싶었다.

궁금증이 생겼다.

내가 왜 http://mvnrepository.com 를 사용하기 시작했을까?

어디선가 여기서 검색하라고 본 것 같은데... 하고 찾아봤다. +_+)

찾았다.


메이븐

저자
박재성 지음
출판사
한빛미디어 | 2011-03-21 출간
카테고리
컴퓨터/IT
책소개
실제 프로젝트로 학습하는 생생한 메이븐 활용 전략!『메이븐』은 ...
가격비교 글쓴이 평점  

여기에 나와있다. +_+) 100페이지에!

참고 사이트 : 

http://struts.apache.org/2.2.3/docs/struts-2-maven-archetypes.html


  메이븐을 이용하면 의존성을 가진 라이브러리들까지 손쉽게 다운로드 받아서 프로젝트를 생성할 수가 있다.

  2줄의 명령어만 넣어주면 된다.


스트럿츠 archetype을 생성하는 방법은 두 종류가 있다. 둘 중 마음에 드는 방법을 선택한다.


1.1. 메이븐의 archetype을 이용하여 스트럿츠 프로젝트를 생성(generate)한다.

  - 스트럿츠 2.2.3.1 버전을 사용했다. 

mvn archetype:generate -B
-DgroupId=tutorial
-DartifactId=tutorial
-DarchetypeGroupId=org.apache.struts
-DarchetypeArtifactId=struts2-archetype-blank

-DarchetypeVersion=<version>


1.2. 스트럿츠 archetype 을 생성한다. 
mvn archetype:generate -DarchetypeCatalog=http://struts.apache.org/

2. 메이븐으로 생성한 프로젝트를 이클립스에서 사용할 수 있는 프로젝트로 변경한다.

mvn eclipse:eclipse -Dwtpversion=1.5
이렇게 하면 된다. 
그럼 이클립스에서 사용할 수 있는 프로젝트가 간단하게 생성된다. 

1.2번과 2번을 같이하는 게... 편한 것 같기도 하다.


생성 과정 기록 : 


HoneyBook:dreaminfra ihoneymon$ mvn archetype:generate -DarchetypeCatalog=http://struts.apache.org/

[INFO] Scanning for projects...

[INFO]                                                                         

[INFO] ------------------------------------------------------------------------

[INFO] Building Maven Stub Project (No POM) 1

[INFO] ------------------------------------------------------------------------

[INFO] 

[INFO] >>> maven-archetype-plugin:2.1:generate (default-cli) @ standalone-pom >>>

[INFO] 

[INFO] <<< maven-archetype-plugin:2.1:generate (default-cli) @ standalone-pom <<<

[INFO] 

[INFO] --- maven-archetype-plugin:2.1:generate (default-cli) @ standalone-pom ---

[INFO] Generating project in Interactive mode

[INFO] No archetype defined. Using maven-archetype-quickstart (org.apache.maven.archetypes:maven-archetype-quickstart:1.0)

//원하는 유형을 선택하고 groupId, articleId 를 임의에 따라 지정한다.

Choose archetype:

1: http://struts.apache.org/ -> org.apache.struts:struts2-archetype-blank (Struts 2 Archetypes - Blank)

2: http://struts.apache.org/ -> org.apache.struts:struts2-archetype-convention (Struts 2 Archetypes - Blank Convention)

3: http://struts.apache.org/ -> org.apache.struts:struts2-archetype-dbportlet (Struts 2 Archetypes - Database Portlet)

4: http://struts.apache.org/ -> org.apache.struts:struts2-archetype-plugin (Struts 2 Archetypes - Plugin)

5: http://struts.apache.org/ -> org.apache.struts:struts2-archetype-portlet (Struts 2 Archetypes - Portlet)

6: http://struts.apache.org/ -> org.apache.struts:struts2-archetype-starter (Struts 2 Archetypes - Starter)

Choose a number or apply filter (format: [groupId:]artifactId, case sensitive contains): : 1

Define value for property 'groupId': : StudyStruts

Define value for property 'artifactId': : StudyStruts

Define value for property 'version':  1.0-SNAPSHOT: : 

Define value for property 'package':  StudyStruts: : 

Confirm properties configuration:

groupId: StudyStruts

artifactId: StudyStruts

version: 1.0-SNAPSHOT

package: StudyStruts

 Y: : y

[INFO] ----------------------------------------------------------------------------

[INFO] Using following parameters for creating project from Archetype: struts2-archetype-blank:2.2.1

[INFO] ----------------------------------------------------------------------------

[INFO] Parameter: groupId, Value: StudyStruts

[INFO] Parameter: artifactId, Value: StudyStruts

[INFO] Parameter: version, Value: 1.0-SNAPSHOT

[INFO] Parameter: package, Value: StudyStruts

[INFO] Parameter: packageInPathFormat, Value: StudyStruts

[INFO] Parameter: package, Value: StudyStruts

[INFO] Parameter: version, Value: 1.0-SNAPSHOT

[INFO] Parameter: groupId, Value: StudyStruts

[INFO] Parameter: artifactId, Value: StudyStruts

[INFO] project created from Archetype in dir: /Users/ihoneymon/Documents/workspaces/dreaminfra/StudyStruts

[INFO] ------------------------------------------------------------------------

[INFO] BUILD SUCCESS

[INFO] ------------------------------------------------------------------------

[INFO] Total time: 15.347s

[INFO] Finished at: Wed Oct 12 10:45:18 KST 2011

[INFO] Final Memory: 7M/81M

[INFO] ------------------------------------------------------------------------

HoneyBook:dreaminfra ihoneymon$ cd StudyStruts/

HoneyBook:StudyStruts ihoneymon$ mvn eclipse:eclipse -Dwtpversion=1.5

[INFO] Scanning for projects...

[INFO]                                                                         

[INFO] ------------------------------------------------------------------------

[INFO] Building Struts 2 Blank Webapp 1.0-SNAPSHOT

[INFO] ------------------------------------------------------------------------

[INFO] 

[INFO] >>> maven-eclipse-plugin:2.8:eclipse (default-cli) @ StudyStruts >>>

[INFO] 

[INFO] <<< maven-eclipse-plugin:2.8:eclipse (default-cli) @ StudyStruts <<<

[INFO] 

[INFO] --- maven-eclipse-plugin:2.8:eclipse (default-cli) @ StudyStruts ---

[INFO] Adding support for WTP version 1.5.

[INFO] Using Eclipse Workspace: /Users/ihoneymon/Documents/workspaces/dreaminfra

[WARNING] Workspace defines a VM that does not contain a valid jre/lib/rt.jar: /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home

[INFO] no substring wtp server match.

[INFO] Using as WTP server : VMware vFabric tc Server Developer Edition (Runtime) v2.5

[INFO] Adding default classpath container: org.eclipse.jdt.launching.JRE_CONTAINER

[INFO] Not writing settings - defaults suffice

[INFO] Wrote Eclipse project for "StudyStruts" to /Users/ihoneymon/Documents/workspaces/dreaminfra/StudyStruts.

[INFO] 

[INFO] ------------------------------------------------------------------------

[INFO] BUILD SUCCESS

[INFO] ------------------------------------------------------------------------

[INFO] Total time: 2.254s

[INFO] Finished at: Wed Oct 12 10:45:34 KST 2011

[INFO] Final Memory: 6M/81M

[INFO] ------------------------------------------------------------------------

HoneyBook:StudyStruts ihoneymon$ 

이클립스를 열고, 이 StudyStruts라는 폴더를 import하면 스트럿츠 라이브러리가 설치된 프로젝트를 바로 이용해볼 수 있다. 여기에는 간단한 예제 코드가 포함되어 있다. 이 프로젝트를 서버에 추가하고 실행해보면 다음처럼 나온다.

자! 스트럿츠를 시작해보자.

11. 6. 26 오후 4시 02분 09초: Refreshing [/SpringMVCtest/pom.xml]
11. 6. 26 오후 4시 02분 25초: Maven Builder: FULL_BUILD 
11. 6. 26 오후 4시 02분 26초: [WARN] 
11. 6. 26 오후 4시 02분 26초: [WARN] Some problems were encountered while building the effective model for com.honeymon:spring:war:1.0.0-BUILD-SNAPSHOT
11. 6. 26 오후 4시 02분 26초: [WARN] 'build.plugins.plugin.version' for org.apache.maven.plugins:maven-compiler-plugin is missing. @ line 148, column 12
11. 6. 26 오후 4시 02분 26초: [WARN] 'build.plugins.plugin.version' for org.apache.maven.plugins:maven-surefire-plugin is missing. @ line 208, column 12
11. 6. 26 오후 4시 02분 26초: [WARN] 'build.plugins.plugin.version' for org.apache.maven.plugins:maven-war-plugin is missing. @ line 156, column 12
11. 6. 26 오후 4시 02분 26초: [WARN] 
11. 6. 26 오후 4시 02분 26초: [WARN] It is highly recommended to fix these problems because they threaten the stability of your build.
11. 6. 26 오후 4시 02분 26초: [WARN] 
11. 6. 26 오후 4시 02분 26초: [WARN] For this reason, future Maven versions might no longer support building such malformed projects.
11. 6. 26 오후 4시 02분 26초: [WARN] 
11. 6. 26 오후 4시 02분 55초: Maven Builder: AUTO_BUILD 
지금 넷북에 깔려있는 STS는 2.6.2 버전이다. Spring template project 를 생성후에 위와 같은 메시지가 나타난다.
maven과 관련된 플러그인 버전 정보가 빠져있다는 것이다.
그래서 프로젝트에 있는 pom.xml 을 열어보았다. <version></version>이 없다. 
그래서 http://mvnrepository.com/ 여기에서 해당하는 플러그인들의 버전을 확인하고 넣어줬다.
 


110525_egovFramework 세미나

  • 제목 : Dive into Maven
  • 장소 : 청계광장 정보화진흥원 지하1층 세미나실
  • 발표내용
    • 표준프레임워크 오픈커뮤니티를 통해서 프레임워크연구개발이 활성화되길 바란다.
    • Maven is ...
      • 프로젝트 관리(Project Management) 와 빌드 자동화(Build Automation)
      • 2002년, Apache Turbine 에서 비롯되었다.
      • Maven 도입이유
        • 라이브러리 관리의 문제점
          • commons.fileupload 1.0 버그 -> 1.1 해결
          • classpath : 같은 패키지 상에서는 제일 상단에 존재하는 패키지 부터 실행됨
        • 오픈소스를 사용하는 경우 의존성을 지니게 되는 라이브러리
        • 자유도(Ant 확장성이 뛰어남, Maven 정형화 되어 있음)
    • Maven Simple Project
      • project home : pom.xml
      • src/main/java
      • src/main/resource
      • src/test/java
      • src/test/resource
    • Maven vs Ant
      • Maven is formal convensions.
      • Ant isn't formal conventions.
      • Ant is procedural, Maven is declarative
      • Maven has a lifecycle(Ant를 잘 구성하면 lifecycle 구현이 가능하다)
    • Super POM(CoC)
      • 모든 프로젝트의 POM은 SUPER POM을 상속 받는다(All project POMs extends Super POM
    • Simple POM
    • POM.xml
      • POM 의 구조 설명
    • Library Search Path
      • Repository
        • Local repository
          • maven -> installation -> setting.xml
        • Remote repository
          • Repository with WebServer
          • Repository with Nexus
    • Repository
      • <repositories> ~~ </repositories>
      • snapshot 은 상속받지 않는 것으로 되어 있다.
    • Repository with WebServer
      • Maven은 인터넷이 안되면 쥐약
      • 인터넷이 안된다면, 자체적인 저장소를 생성하여 관리한다.
        • Local 저장소에서 복사하여 사용하는 방법
        • Webserver : Apache / document_root / 에 저장
        • apache 에 index를 볼 수 있도록 설정되어 있느냐? search가 안됨
    • Repository with Nexus
    • Nexus 관련 주의사항
      • 플러그인이 설치되지 않는 경우...
      • 넥서스를 이용하여 업로드한 경우
      • <pluginRepositories></pluginRepositories>를 선언해줘야한다.
      • maven_home/sonatype_work/nexus/storage 에 넣은 뒤에는 Nexus를 재기동 시켜줘야 한다.
    • Dependency Scope
      • 종류
        • compile(default)
        • provided : 컴파일과 유사하나 패키지에는 포함되지 않음
        • test
        • runtime
        • system
      • Specify dependency range
        • [,]
        • (,]
        • (,)
    • Transitive Scope
    • Conflict Resolution
      • Exclude Transitive scope
        • <exclusions> ~~ </exclusions>
    • Build LifeCycle
      • phases, goals, plugin
      • Lifecycle을 가지고 있는 장점 : 테스트를 돌릴 수 있다. TestCase를 작성해야 한다.
    • Developing java plugin for Maven
      • Maven Project 생성방법
      • Create Simple Mojo
    • Complie Configure
      • <plugin>
      • Maven plugin <source>, <target>
    • Skip Test
      • <configuration>
 <skipTest>
</configuration>
    • ProGuard
      • 역컴파일 방지기
      • Ddependency, plugin에 넣기
    • Site Reporting
    • PMD
      • plugin rulesets ㅇ르 정의해줘야 한다.
    • Maven Archetype
      • Maven을 이용하여 목적에 따라 Archetype들을 사용하여 지정할 수 있다.
      • 전자정부용 Archetype가 존재한다.
      • 초창기에 만들었는데 알려주지 않는 이유
      • 필요에 따라서 만들면 된다.
    • m2Eclipse
      • Maven projects를 만들고 첨가하는 경우
      • 의존성 저장 및 갱신
      • SCM 저장소로부터 maven Porject 추가
      • WTP에서 통합 -> WTP 쪽 Runtime 에서 오류가 발생, 톰캣 실행시 오류가 발생한다. 오류 가능성을 숙지하고 있을 것
      • 의존성 그래프를 프래픽적으로 추가
      • Maven 의 기능은 다양하다. 많이 써보고, 필요한 기능을 능숙하게 다루면 되겠지.
    • Maven 3.x new Feature
      • dependency 일 경우에는 프로젝트에만 영향을 미치지만...
      • dependency-management 를 구분해서 사용하라.
  • 결론 : 전자정부 프레임워크에는 Maven을 사용했다. 



최근 스프링 프레임워크를 기반으로 하는 프로젝트를 진행하게 되면서 메이븐Maven의 사용이 익숙해져가고 있다. <dependency> 를 추가하는 것만으로 관련한 라이브러리들이 주루룩 다운로드 되는 그 맛이란...

가까운 곳에서 이런 Maven에 대한 내용으로 발표가 있다고 해서 참가했다. 샌드위치 때문에 참가신청(?)을 한 사람들이 많았는가 보다. 160명분을 준비했는데 모두 소진되었다고 하는 걸 보니... 봐도 넓은 회의실을 꽉채우고 있었다. 냉방시설을 가동시킬 수 없어서 꽤나 답답하고 더웠다. 

발표는 한시간, Qn A 시간이 한시간 잡혀 있었지만, 발표내용 자체가 워낙 Maven에 대한 개괄적인 발표이다보니 딱히 무엇을 물어야할지 애매했다. 발표내용도 애매모호한 부분들이 많았다. 차라리, 전자정부 프레임워크를 적용한 프로젝트들에서 Maven과 관련되어 발생한 문제들의 예시와 해결방법을 30분 정도 추가해서 설명하는 건 어땠을까 하고 생각한다.
 
  전체적으로 많이 아쉬운 세미나였다.
  크게 개선되지는 않겠지....

  메이븐Maven에 대해 궁금하시다면
메이븐
카테고리 컴퓨터/IT > 프로그래밍/언어 > 웹프로그래밍 > 웹프로그래밍일반
지은이 박재성 (한빛미디어, 2011년)
상세보기
 이 책과
책의 저자가 운영하던 스터디 사이트 : http://www.javajigi.net/display/IDE/Maven
Maven Project 사이트 : http://maven.apache.org/
에서 필요한 정보들을 찾아보기 바란다.

+ Recent posts