반응형

Nexus에 Repository를 하나 생성한다.

 

ID, Name은 대충 적어줘도 되지만, Repository Policy에서 정책을 자신이 원하는것과 다른걸로 지정해주면

Deploy시 실패하게 되므로 주의하자.

 

Repository가 생성되었으면, 해당하는 url을 우리가 공유해야 할 프로젝트의 pom.xml에 넣어준다. (보통 공통모듈 프로젝트)

아래와 같이..  

 


<distributionManagement>
        <repository>
            <id>CommonModule</id>
            <name>CommonModule</name>
            <url>http://localhost:8081/nexus/content/repositories/commonModule</url>
        </repository>
</distributionManagement>

 

당연히, Nexus에 만들어둔 repository와 id, name, url이 일치해야 한다.

 

그리고 상단에 groupId, artifactId, version이 다른 사람이 의존성을 주입해서 사용할 때,

넣는 이름이 되므로, 신중하게 결정하자.

version의 경우 위에서 설명한 Repository Policy에 해당하는 단어가 포함되어 있어야 한다.

(RELEASE로 했을 경우 0.0.1-RELEASE와 같이 해준다. 정책이 RELEASE인데 SNAPSHOT이 포함되어 있으면, Deploy시에 repository정책이 일치하지 않아서 실패한다.)

 

이렇게 해주고, mvn clean deploy를 해주면, Nexus에 내 프로젝트가 등록이 되어, 다른 팀원과 공유가 가능해진다.

하지만, 다른 팀원들이 내부 소스를 보지 못하는 이슈가 있으므로, maven-source-plugin, maven-deploy-plugin을 이용하여, 소스까지 업로드 해주는 것이 좋다.

(이건 다음 포스팅에서 작성하는 걸로..) 

 

이제 공통모듈쪽 프로젝트 작업은 끝났고, 다른 팀원들이 사용할 수 있게 해줘야 하는데,

사전 작업이 약간 필요하다.

 

1. .m2폴더의 settings.xml을 열어서, nexus repository에 대한 정보를 등록한다. (.m2폴더는 이클립스 기준으로 External 등의 설정을 하지 않았다면, 윈도우 사용자 폴더\.m2 경로에 존재한다.)

아래와 같이 추가해준다.

 

  <servers> 
    <server>
        <id>commonModule</id>      <!-- 이것도 물론 아까 nexus에 만들어둔 id와 동일해야 함. -->
        <username>admin</username>
        <password>admin123</password>
    </server>
  </servers>

 

2. 공통모듈 프로젝트의 의존성을 주입할 프로젝트의 pom.xml을 열어서 아래와 같이 추가해줌.

  

 

<repositories>
      <repository>
            <id>commonModule</id>  <!-- 동일해야함! -->
            <url>http://localhost:8081/nexus/content/repositories/commonModule</url>
        </repository> 
  </repositories>
 
  <dependencies>
      <dependency>
           <!-- 공통 모듈 프로젝트의 pom.xml 상단에 있는 정보와 동일해야함. artifactId, version도 마찬가지--> 
          <groupId>companyName</groupId>      
          <artifactId>commonModule</artifactId>
          <version>0.0.1-SNAPSHOT</version> 
      </dependency> 
  </dependencies>

참고로 이클립스를 사용하는 경우, 같은 workspace에 공통모듈 프로젝트가 포함되어 있는 경우  

의존성이 주입된 원격 Nexus에 있는 라이브러리를 참조하는 것이 아니라, 바로 그 프로젝트의 라이브러리를 참조하는 것 같다.

디버깅하기도 편하고 더 좋은듯..

 

이제 CI툴과의 연동을 진행해봐야겠다. 

반응형
,