Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Maven의 이해

8,176 views

Published on

Published in: Technology
  • I found this program very useful. The topics are laid out clearly for ease of reference. It is nothing like your usual revision guide because Jeevan's is a well-defined strategy; he shows you exactly what to do to achieve a top grade in GCSE maths, in a step-by-step format. He addresses issues such as how much time should be spent on revision, exam technique, tips for scoring 100%, motivation, freeing up 50% of your time etc. unlike a normal revision guide which is just packed with theory. He also explains concepts with more detail. For instance, I used to find solving equations tricky but after reading his section on algebra, I fully understand how to solve an equation. The DVDs are great because he teaches concepts both verbally and visually which is always helpful! ■■■ http://t.cn/AirraVnG
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • Download or read that Ebooks here ... ......................................................................................................................... DOWNLOAD FULL PDF EBOOK here { http://bit.ly/2m6jJ5M } ......................................................................................................................... Download EPUB Ebook here { http://bit.ly/2m6jJ5M } ......................................................................................................................... Download Doc Ebook here { http://bit.ly/2m6jJ5M } ......................................................................................................................... .........................................................................................................................
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • If you want to download or read this book, Copy link or url below in the New tab ......................................................................................................................... DOWNLOAD FULL PDF EBOOK here { http://bit.ly/2m6jJ5M } ......................................................................................................................... Download EPUB Ebook here { http://bit.ly/2m6jJ5M } ......................................................................................................................... Download Doc Ebook here { http://bit.ly/2m6jJ5M } ......................................................................................................................... .........................................................................................................................
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • DOWNLOAD THIS BOOKS INTO AVAILABLE FORMAT (Unlimited) ......................................................................................................................... ......................................................................................................................... Download Full PDF EBOOK here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... Download Full EPUB Ebook here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... ACCESS WEBSITE for All Ebooks ......................................................................................................................... Download Full PDF EBOOK here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... Download EPUB Ebook here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... Download doc Ebook here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... ......................................................................................................................... ......................................................................................................................... .............. Browse by Genre Available eBooks ......................................................................................................................... Art, Biography, Business, Chick Lit, Children's, Christian, Classics, Comics, Contemporary, Cookbooks, Crime, Ebooks, Fantasy, Fiction, Graphic Novels, Historical Fiction, History, Horror, Humor And Comedy, Manga, Memoir, Music, Mystery, Non Fiction, Paranormal, Philosophy, Poetry, Psychology, Religion, Romance, Science, Science Fiction, Self Help, Suspense, Spirituality, Sports, Thriller, Travel, Young Adult,
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • DOWNLOAD THIS BOOKS INTO AVAILABLE FORMAT (Unlimited) ......................................................................................................................... ......................................................................................................................... Download Full PDF EBOOK here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... Download Full EPUB Ebook here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... ACCESS WEBSITE for All Ebooks ......................................................................................................................... Download Full PDF EBOOK here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... Download EPUB Ebook here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... Download doc Ebook here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... ......................................................................................................................... ......................................................................................................................... .............. Browse by Genre Available eBooks ..................................................................................................................................... Art, Biography, Business, Chick Lit, Children's, Christian, Classics, Comics, Contemporary, CookeBOOK Crime, eeBOOK Fantasy, Fiction, Graphic Novels, Historical Fiction, History, Horror, Humor And Comedy, Manga, Memoir, Music, Mystery, Non Fiction, Paranormal, Philosophy, Poetry, Psychology, Religion, Romance, Science, Science Fiction, Self Help, Suspense, Spirituality, Sports, Thriller, Travel, Young Adult,
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

Maven의 이해

  1. 1. Maven의 이해박성재(http://blue-hatch.blogspot.kr/)
  2. 2. 진행 순서• Maven의 이해• Simple Weather Project 작성 실습• Multi Module Project 작성 실습
  3. 3. What is Maven?• 프로젝트의 생산성 향상• 가시성 향상• 프로젝트 관리 및 이해 도구– Builds– Documentation– Reporting– Dependencies– SCMs– Releases– Distribution
  4. 4. Mavens Objectives• 빌드 프로세스를 쉽게• 균일한 빌드 시스템 제공– POM(Project Object Model)과 플러그인 세트• 양질의 프로젝트 정보 제공– Change log, Cross ref. sources, Dependencylist, Unit test reports• 개발을 위한 Best practice 가이드라인 제공
  5. 5. What is Maven Not?• Maven is a site and documentation tool• Maven extends Ant to let you downloaddependencies• Maven is a set of reusable Ant scriptlets
  6. 6. Ant 와의 비교<project name="my-project" default="dist" basedir="."><description>simple example build file</description><!-- set global properties for this build --><property name="src" location="src/main/java"/><property name="build" location="target/classes"/><property name="dist" location="target"/><target name="init"><!-- Create the time stamp --><tstamp/><!-- Create the build directory structure used by compile --><mkdir dir="${build}"/></target><target name="compile" depends="init"description="compile the source " ><!-- Compile the java code from ${src} into ${build} --><javac srcdir="${src}" destdir="${build}"/></target><target name="dist" depends="compile"description="generate the distribution" ><!-- Create the distribution directory --><mkdir dir="${dist}/lib"/><!-- Put everything in ${build} into the MyProject-${DSTAMP}.jar file--><jar jarfile="${dist}/lib/MyProject-${DSTAMP}.jar"basedir="${build}"/></target><target name="clean"description="clean up" ><!-- Delete the ${build} and ${dist} directory trees --><delete dir="${build}"/><delete dir="${dist}"/></target></project><project><modelVersion>4.0.0</modelVersion><groupId>org.sonatype.mavenbook</groupId><artifactId>my-project</artifactId><version>1.0-SNAPSHOT</version></project>A simple Ant build.xml FileA simple Maven pom.xml File
  7. 7. Ant 와의 비교(계속)• Apache Ant– 공통적인 프로젝트 디렉토리 구조와 같은 공식적인 관례가 없음. 소스 위치와 산출물 위치 지정 필요.– 절차적. “컴파일하고 복사하고 압축한다” 같은지시를 해야 함.– Goal과 goal의 디펜던시를 정의할 수 있는 라이프사이클이 없음.
  8. 8. Ant 와의 비교 (계속)• Apache Maven– 관례를 가짐. 소스는 어디에 있는지, 바이트코드는 target/classes, target에 jar 생성– 선언적. Pom.xml 파일 생성 후 기본 디렉토리에 소스를 위치하면 나머지는 maven이 알아서함– 라이프사이클을 가짐. mvn install을 실행하면라이프사이클이 완료될 때 까지 연속적으로 단계를 실행함.
  9. 9. First Maven Project$ mvn archetype:generate -DgroupId=com.mycompany.app -DartifactId=my-app -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false$ cd my-app$ mvn install$ java -cp target/my-app-1.0-SNAPSHOT.jar com.mycompany.app.Apphttp://maven.apache.org/guides/getting-started/maven-in-five-minutes.html프로젝트 생성프로젝트 빌드와 패키징프로젝트 실행
  10. 10. CoC(Convention overConfiguration)• 시스템, 라이브러리, 프레임워크는 별도의 설정 없이 „바로 실행‟될 수 있어야 한다• EJB의 복잡한 설정에 대항하여 Ruby on Rails,EJB3등과 같이 „바로 실행‟원칙을 바탕으로시작됨• 개발자는 어플리케이션에서 관습적이지 않은면만 정의할 필요가 있다• 수많은 설정에서 개발자를 해방• Ruby on Rails, Grails, Spring, JUnit, JbossSeam, CakePHP, …
  11. 11. Conceptual Model of a "Project"• 의존성 관리– 그룹 식별자, 산출물 식별자, 버전으로 구성된 중복되지 않은 코디네이트들을 프로젝트에 적용• 원격 저장소– 의존성 관리와 관련한 메이븐 산출물들의 저장소• 빌드 로직의 전역적인 재사용– 플러그인 동작 시 외부 파일 참조하지 않음• 툴에 대한 이식성과 통합– 이클립스, 넷빈즈, IntelliJ 같은 툴의 프로젝트 정보 표준화• 프로젝트 산출물의 쉬운 검색과 필터링– 넥서스(Nexus)와 같은 툴은 POM안의 정보 저장소를 사용하여 저장소의 내역들을 인덱스하고 검색을 허용함
  12. 12. POM(Project Object Model)<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.0http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.mycompany.app</groupId><artifactId>my-app</artifactId><version>1.0-SNAPSHOT</version><packaging>jar</packaging><name>my-app</name><url>http://maven.apache.org</url><dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>3.8.1</version><scope>test</scope></dependency></dependencies></project>
  13. 13. POM• POM Relationships– 다른 프로젝트와의 의존성 정의. 코디네이트 정의. 부모, 서브 모듈 정의.• General project information– 프로젝트 이름, URL, 조직, 개발자, 기여자, 라이선스• Build settings– Maven build 커스터마이징. 소스, 테스트 코드 위치 변경. 플러그인 추가, 플러그인 goal을 라이프사이클에지정• Build environment– Development, Production 등의 프로파일 정의
  14. 14. Super POM• 모든 maven 프로젝트는 묵시적으로 SuperPOM을 상속 받음– http://maven.apache.org/guides/introduction/introduction-to-the-pom.html#Super_POM근간이 되는 Super POM
  15. 15. Effective POM• Super POM, 부모 POM과의 조합에 의해실제로 동작하는 POM이 된다.$ mvn help:effective-pom
  16. 16. Plugins and Goals• Maven은 실제로 MavenPlugin들의 핵심framework 일 뿐이다• Compile, jar 생성 등의 실제 액션은 모두 plugin이담당함• Plugin은 하나 이상의goal들의 집합임• Goal은 작업의 단위• $mvn pluginId:goalId
  17. 17. Maven Lifecycle
  18. 18. Maven Lifecycle(계속)$ mvn resources:resources compiler:compile resources:testResources compiler:testCompile surefire:test jar:jar install:install각 단계가 실행될 때 연결되는 goal$ mvn install 과 동일한 결과
  19. 19. Maven Lifecycle(계속)
  20. 20. Maven Coordinates• groupId– 조직, 회사, 팀– com.nkia.cygnus• artifactId– 프로젝트를 표현• version– 프로젝트 진행 중일 경우 SNAPSHOT을 붙힘• Packaging– war, jar
  21. 21. Maven Repositories• 중앙 저장소– http://repo1.maven.org/maven2– 개발자 임의로 배포 불가• 로컬 저장소– C:UsersUSERNAME.m2repository– Maven 빌드 시 다운로드 되는 저장소• 원격 저장소– 사내 원격 저장소– 스프링 소스에서 제공하는 외부(공개) 저장소• 저장소 디렉토리 구조– /<groupId>/<artifactId>/<version>/<artifactId>-<version>.<packaging>– /org/apache/commons/commons-email/1.1/ commons-email-1.1.jar
  22. 22. Maven Repositories(계속)인트라넷 인터넷
  23. 23. Maven 중앙 저장소 검색• http://mvnrepository.com• http://search.maven.org/
  24. 24. Maven의 의존성 관리• pom.xml의 <dependencies> 에서 설정• 의존성 전이(transitive dependency)– 1. A -> B– 2. B -> A 관계가 없다– 3. B -> C– A와 C는 직접적인 연관관계가 없지만 함수 종속이발생하여 A -> C라는 의존성 전이가 성립• 프로젝트에서 직접적으로 사용하는 라이브러리의 의존성만 정의하면 나머지 의존성은maven이 묵시적으로 추가함
  25. 25. Maven의 의존성 관리(계속)$ mvn dependency:resolve$ mvn dependency:tree의존성 목록 확인의존성 관계 구조 확인$ mvn dependency:analyze의존성 분석 : 바이트 코드 분석을 통해 의존성 문제 제시- 사용되었지만 정의 되지 않은 의존성- 사용되지 않았지만 정의된 의존성
  26. 26. 의존성 버전 범위• (, ) 배제 한정자(Exclusive quantifiers)• [, ] 포함 한정자(Inclusive quantifers)<dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>[3.8,4.0)</version><scope>test</scope></dependency>Junit 3.8이상 4.0미만<dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>[,3.8.1)</version><scope>test</scope></dependency>Junit 3.8.1 미만
  27. 27. 의존성 충돌 해결• 다른 프로젝트의 의존성 전이를 제거<dependencies><dependency><groupId>org.hibernate</groupId><artifactId>hibernate</artifactId><version>3.2.5.ga</version><exclusions><exclusion><groupId>javax.transaction</groupId><artifactId>jta</artifactId></exclusion></exclusions></dependency><dependency><groupId>org.apache.geronimo.specs</groupId><artifactId>geronimo-jta_1.1_spec</artifactId><version>1.1</version></dependency></dependencies>의존성 전이 배제와 교체
  28. 28. 의존성 Scope• compile– 기본 스코프. 모든 상황에서 classpath에 추가되며 패키지에 포함된다.• provided– Compile시에는 classpath에 포함되지만. 패키지에 포함되지 않는다.– Servlet API JAR 같은 경우• runtime– Runtime시에만 필요한 경우– JDBC Driver 같은 경우• test– 테스트 컴파일과 실행 시 만 동작• system– 로컬 파일의 jar 경로 지정 필요– 패키지에 포함되지 않는다– 이 스코프는 권장되지 않는다. Public 혹은 커스텀 메이븐 저장소에서 디펜던시를 참조하도록 노력하자.
  29. 29. 의존성 스코프와 의존성 전이의 관계
  30. 30. 사이트 생성과 리포팅• 프로젝트 문서와 리포트 생성• target/site 디렉토리에 결과물 생성• Site descriptor 수정을 통해 레이아웃을 정의할 수 있음– src/site/site.xml• http://maven.apache.org/guides/mini/guide-site.html$ mvn site$ mvn site:run
  31. 31. Archetype• Maven 프로젝트 템플릿 툴킷• “원래 모델이나 형태를 따르는 다른 유사한 것을 패턴화한 것(프로토타입)”• 간단한 스윙 어플리케이션에서 복잡한 웹 어플리케이션에 이르기 까지 수많은 archetype을 활용할 수있다.• 표준 프레임워크와 의존 관계가 있는 라이브러리• 프로젝트에 공통으로 필요한 설정 파일• 표준 프레임워크 기반으로 작성한 샘플 소스• 사내 저장소에 프로젝트 아키타입 생성 및 배포$ mvn archetype:generate
  32. 32. Simple Weather Project• http://www.sonatype.com/books/mvnex-book/reference/customizing-sect-creating-simple-weather.html
  33. 33. Simple Web Application• http://www.sonatype.com/books/mvnex-book/reference/web.html
  34. 34. Multi Module Project• http://www.sonatype.com/books/mvnex-book/reference/multimodule.htmlsimple-parentsimple-weather simple-webappSuper POM 상속모듈
  35. 35. Multi Module Enterprise Project• http://www.sonatype.com/books/mvnex-book/reference/multimodule-web-spring.html
  36. 36. Maven 활용 계획• Cygnus modularity– Sub project– Library– Project를 나누어 개발한 후 제품 패키징• OSGi Bundle– Maven을 통한 feature install• 프로젝트 사이트 문서화
  37. 37. Challenges• 빌드 프로파일– http://www.sonatype.com/books/mvnref-book/reference/assemblies.html– http://gt1000.tistory.com/entry/Maven-8%EC%9E%A5-%EB%A9%94%EC%9D%B4%EB%B8%90-%ED%94%84%EB%A1%9C%ED%8C%8C%EC%9D%BC-%EB%B0%B0%ED%8F%AC• Maven 어셈블리– http://www.sonatype.com/books/mvnref-book/reference/assemblies.html• POM 최적화 및 리팩토링– http://www.sonatype.com/books/mvnex-book/reference/optimizing.html• Maven 사내 저장소 설치 및 활용– http://gt1000.tistory.com/entry/Maven-11%EC%9E%A5-%EB%A9%94%EC%9D%B4%EB%B8%90-%EC%82%AC%EB%82%B4-%EC%A0%80%EC%9E%A5%EC%86%8C-%EC%84%A4%EC%B9%98-%EB%B0%8F-%ED%99%9C%EC%9A%A9• Site 생성– http://www.sonatype.com/books/mvnref-book/reference/site-generation.html
  38. 38. References• Maven by Example– http://www.sonatype.com/books/mvnex-book/reference/• Maven: The Complete Reference– http://www.sonatype.com/books/mvnref-book/reference/• Developing with Eclipse and Maven– http://www.sonatype.com/books/m2eclipse-book/reference/• 자바 세상의 빌드를 이끄는 메이븐– http://gt1000.tistory.com/category/maven

×