'snapshot'에 해당하는 글 2건

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
손가락귀신
정신 못차리면, 벌 받는다.

트랙백  0 , 댓글  0개가 달렸습니다.
secret

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
손가락귀신
정신 못차리면, 벌 받는다.

트랙백  0 , 댓글  2개가 달렸습니다.
  1. 질문자 2013.05.29 17:48
    안녕하세요 넥서스 정보 찾다가 질문 드립니다.
    1. 계정 정보 삽입에서 <id>는 nexus 상에서 repository ID를 말하는 것인지요?
    repository ID와 정확히 일치해야 하는지 아니면 의미는 없는 것인지 궁금합니다.
    2. 배포 삽입 정보에서 <repository>와 <snapshotRepository>의 차이가 무엇인지 궁금합니다.

    답변 부탁드립니다.
    • 1. <계정 정보 삽입>의 ID는 임의로 정하셔도 됩니다. 대신 <배포 정보 삽입>의 ID와 일치해야 그 url로 접속할 수 있겠지요?
      2. url을 보시면 <repository />의 url은 releases 디렉토리를 가리키고 <snapshotRepository />의 url은 shapshots 디렉토리를 가리킵니다. 배포시 스냅샷 버전은 snapshots 디렉토리로, 릴리스 버전은 releases 디렉토리로 업로드 됩니다.
secret