The Agile Dependency Manager

Slides:



Advertisements
Similar presentations
ⓒ 2015 NHN Entertainment Corp. Django 로 만드는 초간단 블로그 시스템운영팀 김영태 개발환경 구축.
Advertisements

Jenkins for Javascript Development Env.. About me 윤지수
.Net History. Visual Studio.Net 2002 /.Net Framework 1.0 제품의 버전 / 특징 2002 년 - Visual Studio.Net 2002 /.Net Framework 1.0 첫 통합 개발 환경 - C# 언어 등장 (C# 1.0)
Eclipse 플러그인을 활용한 자바 /JSP 개발. Introduction 1.Eclipse 시작 2..metadata 디렉토리를 이용한 개발 환경 세팅 3.Eclipse JDT 4.WTP 5.Ant + Maven 6.Subversion 을 이용한 Team 협업 7.
Android 프로그램개발 환경. 학습 목표 ■ 교육 목표  JDK 설치  JDK 환경 설정  Eclipse 설치  Android SDK 설치  ADT Plug-in 설치  Android Virtual Device(AVD) 설치  Android 예제 프로그램.
2016 유성환 Hybrid MOBILE.
Security Solutions (S/W) - Fortify
이정훈 전한배. 1. What is Image Processing? 2. Image Making 3. Application 4. OpenCV Outline.
Oozie Web API 기능 테스트 이승엽.
1. 개발 시스템 개요.
자바 언어의 이해 Understanding of Java Programming
컴퓨터프로그래밍 1주차실습자료 Visual Studio 2005 사용법 익히기.
Image & Video processing
Safecode® 3.0 ㈜코드원 웹 애플리케이션 취약점 제거 및 관리 솔루션
How to build android Copyright © PJY All rights reserved.
김병곤 / Flamingo Community Meetup Flamingo 소개 김병곤 /
Sep Youn-Hee Han 웹서비스 컴퓨팅 수업을 위한 코딩 환경 준비 Sep Youn-Hee Han
Spring 4 기반의 RESTful Web Service 구현
Power Java 제2장 자바 개발 도구.
CUDA Setting : Install & Compile
CI서버 구축 목차 CI(Continuous Integration) 개요 CI 설치, 환경 구축 maven build
J2ME Install 부산대학교 인공지능 연구실.
9. Deploying mean applications
자동 소프트웨어 프로세스 구축을 위한 공개 소프트웨어 툴 체인 연구
나민영 서경대학교 컴퓨터공학과 CGVR Lab 같이만들어보자 5주차 OpenCV 설정 및 기초.
QT 프로그래밍 발표: 김래영.
JSP Programming with a Workbook
Java 기초 (Java JDK 설치 및 환경설정)
PHP + Eclipse + Google Code를 이용한 개발환경
CHAPTER 02 OpenCV 개요 PART 01 영상 처리 개요 및 OpenCV 소개.
25강. Security-I 보안 관련 프로젝트 생성 보안 관련 라이브러리 추가 보안 관련 설정 파일 만들기
C / C++ Programming in multi platform
Visual Basic .NET 처음 사용하기.
소프트웨어 분석과 설계 Struts2 & JBOSS 설치하기
22강. 파일 업로드 - 파일 업로드 라이브러리 설치 - 파일 업로드 프로그래밍 Lecturer Kim Myoung-Ho
전자정부 프레임워크 설치 매뉴얼 6조 08 이대우 08 홍정무 11 강성민 11 김혜지.
SOAP 클라이언트 개발 Guide
UNIT 02 JDK & Tools 설치 로봇 SW 컨텐츠 교육원 조용수.
2장 JSP 개발 환경 설정 이장에서 배울 내용 : JSP 페이지를 작성하기 위한 개발환경을 설정하고, 웹 어플리케이션 개발을 위해 반드시 이해하여야 할 웹 어플리케이션 폴더 구조에 대해 학습한다. 또한 요청된 JSP 페이지가 어떠한 처리과정을 거쳐 응답이 이루어지는가에.
Java의 정석 제 1 장 JDK설치 및 설정 Java 정석 남궁성 의
Android Studio 설치하기 PPD JSY.
Android studio로 Application 만들기.
Eclipse 플러그인을 활용한 자바/JSP 개발.
Java의 정석 제 1 장 JDK설치 및 설정 Java 정석 남궁성 의
Introduction to OrCAD Capture
반응형 웹 프로젝트
Maven 프로젝트 생성 및 JAX-RS (Java API for RESTful Services) 코딩
2장. JSP 프로그래밍을 위한 환경구성 제2장.
마을살이 제천덕산면을 중심으로 농촌공동체연구소장 한석주.
개발 환경 세팅.
IPython Notebook + Spark + TensorFlow on MacOS
실용주의 개발 프로세스 및 개발 환경 박재성 2008년 4월 26일.
Spring 프레임워크의 이해 – day1 자바지기.
제목소개 1. 안드로이드소개 2. 패킷캡쳐를 위한 환경 소개 3. ndk 소개 4. lipcap 5. 6.도식화 그림
요구사항 추적성을 위한 소프트웨어 프로세스 가시화 구축 자동화 (Automatic Construction of Software Process Visualization for Requirement Traceability) 홍익대학교 소프트웨어공학.
(개정판) 뇌를 자극하는 Red Hat Fedora 리눅스 서버 & 네트워크
ASP.NET AJAX / AJAX Control Toolkit 응용 2008 컴퓨터공학실험( I )
빌드 성공.
Python 및 OpenCV 설치.
오토베이스9 사용자 라이브러리 오토베이스 교육센터 그래픽 모듈 설정과 화면전환에 대하여 자세히 알아본다. <목차>
OpenCV 설정 2.21 만든이 딩딩.
STS 또는 Eclipse 에서 프로젝트를 Export 하고 Import 하는 방법
05. General Linear List – Homework
StyleCop 소개 SGS Framework 개발 팀.
01. 분산 파일 시스템의 개요 네트워크에 분산된 파일을 사용자가 쉽게 접근하고 관리할 수 있게 해준다.
전자정보통신 공학부 이승만 PSpice를 이용한 시뮬레이션 전자정보통신 공학부 이승만
Platform Builder 사용법.
M.B.TEAM 중간 발표 (5.18) 이 제걸 백 인호.
J2SE 설치 부산대학교 인공지능 연구실.
그 새로움과 효과적인 비용감소및 판매 마케팅 전략
Presentation transcript:

The Agile Dependency Manager 김병곤 fharenheit@gmail.com 20100911 v1.0

소개 JBoss User Group 대표 통신사에서 분산 컴퓨팅 기반 개인화 시스템 구축 Process Designer – ETL, Input/Output, Mining Algorithm, 통계… Apache Hadoop/Pig/HBase/Cassandra Distributed Cache Log Aggregator CEP(Complex Event Processing) Mining Algorithm – Association Rule, K-Means, CF, … SW마에스트로 엔터프라이즈 분과 멘토 – Hadoop 멘토링 다수 책 집필 및 번역 JBoss Application Server 5, EJB 2/3 Oreilly RESTful Java 번역중 2

최근 빌드 시스템의 변화 추세 Apache Ant Apache Ant + Ivy Apache Maven 3

Ant에서 Ivy의 필요성 프로젝트를 구성하는 각종 라이브러리의 관리 문제 각종 라이브러리간 종속성 문제 라이브러리를 자동으로 다운로드 해준다면…. 각종 라이브러리간 종속성 문제 이 라이브러리가 동작하려면 다른 라이브러리도 필요하다! 소스코드에 라이브러리가 포함되어 있는 문제 소스코드 Check Out이 너무 느리다 CVS/Subversion Repository가 커진다 4

Dependency Management Ivy란? Tool for Managing Project Dependencies = Apache Maven Dependency Management 5

Project의 Depedency 6

JDK Apache Ant Internet Line Ivy를 쓰려면? JDK Apache Ant Internet Line 7

Ivy를 동작시키기 위한 최소의 파일은? $PROJECT_HOME/ivy.xml (Ivy : Dependency) DEMO Ivy를 동작시키기 위한 최소의 파일은? $PROJECT_HOME/ivy.xml (Ivy : Dependency) $PROJECT_HOME/build.xml (Ant : Build Script) <ivy-module version="2.0"> <info organisation="org.apache" module="hello-ivy"/> <dependencies> <dependency org="commons-lang" name="commons-lang" rev="2.0"/> <dependency org="commons-cli" name="commons-cli" rev="1.0"/> </dependencies> </ivy-module> Ivy Style <project xmlns:ivy="antlib:org.apache.ivy.ant" name="hello-ivy" default="run"> ... <target name="resolve" description="--> retrieve dependencies with ivy"> <ivy:retrieve /> </target> </project> <dependency> <groupId>commons-lang</groupId> <artifactId>commons-lang</artifactId> <version>2.0</version> </dependency> Maven Style 8

Repository JAR 파일(Dependency)의 보관 창고 Maven Style Repository를 그대로 활용 Local – 자신만 사용할 수 있는 Repository Shared – 팀이 공유할 수 있는 Repository Public – 외부에 공개되어 누구나 사용할 수 있는 Repository 사내 Private Repository를 운영하는 것이 좀더 바람직 9

DEMO Atifactory, Nexus Maven Repository 10

Ivy의 Repository Configuration Local ivy.local.default.root=/opt/ivy/repository/local (Default) ${ivy.default.ivy.user.dir}/local Shared ivy.shared.default.root=/opt/ivy/repository/shared (Default) ${ivy.default.ivy.user.dir}/shared Public ibiblio Maven 2 Public Repository 사용자가 추가 가능(Artifactory or Nexus or …) 11

Multiple Resolver Repository에 접근하는 다양한 방법을 제공 Third Party 모듈은 Public, 내부 구현 모듈은 Private 개발한 모듈을 Local Repository에 두고자 하는 경우 모듈이 분산되어 있는 경우 $PROJECT_HOME/ivysettings.xml <ivysettings> <settings defaultResolver="chain-example"/> <resolvers> <chain name="chain-example"> <filesystem name="libraries"> <artifact pattern="${ivy.settings.dir}/repository/[artifact]-[revision].[ext]" /> </filesystem> <ibiblio name="ibiblio" m2compatible="true" /> </chain> </resolvers> </ivysettings> commons-lang-2.0.jar 12

Custom Repository 사내 Maven Repository가 있다면? DEMO Repository Configuration Custom Repository 사내 Maven Repository가 있다면? <?xml version="1.0" encoding="UTF-8"?> <ivysettings> <settings defaultResolver="chained"/> <resolvers> <chain name="chained"> <ibiblio name="java.net2" m2compatible="true" root="http://download.java.net/maven/2/"/> <ibiblio name="jboss" m2compatible="true" root="http://repository.jboss.org/maven2"/> <ibiblio name="ibiblio" m2compatible="true"/> </chain> </resolvers> </ivysettings> 13

Dependency Exclusion 불필요한 Dependency를 빼고 싶은 경우 DEMO RESTful Java Example Dependency Exclusion 불필요한 Dependency를 빼고 싶은 경우 <?xml version="1.0" encoding="UTF-8"?> <ivy-module version="2.0” xmlns:xsi="hssp://www.w3.org/2001/XMLSchema-inssance” xsi:noNamespaceSchemaLocasion="hssp://ans.apache.org/ivy/schemas/ivy.xsd"> <info organisasion="com.jbossug.jaxrs" module="jaxrs-examples"/> <dependencies> <dependency org="log4j" name="log4j" rev="1.2.16”> <exclude org="javax.mail"/> <exclude org="javax.activation"/> <exclude org="org.apache.geronimo.specs"/> </dependency> <dependency org="org.slf4j" name="slf4j-log4j12" rev="1.5.6”/> </dependencies> </ivy-module> 14

Ivy Integration : Step 1 Ivy Download & Install Ant 내에서 Ivy를 동작하도록 하기 위한 설정 <property name="ivy.jar.dir" value="${basedir}/ivy"/> <property name="ivy.jar.file" value="${ivy.jar.dir}/ivy.jar"/> <!-- Ivy Download --> <target name="download-ivy" unless="skip.download"> <mkdir dir="${ivy.jar.dir}"/> <echo message="installing ivy..."/> <get src="http://repo1.maven.org/maven2/org/apache/ivy/ivy/2.1.0/ivy-2.1.0.jar" dest="${ivy.jar.file}" usetimestamp="true"/> </target> <!-- Ivy Installation --> <target name="install-ivy" depends="download-ivy"> <path id="ivy.lib.path"> <fileset dir="${ivy.jar.dir}" includes="*.jar"/> </path> <taskdef resource="org/apache/ivy/ant/antlib.xml" uri="antlib:org.apache.ivy.ant" classpathref="ivy.lib.path"/> 15

Ivy Integration : Step 2 Dependency Resolve & Build <property name="lib.dir" value="${basedir}/lib"/> <path id="lib.path.id"> <pathelement location="${build.dir}" /> <fileset dir="${lib.dir}"> <include name="*.jar" /> </fileset> </path> <target name="resolve"> <ivy:retrieve /> </target> <target name="go" depends="install-ivy, resolve"> <javac srcdir="${src.dir}" destdir="${build.dir}" classpathref="lib.path.id"/> <java classname="example.Hello"> <classpath> <path refid="lib.path.id"/> </classpath> </java> 16

IvyIDE Eclipse 기반 Ivy 지원 도구 ivy.xml 파일에 정의한 dependency를 Eclipse에서 관리 Dependency를 Java 프로젝트의 CLASSPATH에 추가 각종 파일의 편집 기능 및 자동 완성 기능 제공 17

IvyIDE 18

IvyIDE 19

IvyIDE 20

참고 Sonatype Nexus 동영상 IvyIDE Ivy Official Site 발표 자료(Naver 개발자 센터) http://vimeo.com/1875558 IvyIDE http://ant.apache.org/ivy/ivyde Ivy Official Site http://ant.apache.org/ivy 발표 자료(Naver 개발자 센터) http://dev.naver.com/projects/edward/src http://dev.naver.com/projects/edward/download 21

Q & A Q & A 22