1 / 37

TSA System Development MAVEN

TSA System Development MAVEN. MRACE corp. holyjohn@mrace.co.kr. Maven 이란 ?. Maven 이 지원하는 작업은 다음과 같다 . Builds Documentation Reporting Dependencies SCMs Releases Distribution. MAVEN 설치. http://maven.apache.org 에서 Maven 최신 버전을 다운받는다 . apache-maven-2.2.1-bin.zip 을 받아서 압축풀고 설치

neci
Download Presentation

TSA System Development MAVEN

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. TSA System DevelopmentMAVEN MRACE corp. holyjohn@mrace.co.kr

  2. Maven 이란? Maven이 지원하는 작업은 다음과 같다. • Builds • Documentation • Reporting • Dependencies • SCMs • Releases • Distribution

  3. MAVEN 설치 • http://maven.apache.org에서 Maven 최신 버전을 다운받는다. • apache-maven-2.2.1-bin.zip을 받아서 압축풀고 설치 • 환경변수 설정 • M2_HOME=d:\apache-maven-2.2.1 • M2 = %M2_HOME%\bin • Path=%M2%;%Path% • 정상설치 확인 • mvn -version

  4. Maven 기반프로젝트 생성 • Template Java 프로젝트 D:\java> mvnarchetype:create -DgroupId=net.javajigi -DartifactId=mysample • Template Webapp프로젝트 D:\java> archetype:create -DgroupId=net.javajigi -DartifactId=mywebapp -DarchetypeArtifactId=maven-archetype-webapp

  5. Maven 프로젝트 설정 • Maven 기반 프로젝트를 생성할 경우 생성된 프로젝트 하위에 pom.xml 파일이 생성된다. <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.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>net.javajigi</groupId> <artifactId>mysample</artifactId> <packaging>jar</packaging> <version>1.0-SNAPSHOT</version> <name>mysample</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>

  6. pom.xml 파일 • project : pom.xml 파일의 최상위 엘리먼트 • modelVersion : POM model의 버전. • groupId : 프로젝트를 생성하는 조직의 고유 아이디를 결정한다. 일반적으로 Full 도메인 이름을 사용하는 경우가 많다. • artifactId : 해당 프로젝트에 의하여 생성되는 artifact의 고유 아이디를 결정한다. Maven을 이용하여 pom.xml을 빌드할 경우 다음과 같은 규칙으로 artifact가 생성된다. artifactid-version.packaging. 위 예의 경우 빌드할 경우 mysample-1.0-SNAPSHOT.jar 파일이 생성된다. • packaging : 해당 프로젝트를 어떤 형태로 packaging 할 것인지 결정한다. jar, war, ear 등이 해당된다. • version : 프로젝트의 현재 버전. 추후 살펴보겠지만 프로젝트가 개발 중일 때는 SNAPSHOT을 접미사로 사용한다. Maven의 버전 관리 기능은 라이브러리 관리를 편하게 한다. • name : 프로젝트 이름 • url : 프로젝트 사이트가 있다면 사이트 URL을 등록하는 것이 가능하다.

  7. Maven의 디폴트 Goals • compile goal • d:\myproject\>mvn compile • test-compile Goal : src/main/java 디렉토리에 위치한 구현 코드만 컴파일 • d:\myproject\> mvn test-compile • test Goal : 테스트 코드 이용한 구현 코드를 테스트 • d:\myproject\> mvn test • Package : 컴파일한 구현 코드를 jar, war로 압축 • d:\myproject\> mvn package

  8. MavenRepository에 등록 • local Repository에 등록 • mvn install • Remote Repository에 등록 • mvn deploy • Goal의 의존관계 • compile, test-compile, test, package, install, deploy 순이다

  9. 기존 공유 라이브러리의 문제점 지금까지 외부 라이브러리를 관리하는 방법은 다음과 같은 문제점을 가지고 있다. • 라이브러리의 추가 및 버전 변경이 불편하다. • 버전 관리 시스템(CVS, SVN)을 이용하여 공유할 파일 크기가 커진다. • 현재 사용하고 있는 라이브러리의 버전을 파악하기 힘들다. • 컴파일, 배포, 테스트할 때만 사용하는 라이브러리를 분리하기 힘들다. • WTP의 경우 자동 클래스 패스 기능이 너무 느리다. • 하나의 애플리케이션을 개발할 때 외부 라이브러리의 의존도가 어떻게 변화하고 있는지 살펴보면 다음과 같다.

  10. Maven의 Dependency 관리 기능 • pom.xml 파일의 dependencies 엘리먼트를 사용하여 외부 라이브러리와의 의존관계를 설정한다. • <dependencies> 엘리먼트가 의미하듯 엘리먼트 하위에 여러 개의 <dependency> 엘리먼트를 가질 수 있다. • "mvn compile" 명령을 실행하면 junit 3.8.1 버전의 jar 파일이 자동으로 Local Repository 디렉토리에 모든 Dependency 라이브러리가 다운 받아진다. 위와 같이 pom.xml 파일을 설정한다면 다음 위치에 jar 파일이 다운 받아진다. <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency> </dependencies>

  11. Maven의 중앙 Repository • Maven 이 Dependency 라이브러리를 관리 가능한 것은Maven이 오픈 소스 라이브러리에 대한 중앙 Repository를 유지하기 때문이다. pom.xml 파일에 특별히 Repository를 설정할지 않을 경우 Maven의 중앙 Repository는 http://www.ibiblio.org/maven/ 이다. http://mvnrepository.com/에서 Maven에서 사용 가능한 라이브러리를 검색할수 있다. • 좌측의 <dependency> 엘리먼트를 추가하게 되면 spring 프레임워크 라이브러가Local Repository에 자동으로 다운되어 Maven이 빌드할 때 사용되게 된다. 클래스패스에 하는 추가적인 작업을 할 필요도 없다. Maven은 pom.xml 설정 파일의 <dependency> 엘리먼트 정보를 이용하여 Local Repository에서 해당 jar 파일을 찾게 되는 것이다.

  12. Maven의 Local Repository • Maven을 사용할 때 Local Repository의 경로는 디폴트로 USER_HOME/.m2/repository가 된다.Local Repository의 경로를 바꾸고자 한다면 다음과 같은 방법으로 변경한다. • MAVEN_HOME/conf 디렉토리 하위에 settings.xml 파일을 열어보면 localRepository엘리먼트가 주석처리 되어 있는 것을 확인할 수 있다. 주석처리되어 있는 localRepository를 다음과 같이 변경해 주면 된다. <localRepository>D:/Repositories/MavenRepository</localRepository>

  13. Dependency 라이브러리의 Scope Maven은 사용하고 있는 라이브러리의 성격에 따라 Scope를 지정하는 것이 가능하다. 예를 들어 junit의 경우 단순히 테스트를 위해서만 사용되고 실제 배포될 때는 필요없는 라이브러리이다. • compile : scope를 설정할지 않았을 때의 디폴트 scope이다. 컴파일 시에도 사용되며, 배포시에도 같이 배포되어야 하는 라이브러리이다. • provided : JDK가 컨테이너에 의하여 제공되는 라이브러리이다. 예를 들어 servlet.jar의 경우 Servlet컨테이너에 의하여 제공되기 때문에 이 scope를 사용한다. • runtime : 이 scope는 말 그대로 컴파일 시에는 사용되지 않지만 애플리케이션을 실행할 때 사용되는 라이브러리일 경우 설정한다. • test : 테스트를 위해서만 사용하는 라이브러리이다. • system : 이 scope는 provided와 비슷하다. 단지 우리가 직접 jar 파일을 제공해야 한다. 따라서 이 scope의 jar 파일은 repository에서 관리되지 않을 수도 있다. MavenDependency 라이브러리를 관리하는 방법에 대하여 살펴보았다. Maven을 사용하면서 가장 큰 도움을 얻을 수 있는 부분이며, 정말 유용한 기능이다. 현재 Ant를 사용하고 있다면 Antlib을 사용해서 Maven의 Dependency 기능을 이용하는 것이 가능하다. 그러므로 외부 라이브러리 관리에 불편함을 겪고 있는 개발자라면 Maven의 Dependency 기능을 꼭 사용해보기 바란다.

  14. m2eclipse 설치 • Eclipse 3.2 이상, JDK 1.4 이상,Eclipse는 JRE가 아닌 JDK 상에서 실행되는지 확인 • Eclipse 플러그인인Subclipse와 Mylyn을 설치 • Subclipse 1.2 : http://subclipse.tigris.org/update_1.2.x • Mylyn (Eclipse 3.3) : http://download.eclipse.org/tools/mylyn/update/e3.3 • Mylyn (Eclipse 3.4) : http://download.eclipse.org/tools/mylyn/update/e3.4 • Mylyn Extras (JIRA 지원) : http://download.eclipse.org/tools/mylyn/update/extras • Help -> Software Updates -> Find and Install -> Install/Update 다이얼로그 상자 -> "Search for new features to install“ 선택사항 클릭하고 Next를 클릭 -> Add Site.. -> update siteURL 입력 • m2eclipse 플러그인 : http://m2eclipse.sonatype.org/update • Eclipse가 새로운 플러그인들을 설치한 후에, 재시작에 대한 허가를 요청한다.

  15. m2eclipse 설치후 경고 오류 • "Maven Integration for Eclipse JDK Warning" 경고 • 이클립스는JRE만 있어도 동작이 가능한데 Maven 코어의 플러그인들이JDK의 jars를 사용하므로 eclipse.ini에서 -vm옵션으로 JDK를 설정하라고 하네요. --launcher.XXMaxPermSize 256m -vm C:\Program Files\Java\jdk1.5.0_16\bin\javaw.exe -vmargs -Dosgi.requiredJavaVersion=1.5 -Xms40m …

  16. Maven 기반 Eclipse 프로젝트 활용 • Eclipse 프로젝트로 변환 • Maven 기반으로 개발된 프로젝트를 Eclipse 프로젝트로 변환하는 작업은 간단하다. 프로젝트 디렉토리로 이동한 다음 "mvneclipse:eclipse" 명령어를 실행하면 Eclipse 기반 프로젝트로 변경된며.project, .classpath파일들이 자동적으로 생성된다. .classpath파일을 열어보면 pom.xml 파일에서 의존관계에 있는 모든 라이브러리들이 자동적으로 추가되어 있는 것을 확인할 수 있다. • 예를 들어 pom.xml 파일이 다음과 같이 설정되어 있다 • .classpath는 다음과 같이 추가된다 <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency> <classpathentry kind="var" path="M2_REPO/junit/junit/3.8.1/junit-3.8.1.jar" sourcepath="M2_REPO/junit/junit/3.8.1/junit-3.8.1-sources.jar"/>

  17. Maven 라이브러리 자바소스 분리 배포 • 라이브러리 배포할 때 자바 소스까지 분리해서 배포 • Eclipse 기반으로 애플리케이션을 개발할 때 F3나 디버깅을 많이 이용할 것이다. 이 기능들을 이용할 때 불편했던 점은 외부 라이브러리에 대한 소스 코드가 존재하지 않아 소스 코드를 분석하는데 한계가 있었던 것이 사실이다. 그러나 Maven을 이용할 경우 이 같은 단점을 보완할 수 있다. Maven을 이용하여 소스 코드를 배포하는 모든 라이브러리의 소스 코드는 자동적으로 Local Repository에 다운받아져 위와 같이 설정이 가능하기 때문에 Eclipse에서 외부 라이브러리 소스코드에 접근하기 용이해진다. • 디폴트 pom.xml을 사용할 경우 자바 프로젝트가 생성된다. 만약 웹 애플리케이션을 생성하기 위하여 WTP 기반으로 애플리케이션을 개발하고자 한다면 pom.xml에 다음과 같은 설정을 추가함으로서 해결할 수 있다. <plugins> <plugin> <artifactId>maven-eclipse-plugin</artifactId> <version>2.4</version> <configuration> <downloadSources>true</downloadSources> <downloadJavadocs>true</downloadJavadocs> <wtpversion>1.5</wtpversion> </configuration> </plugin> </plugins>

  18. M2_REPO 설정하기 • Maven을 이용하여 생성한 프로젝트를 import 하면 빌드 에러가 발생할 것이다. 그 이유는 앞의 .classpath에서 확인할 수 있듯이 M2_REPO가 classpath variable에 추가되어 있지 않기 때문이다. Window || Preferences || Java || Build Path || Classpath Variables로 이동한 다음 M2_REPO를 추가할 수 있다.

  19. 사내 Maven Repository의 구축 • 사내 Maven Repository 구축의 필요성 • 사외 Maven Repository • 사내 Maven Repository

  20. 사내 Maven Repository의 구축 • Artifactory 활용(오픈소스) • http://www.jfrog.org/download.php 에서 Artifactory최신버전 다운로드 • JDK 5.x 이상을 설치 • Tomcat 5.5 이상을 설치 • Artifactory는 웹 애플리케이션으로 구현되어 있다. 다운 받은 Artifactory최신 버전을 풀어보면 webapps디렉토리 아래에 artifactory.war파일을 찾을 수 있다. • 이 artifactory.war파일을 TOMCAT_HOME/webapps디렉토리 아래에 복사한다. TOMCAT_HOME/bin 디렉토리 아래에 catalina.bat 파일을 열어 JAVA_OPTS에 다음 항목을 추가한다. • JAVA_OPTS = -Dartifactory.home=D:\Devs\Tools\artifactory-1.2.2 • TOMCAT 에 추가하지 않고 시스템 환경 변수에 추가해도 된다. artifactory.home에 설정해야 하는 디렉토리는 Artifactory최신 버전의 압축을 푼 디렉토리이다. Artifactory는 Artifactory설치 디렉토리 하위의 data 디렉토리를 이용하기 때문에 위 항목을 반드시 추가해야 한다. • Artifactory설치는 위 과정만 거치면 간단하게 설치할 수 있다.

  21. Artifactory사용하기 • 라이브러리를 분리해서 관리하기 위해 Artifactory를 다음과 같이 설정하는 것이 가능하다. <ARTIFACTORY_INSTALLATION_FOLDER>/etc/artifactory.config.xml파일을 만든 후 다음과 같이 설정할 수 있다. <?xml version="1.0" encoding="UTF-8"?> <configxmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://artifactory.jfrog.org/xsd/1.0.0" xsi:schemaLocation="http://artifactory.jfrog.org/xsd/1.0.0”http://www.jfrog.org/xsd/artifactory-v1_0_0.xsd"> <!-- Backup every 12 hours --> <!--<backupCronExp>0 0 /12 * * ?</backupCronExp>--> <localRepositories> <localRepository> <key>private-internal-repository</key> <description>Private internal repository</description> <handleReleases>true</handleReleases> <handleSnapshots>true</handleSnapshots> </localRepository> <localRepository> <key>3rd-party</key> <description>3rd party jars added manually</description> <handleReleases>true</handleReleases> <handleSnapshots>false</handleSnapshots> </localRepository> </localRepositories> <remoteRepositories> <remoteRepository> <key>ibiblio</key> <handleReleases>true</handleReleases> <handleSnapshots>false</handleSnapshots> <excludesPattern>org/artifactory/**,org/jfrog/**</excludesPattern> <url>http://repo1.maven.org/maven2</url> </remoteRepository> </remoteRepositories> </config>

  22. Artifactory사용하기 • 앞의 설정은 라이브러리를 3가지 용도로 나뉘어 관리하겠다는 것이다. 중앙 Maven Repository의 Mirror 역할을 하게 될 Repository(ibiblio), 3rd party 라이브러리를 관리하기 위한 Repository(3rd-party), 사내에서 개발되는 라이브러리를 관리하기 위한 Repository(private-internal-repository)로 나누고 있다. 물론 사내 정책에 따라 더 많은 Repository를 관리하는 것 또한 가능하다. • 위와 같이 설정한 다음 Tomcat을 시작한 다음 Artifactory에 접근할 수 있다. • http://localhost:8080/artifactory로 접근하면 Artifactory로그인 화면에 접근할 수 있다. host파일에 서버명을 설정하여 사용할 수 있다. • Artifactory의 디폴트 사용자는 UserName : admin, Password : password repository. javajigi.net 127.0.0.1

  23. Artifactory사용하기 • Maven 빌드툴이 새로 설치한 Artifactory를 사용할 수 있도록 설정하는 것이다. 사내 Maven Repository를 사용하도록 설정하는 방법은 다음과 같다. • USER_HOME/.m2/settings.xml 파일을 다음과 같이 설정한다. 디폴트의 경우 C:\Documents and Settings\유저\.m2\settings.xml 파일을 다음과 같이 설정했다. • Artifactory의 디폴트 사용자는 UserName : admin, Password : password <settings 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.0 http://maven.apache.org/xsd/settings-1.0.0.xsd"> <profiles> <profile> <id>dev</id> <properties> <tomcat6x.home>D:/Devs/Servers/Tomcat-6.0.14</tomcat6x.home> </properties> <repositories> <repository> <id>central</id> <url>http://repository.javajigi.net:8080/artifactory/repo</url> <snapshots><enabled>false</enabled></snapshots> </repository> <repository> <id>snapshots</id> <url>http://repository.javajigi.net:8080/artifactory/repo</url> <releases><enabled>false</enabled><releases> </repository> </repositories> <pluginRepositories> <pluginRepository> <id>central</id> <url>http://repository.javajigi.net:8080/artifactory/repo</url> <snapshots><enabled>false</enabled><snapshots> </pluginRepository> <pluginRepository> <id>snapshots</id> <url>http://repository.javajigi.net:8080/artifactory/repo</url> <releases><enabled>false</enabled><releases> </pluginRepository> </pluginRepositories> </profile> </profiles> </settings>

  24. Artifactory사용하기 • 위와 같이 설정한 다음 Maven 빌드툴을 실행해보자. Maven 중앙 Repository에서 다운되는 모든 라이브러리가 Artifactory Repository에 다음과 같이 저장된다.

  25. Artifactory에 라이브러리 배포하기 • 개발하고 있는 라이브러리를 사내 Maven Repository에 배포하여 관리할 필요가 있다. 프로젝트간의 Dependency를 관리하기 위하여 개발 라이브러리를 사내 Maven Repository에 배포하고 사용할 수 있도록 개발 환경을 설정하는 것이 중요하다. • Artifactory에 라이브러리를 배포하는 방법은 Artifactory관리툴을 이용하는 방법과 Maven 빌드툴을 이용하는 방법이 있다. • Artifactory관리툴을 이용하는 방법은 간단하다. Artifactory관리툴의Deploy an artifact를 이용하여 새로운 라이브러리를 배포할 수 있다. 배포할 라이브러리를 업로드하면 다음과 같이 라이브러리에 대한 정보를 입력하는 것이 가능하다.

  26. Artifactory에 라이브러리 배포하기 • 앞의 방법은 3rd party 라이브러리를 관리할 때 유용하게 사용할 수 있는 방법이다. 개발하고 있는 라이브러리를 매번 이 방식으로 배포하기에는 적합하지 않다. 개발을 진행하는 중에는 상당히 자주 배포할 필요가 있기 때문에 개발 환경에 바로 배포할 수 있어야 한다. Maven 빌드툴은deploy goal을 통하여 사내 Repository에 배포하는 것이 가능하도록 지원한다. • 로컬에 설치한 Artifactory에 개발 라이브러리를 배포하기 위해서 먼저 USER_HOME/.m2/settings.xml 파일에 다음과 같이 Artifactory인증에 필요한 정보를 추가해야 한다. • Artifactory에 로그인할 때 사용했던 username과 password를 이용하여 인증이 가능하도록 설정한다. <settings 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.0 http://maven.apache.org/xsd/settings-1.0.0.xsd"> <servers> <server> <id>organisation-internal</id> <username>admin</username> <password>password</password> </server> </servers> <profiles> .... </profiles> </settings>

  27. Artifactory에 라이브러리 배포하기 • 다음은 개발 프로젝트의 pom.xml 파일에 다음과 같이 배포할 서버를 지정해야 한다. • 위와 같이 설정한 다음 "mvn deploy"를 실행하면 로컬에 설치한 Artifactory에 개발 라이브러리를 배포하는 것이 가능하다. • 개발 라이브러리를 배포하면 다음과 같이 private-internal-repository에 배포되게 된다. <distributionManagement> <repository> <id>organisation-internal</id> <name>MyCompany Repository</name> <url>http://repository.javajigi.net:8080/artifactory/private-internal-repository</url> </repository> </distributionManagement>

  28. 사내 Maven Repository의 구축 참조 Tomcat - Zero configuration • http://wiki.jfrog.org/confluence/display/RTF/Deploying+the+WAR+File • artifactory를 다운 받아 artifactory.war를 tomcat의 webapps폴더에 넣는다. The $ARTIFCTORY_HOME Folder • zero configuration에서 아주 중요한 곳으로, artifactory설정 등을 저장하는 폴더. • artifactory가 tomcat에서 처음 실행되면 $ARTIFACTORY_HOME 변수에 저장한다. • $ARTIFACTORY_HOME=${user.home}/.artifactory $ARTIFACTORY_HOME 을 변경하려면 • tomcat의 시작 인자에 -Dartifactory.home=$ARTIFACTORY_HOME 에 지정하거나, • $ARTIFACTORY_HOME 환경 변수를 설정한다. 특정 ARTIFACTORY_HOME에 수동 설치 • $ARTIFACTORY_HOME 으로 지정한 폴더에 artifactory를 푼다. • 이 곳에 $ARTIFACTORY_HOME/etc/artifactory.config.xml가 존재하는 것으로 $ARTIFACTORY_HOME으로 인정한다. • tomcat의 vm인자에 -Dartifactory.home=$ARTIFACTORY_HOME 에 지정. 혹은 tomcat 5.5 이후는 $TOMCAT_HOME/bin/setenv.sh의 JAVA_OPTS에 $ARTIFACTORY_HOME 을 지정하며 이전 버전은 $TOMCAT_HOME/bin/catalina.sh 에 지정 • HTTPd에 연동하기 • Tomcat JK connector를 이용 JKMount /artifactory/* worker1 • ajp connector 이용 #ProxyPreserveHost on # Use with Tomcat with the AJP connector #ProxyPass /artifactory/ ajp://localhost:8009/artifactory/ #ProxyPassReverse /artifactory/ ajp://localhost:8009/artifactory/

  29. 사내 Maven Repository의 구축 참조 Changing the Default Database • artifactory는 기본 derby database를 내장하여 production-level의 저장소를 위한 데이터를 관리할 수 있다. • http://wiki.jfrog.org/confluence/display/RTF/Changing+the+Default+Database Once-and-Only-Once Identical Content Storage • 동일한 파일( 사이즈, 이름, 체크섬)은 오로지 한 번만 저장되고 동일한 파일 저장 요구가 나타나면 메타데이터에 링크한다. • $ARTIFACTORY_HOME/etc/artifactory.system.properties file: artifactory.jcr.configDir=repo/[selected-storage-type] • 위 경로는 $ARTIFACTORY_HOME/etc 아래 상대경로 혹은 절대경로로 repo.xml file 이 있는 디렉토리이다.(which is a Jackrabbit configuration file) Artifactory on MySQL • http://wiki.jfrog.org/confluence/display/RTF/Running+Artifactory+on+MySQL • $ARTIFACTORY_HOME/etc/artifactory.system.properties: artifactory.jcr.configDir=repo/mysql Note: this path is relative to $ARTIFACTORY_HOME/etc $ARTIFACTORY_HOME/etc/repo/mysql/repo.xml-DB 연결 정보 수정. 특정 ARTIFACTORY_HOME에 수동 설치 • $ARTIFACTORY_HOME 으로 지정한 폴더에 artifactory를 푼다. • 이 곳에 $ARTIFACTORY_HOME/etc/artifactory.config.xml가 존재하는 것으로 $ARTIFACTORY_HOME으로 인정한다. • tomcat의 vm인자에 -Dartifactory.home=$ARTIFACTORY_HOME 에 지정. 혹은 tomcat 5.5 이후는

  30. Appfuse프로젝트 활용 • Appfuse프로젝트 소개 • Appfuse는 다양한 프레임워크의 조합으로 프로젝트를 진행할 때 템플릿을 생성하기 위한 오픈 소스 프로젝트이다. Appfuse를 이용하면 진행하는 프로젝트의 프레임워크 조합에 따라 샘플 프로젝트를 생성할 수 있다. 이 샘플 프로젝트를 기반으로 개발 환경을 구축하는 것이 가능하다. • Appfuse가 지원하는 프레임워크 • JSF Basic • Spring MVC Basic • Struts 2 Basic • Tapestry Basic • 위 예는 프리젠테이션레이어를 담당하는 프레임워크들이다. • 그외Hibernate, IBatis등 다양한 프레임워크의 조합의 템플릿 프로젝트를 생성하는 것이 가능하다.

  31. Appfuse프로젝트 생성 • Appfuse는 각 프레임워크의 조합에 따라 각각 다른 archetype을 제공하며 Appfuse에서 제공하는 archetype은 http://appfuse.org/display/APF/AppFuse+QuickStart 에서 확인할 수 있다. 이번 예제에서는 Spring MVC Basic을 이용하도록 하겠다. • 먼저 DOS Prompt에서 Appfuse프로젝트를 생성하고자 하는 디렉토리로 이동한 다음 Spring MVC Basic archetype을 생성한다. mvnarchetype:create -DarchetypeGroupId=org.appfuse.archetypes -DarchetypeArtifactId=appfuse-basic-spring \ -DremoteRepositories=http://static.appfuse.org/releases -DarchetypeVersion=2.0 -DgroupId=net.javajigi.app \ -DartifactId=myappfuse • 위와 같이 실행하면 Appfuse디렉토리 하위에 myappfuse라는 디렉토리가 생기면서 템플릿 프로젝트가 생성된다. Maven 디폴트 디렉토리 구조로 다음과 같이 생성된다.

  32. Appfuse프로젝트 생성 • Maven archetype을 통하여 생성된 myappfuse디렉토리 하위를 보면 pom.xml 파일이 생성되어 있는 것을 확인할 수 있다. Appfuse예제를 테스트하기 위하여 데이터베이스 설정을 해야 한다. pom.xml 파일을 열어 자신의 데이터베이스 설정과 맞도록 수정해준다. Mysql데이터베이스를 사용하여 예제를 진행했다. <dbunit.dataTypeFactoryName> org.dbunit.dataset.datatype.DefaultDataTypeFactory </dbunit.dataTypeFactoryName> <dbunit.operation.type>CLEAN_INSERT</dbunit.operation.type> <hibernate.dialect>org.hibernate.dialect.MySQLInnoDBDialect</hibernate.dialect> <jdbc.groupId>mysql</jdbc.groupId> <jdbc.artifactId>mysql-connector-java</jdbc.artifactId> <jdbc.version>5.0.5</jdbc.version> <jdbc.driverClassName>com.mysql.jdbc.Driver</jdbc.driverClassName> <jdbc.url> <![CDATA[jdbc:mysql://localhost/myappfuse?createDatabaseIfNotExist=true&amp;useUnicode=true&amp;characterEncoding=utf-8]]> </jdbc.url> <jdbc.username>root</jdbc.username> <jdbc.password>password</jdbc.password> • 위 와 같이 데이터베이스 설정을 변경한 다음 myappfuse디렉토리로 이동한 다음 mvn install eclipse:eclipse명령을 실행하여 Eclipse 프로젝트를 생성한다. Eclipse 프로젝트를 생성한 다음 Eclipse에서 import한다. mvn install eclipse:eclipse명령을 실행하면 관련 라이브러리를 다운받는데 많은 시간이 소요된다. • mvn install eclipse:eclipse를 실행하면 Maven 기반의 프로젝트를 Eclipse 프로젝트로 변환할 뿐만 아니라 빌드까지 진행하게 된다. 생성한 myappfuse프로젝트는 WTP 기반의 프로젝트로 생성된다.

  33. Appfuse프로젝트 테스트 • 생성한 myappfuse프로젝트를 Eclipse에서 import한다. • appfuse를 WTP와 연동하기 위해서는 추가적인 설정이 필요하다. 기본적으로 Maven 기반의 프로젝트를 Eclipse로 변경할 경우 특별한 추가 설정이 필요없다. 그러나 appfuse는 Common 프로젝트와 이 프로젝트와 의존관계에 있는 프로젝트로 분리되어 있기 때문에 추가적인 설정이 필요하다. • 생성한 myappfuse프로젝트의 pom.xml 파일을 열어보면 다음과 같이 war 파일과 의존관계를 가지는 것을 알 수 있다. <dependency> <groupId>org.appfuse</groupId> <artifactId>appfuse-${web.framework}</artifactId> <version>${appfuse.version}</version> <type>war</type> </dependency> • Maven의 경우 war 파일과 의존관계에 있을 경우 빌드시war 파일을 다운받아 빌드디렉토리에 압축을 풀어 같이 배포할 수 있도록 지원한다. appfuse프로젝트를 생성하면 webapp디렉토리는 다음 그림과 같다.

  34. Appfuse프로젝트 테스트 • 그러나 Maven을 이용하여 빌드를 하면 target 디렉토리가 다음과 같이 구성되는 것을 확인할 수 있다. • 디폴트 Eclipse 플러그인은src/main/webapp를 디폴트 웹 리소스 디렉토리로 인식한다. 그러나 빌드 후 Common war 파일이 target 디렉토리에 배포되기 때문에 WTP 설정 파일을 다음과 같이 변경해야 된다. • .settings 디렉토리 아래의 org.eclipse.wst.common.component파일을 연다. <wb-resource deploy-path="/" source-path="src/main/webapp"/> 삭제 <wb-resource deploy-path="/" source-path="target/myappfuse-1.0-SNAPSHOT"/> 추가 <wb-resource deploy-path="/WEB-INF/classes" source-path="src/main/resources"/> 삭제

  35. Appfuse프로젝트 테스트 다음은 myappfuse프로젝트를 Tomcat 서버에 배포하여 테스트를 진행하는 과정을 보자. Preferences -> Java -> Installed JREs로 이동하여 JDK를 추가한다. 디폴트는 JRE가 설정되어 있을 것이다. JRE가 아니라 JDK를 추가한다.

  36. Appfuse프로젝트 테스트 JDK를 설정한 다음 Tomcat 서버를 추가해야 한다. Preferences -> Server -> Installed Runtimes: Apache -> Tomcat 5.5 server를 선택하여 로컬에 설치한 Tomcat 5.5를 추가한다. Tomcat 5.5를 추가할 때 앞에서 추가한 JDK 5.0을 사용하도록 한다. Window -> Show View -> Other -> Server -> Servers로 이동한 다음 새로운 서버를 추가한다. 오른쪽 클릭 New -> Server

  37. Appfuse프로젝트 테스트 앞의 myappfuse프로젝트를 WTP 기반 프로젝트로 설정되어 있기 때문에 서버를 추가할 때 배포하도록 설정하는 것이 가능하다. 추가한 서버를 시작한다. 서버를 시작한 다음 http://localhost:8080/myappfuse로 접근하면 다음과 같은 로그인 화면을 볼 수 있다면 appfuse에 대한 설정이 성공한 것이다. • admin/admin으로 로그인하면 Appfuse의 기능을 확인할 수 있다.

More Related