110525_egovFramework 세미나
- 제목 : Dive into Maven
- 장소 : 청계광장 정보화진흥원 지하1층 세미나실
- 발표내용
- 표준프레임워크 오픈커뮤니티를 통해서 프레임워크연구개발이 활성화되길 바란다.
- Maven is ...
- 프로젝트 관리(Project Management) 와 빌드 자동화(Build Automation)
- 2002년, Apache Turbine 에서 비롯되었다.
- Maven 도입이유
- 라이브러리 관리의 문제점
- commons.fileupload 1.0 버그 -> 1.1 해결
- classpath : 같은 패키지 상에서는 제일 상단에 존재하는 패키지 부터 실행됨
- commons.fileupload 1.0 버그 -> 1.1 해결
- 오픈소스를 사용하는 경우 의존성을 지니게 되는 라이브러리
- 자유도(Ant 확장성이 뛰어남, Maven 정형화 되어 있음)
- 라이브러리 관리의 문제점
- 프로젝트 관리(Project Management) 와 빌드 자동화(Build Automation)
- Maven Simple Project
- project home : pom.xml
- src/main/java
- src/main/resource
- src/test/java
- src/test/resource
- project home : pom.xml
- Maven vs Ant
- Maven is formal convensions.
- Ant isn't formal conventions.
- Ant is procedural, Maven is declarative
- Maven has a lifecycle(Ant를 잘 구성하면 lifecycle 구현이 가능하다)
- Maven is formal convensions.
- Super POM(CoC)
- 모든 프로젝트의 POM은 SUPER POM을 상속 받는다(All project POMs extends Super POM
- 모든 프로젝트의 POM은 SUPER POM을 상속 받는다(All project POMs extends Super POM
- Simple POM
- POM.xml
- POM 의 구조 설명
- POM 의 구조 설명
- Library Search Path
- Repository
- Local repository
- maven -> installation -> setting.xml
- maven -> installation -> setting.xml
- Remote repository
- Repository with WebServer
- Repository with Nexus
- Repository with WebServer
- Local repository
- Repository
- Repository
- <repositories> ~~ </repositories>
- snapshot 은 상속받지 않는 것으로 되어 있다.
- <repositories> ~~ </repositories>
- Repository with WebServer
- Maven은 인터넷이 안되면 쥐약
- 인터넷이 안된다면, 자체적인 저장소를 생성하여 관리한다.
- Local 저장소에서 복사하여 사용하는 방법
- Webserver : Apache / document_root / 에 저장
- apache 에 index를 볼 수 있도록 설정되어 있느냐? search가 안됨
- Local 저장소에서 복사하여 사용하는 방법
- Maven은 인터넷이 안되면 쥐약
- Repository with Nexus
- Nexus 관련 주의사항
- 플러그인이 설치되지 않는 경우...
- 넥서스를 이용하여 업로드한 경우
- <pluginRepositories></pluginRepositories>를 선언해줘야한다.
- maven_home/sonatype_work/nexus/storage 에 넣은 뒤에는 Nexus를 재기동 시켜줘야 한다.
- 플러그인이 설치되지 않는 경우...
- Dependency Scope
- 종류
- compile(default)
- provided : 컴파일과 유사하나 패키지에는 포함되지 않음
- test
- runtime
- system
- compile(default)
- Specify dependency range
- [,]
- (,]
- (,)
- [,]
- 종류
- Transitive Scope
- Conflict Resolution
- Exclude Transitive scope
- <exclusions> ~~ </exclusions>
- <exclusions> ~~ </exclusions>
- Exclude Transitive scope
- Build LifeCycle
- phases, goals, plugin
- Lifecycle을 가지고 있는 장점 : 테스트를 돌릴 수 있다. TestCase를 작성해야 한다.
- phases, goals, plugin
- Developing java plugin for Maven
- Maven Project 생성방법
- Create Simple Mojo
- Maven Project 생성방법
- Complie Configure
- <plugin>
- Maven plugin <source>, <target>
- <plugin>
- Skip Test
- <configuration>
<skipTest>
</configuration>
- <configuration>
<skipTest>
</configuration>
- ProGuard
- 역컴파일 방지기
- Ddependency, plugin에 넣기
- 역컴파일 방지기
- Site Reporting
- PMD
- plugin rulesets ㅇ르 정의해줘야 한다.
- plugin rulesets ㅇ르 정의해줘야 한다.
- Maven Archetype
- Maven을 이용하여 목적에 따라 Archetype들을 사용하여 지정할 수 있다.
- 전자정부용 Archetype가 존재한다.
- 초창기에 만들었는데 알려주지 않는 이유
- 필요에 따라서 만들면 된다.
- Maven을 이용하여 목적에 따라 Archetype들을 사용하여 지정할 수 있다.
- m2Eclipse
- Maven projects를 만들고 첨가하는 경우
- 의존성 저장 및 갱신
- SCM 저장소로부터 maven Porject 추가
- WTP에서 통합 -> WTP 쪽 Runtime 에서 오류가 발생, 톰캣 실행시 오류가 발생한다. 오류 가능성을 숙지하고 있을 것
- 의존성 그래프를 프래픽적으로 추가
- Maven 의 기능은 다양하다. 많이 써보고, 필요한 기능을 능숙하게 다루면 되겠지.
- Maven projects를 만들고 첨가하는 경우
- Maven 3.x new Feature
- dependency 일 경우에는 프로젝트에만 영향을 미치지만...
- dependency-management 를 구분해서 사용하라.
- dependency 일 경우에는 프로젝트에만 영향을 미치지만...
- 결론 : 전자정부 프레임워크에는 Maven을 사용했다.
최근 스프링 프레임워크를 기반으로 하는 프로젝트를 진행하게 되면서 메이븐Maven의 사용이 익숙해져가고 있다. <dependency> 를 추가하는 것만으로 관련한 라이브러리들이 주루룩 다운로드 되는 그 맛이란...
가까운 곳에서 이런 Maven에 대한 내용으로 발표가 있다고 해서 참가했다. 샌드위치 때문에 참가신청(?)을 한 사람들이 많았는가 보다. 160명분을 준비했는데 모두 소진되었다고 하는 걸 보니... 봐도 넓은 회의실을 꽉채우고 있었다. 냉방시설을 가동시킬 수 없어서 꽤나 답답하고 더웠다.
발표는 한시간, Qn A 시간이 한시간 잡혀 있었지만, 발표내용 자체가 워낙 Maven에 대한 개괄적인 발표이다보니 딱히 무엇을 물어야할지 애매했다. 발표내용도 애매모호한 부분들이 많았다. 차라리, 전자정부 프레임워크를 적용한 프로젝트들에서 Maven과 관련되어 발생한 문제들의 예시와 해결방법을 30분 정도 추가해서 설명하는 건 어땠을까 하고 생각한다.
전체적으로 많이 아쉬운 세미나였다.
크게 개선되지는 않겠지....
메이븐Maven에 대해 궁금하시다면
|
책의 저자가 운영하던 스터디 사이트 : http://www.javajigi.net/display/IDE/Maven
Maven Project 사이트 : http://maven.apache.org/
에서 필요한 정보들을 찾아보기 바란다.
'Programming' 카테고리의 다른 글
[JCO] 2번째 Track : 도메인주도 개발(DDD) (0) | 2011.06.20 |
---|---|
협업을 하면서 느낀 작은 깨달음 (0) | 2011.06.09 |
스프링노트에서 작성한 글을 보냈을 때의 문제점... (0) | 2011.04.04 |
개발을 하면서 경험하게 될 기록을 남기자. (0) | 2011.03.31 |
자바 프로젝트 의존성 라이브러리 해결 빌드 Maven을 손에 익히며 (0) | 2011.03.29 |