'Tool/Maven'에 해당하는 글 10건

1. 이클립스에 메이븐 플러그인 설치

 

[Help] - [Install New Software...] - [Add...]
Name : Maven
Location : http://download.eclipse.org/technology/m2e/releases

 

 

2. 메이븐 웹 어플리케이션 프로젝트 생성

 

[File] - [New] - [Project...] - [Maven] - [Maven Project] - [Select Workspace location]
Catalog : Internal
Group Id : org.apache.maven.archetypes
Artifact Id : maven-archetype-webapp

 

사내 저장소가 있다면,
Catalog: Nexus Indexer
Catalog File: Nexus Archetype URL ( ex: http://oops4u.com:8081/nexus/content/groups/public )

 

만약 사내저장소에 maven-archetype-webapp 이 없다면 [Add Archetype] 클릭하여 설치.
Group Id : org.apache.maven.archetypes
Artifact Id : maven-archetype-webapp
Version : 1.0
URL : http://repo1.maven.org/maven2/

 

 

3. 생성된 webapp 디렉토리 구조

 

 

 

4. index.jsp 출력하기

 

내장된 Tomcat 서버를 사용하여 동적 웹 어플리케이션으로 현재 프로젝트를 실행하기 위해 tomcat:run goals를 입력합니다.
[Run As...] - [Maven build...]
Goals : tomcat:run -> 실행

 

http://localhost:8080/v1 -> Hello World! 확인

 

 

5. Project Facet 추가

 

동적 웹페이지 컨텐츠의 생성을 위해 Java Servlet API 에 대한 지원을 추가합니다.
<Project> - [Properties] - [Project Facets] - [Dynamic Web Module 2.4] 체크 - [Further configuration available...]
Content directory: src/main/webapp

 

서블릿 관련 디렉토리가 추가되었습니다.
 - src/main/java
 - src/test/java

 

 

6. war 생성

 

[Run As...] 에 [Maven package] 메뉴가 없습니다. 저만 없는건지;
[Run As...] - [Maven build...] 에서 Goals 항목에 package 를 등록합니다.


WRITTEN BY
손가락귀신
정신 못차리면, 벌 받는다.

,

Nexus Group

Tool/Maven 2013. 5. 14. 23:09

중앙 저장소를 Nexus로 변경하려면 ~/.m2/settings.xml 파일을 변경해야 합니다.
Nexus를 사내 개발로 사용하려면, releasessnapshots를 포함하는 하나의 Nexus group을 구성해야 합니다.
공개 group에 snapshot저장소를 추가하고 Maven의 ~/.m2/settings.xml 파일에 mirror 구성을 추가합니다.
이 설정은 Nexus 설치 후에 기본적으로 되어 있습니다.

 

 

 

 

하나의 Nexus 그룹을 구성하기 위해 하나의 profile 을 정의합니다.
Super POM에 정의되어 있는 central 저장소를 재정의하여 <repository />와 <pluginRepository />를 구성합니다.
그리고 <mirror />에 URL도 재정의하여 Nexus 그룹의 URL을 가리키도록 합니다.

 

$ vi ~/.m2/settings.xml
<settings>

  <mirrors>
    <mirror>
      <!--This sends everything else to /public -->
      <id>nexus</id>
      <mirrorOf>*</mirrorOf>
      <url>http://domain.com:8081/nexus/content/groups/public</url>
    </mirror>
  </mirrors>

  <profiles>
    <profile>
      <id>nexus</id>
      <!--Enable snapshots for the built in central repo to direct -->
      <!--all requests to nexus via the mirror -->

      <repositories>
        <repository>
          <id>central</id>
          <url>http://central</url>
          <releases><enabled>true</enabled></releases>
          <snapshots><enabled>true</enabled></snapshots>
        </repository>
      </repositories>

      <pluginRepositories>
        <pluginRepository>
          <id>central</id>
          <url>http://central</url>
          <releases><enabled>true</enabled></releases>
          <snapshots><enabled>true</enabled></snapshots>
        </pluginRepository>
      </pluginRepositories>

    </profile>
  </profiles>

  <activeProfiles>
    <!--make the profile active all the time -->
    <activeProfile>nexus</activeProfile>
  </activeProfiles>
</settings>

 

이후에 중앙 저장소와의 모든 작업들은, http://repo.maven.apache.org/maven2 가 아닌
http://domain.com:8081/nexus/content/groups/public 와 하게 됩니다.


WRITTEN BY
손가락귀신
정신 못차리면, 벌 받는다.

,

Deploy to Nexus

Tool/Maven 2013. 5. 13. 18:22

Internal Repository

 

Private remote internal repository 은 내부(사내) 저장소라고 합니다.
프로젝트 개발시 모든 구성원이 중앙 저장소로부터 필요한 라이브러리를 다운로드 할 수 있지만, 구성원간에 공유해야 하는 별도의 리소스를 공유, 관리하기 위해 사내 저장소가 필요합니다.
사내 저장소 구성을 위해 Nexus, Artifactory 등의 OSS 를 이용할 수 있습니다. 둘 중 대세인 Nexus 를 사용해 보겠습니다.

 

Nexus site : http://www.sonatype.org/nexus
Nexus 설치 안내

 

대략적인 Nexus 로의 배포 시나리오는 다음과 같습니다.

 

  • 누군가 Nexus에 라이브러리를 등록할 수 있도록 별도의 계정 생성.
  • 로컬 저장소에서 mvn deploy 시 배포될 Nexus 주소/계정 정보 등록.
  • Nexus로 배포

 

 

1. 사용할 계정 생성

 

Nexus 사이트에 admin 계정으로 로그인하여 [Security] - [Users] - [Add...] 항목을 클릭한 후 새 계정을 생성합니다.
아니면 기존 생성된 user의 패스워드만 변경하여 사용해도 됩니다. (항목에서 마우스 우측버튼 클릭)

 

 

2. 계정 정보 삽입

 

Nexus 에 접속할 수 있는 계정 정보를 로컬 저장소의 settings.xml 파일에 삽입합니다.

 

$ vi ~/.m2/settings.xml
<servers>
    <server>
        <id>nexus</id>
        <username>deployment</username>
        <password>[password]</password>
    </server>
</servers>

 

 

3. 배포 정보 삽입

 

배포할 nexus 의 저장소 정보를 프로젝트의 pom.xml 파일에 삽입합니다.

 

$ vi <project_home>/pom.xml
<distributionManagement>
    <repository>
        <id>nexus</id>
        <name>Internal Releases</name>
        <url>http://domain.com:8081/nexus/content/repositories/releases/</url>
    </repository>

 

    <snapshotRepository>
        <id>nexus</id>
        <name>Internal Releases</name>
        <url>http://domain.com:8081/nexus/content/repositories/snapshots/</url>
    </snapshotRepository>
</distributionManagement>

 

 

4. 배포

 

$ mvn deploy

 

 

 


WRITTEN BY
손가락귀신
정신 못차리면, 벌 받는다.

,

Central Repository

Tool/Maven 2013. 5. 9. 22:46

http://repo.maven.apache.org/maven2/
http://search.maven.org

 

 

maven에서 저장소는 세가지로 분류할 수 있습니다.
Central, Internal, Local repository

 

Central repository 는 중앙 저장소라고 하며, 이곳에 등록되어 있는 다양한 버전의 외부 OSS(오픈소스) 라이브러리들을 Maven에서 설정한 <dependency /> 에 지정하여 로컬 저장소에 가져올 수 있습니다. 중앙 저장소에는 개발자가 임의로 라이브러리를 배포할 수 없으니 외부 라이브러리를 가져오는 용도로만 사용한다고 보면 되겠습니다.

 

사용하고자 하는 외부 라이브러리를 중앙 저장소에 접속하여 검색하고 버전을 선택하면, Dependency Information 이 나타나므로 이것을 참조하여 pom 파일을 작성하면 되겠습니다. 의존 라이브러리들은 프로젝트 빌드시에 pom.xml 파일을 참조하여 로컬 저장소에 다운로드 됩니다.

 

 

pom.xml 파일에 의존 라이브러리(dependency) 추가

 

<project ...>

 

  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
  </dependencies>

 

</project>

 

Dependency <scope />는 다양한 빌드 작업에 제한할 수 있습니다.

 

  • compile : default 값이며, 컴파일과 배포시에 필요한 라이브러리.
  • provided : 컴파일에만 필요한 라이브러리.
  • runtime : 어플리케이션을 실행할 때 필요한 라이브러리.
  • test : 테스트에만 필요한 라이브러리.
  • system : provided와 유사하지만 jar을 사용자가 제공해야 함.
  • import : <dependencyManagement /> 에 사용되며 지정된 POM 파일에 정의된 설정으로 교체됨.

WRITTEN BY
손가락귀신
정신 못차리면, 벌 받는다.

,

Maven의 Default lifecycle 입니다.

 

  • validate - 프로젝트 정보가 올바른지 체크
  • compile - 프로젝트의 소스 코드 컴파일
  • test - 단위 테스트를 사용하여 컴파일된 소스 코드 테스트
  • package - .jar 같은 배포 형식으로 컴파일된 코드 패키징
  • integration-test - 패키지 처리 및 배포 테스트
  • verify - 패키지 유효성 체크
  • install - 로컬 저장소에 패키지 설치
  • deploy - 원격 저장소에 최종 패키지 복사

 

 

etc command

 

mvn package - target 디렉토리에 jar 파일을 생성합니다.
mvn install - 다른 프로젝트에서 종속성으로 사용할 수 있도록 생성된 jar 파일을 로컬 저장소(~/.m2/repository)에 저장합니다.
mvn site - 프로젝트의 충분한 정보를 볼 수 있는 사이트를 생성합니다. (target/site)
mvn clean - 새로운 빌드를 위해 target 디렉토리 및 기존 빌드를 삭제할 수 있습니다.
mvn idea:idea - IntelliJ IDEA 를 사용할 수 있도록 설정됩니다.
mvn eclilpse:eclipse - Eclipse IDE 를 사용할 수 있도록 설정됩니다.
mvn clean dependency:copy-dependencies package - 기존 빌드 삭제, 종속 파일들 복사, 패키징을 순서대로 처리합니다.


WRITTEN BY
손가락귀신
정신 못차리면, 벌 받는다.

,