1 분 소요

nexus 구성

maven-central       : proxy repository
maven-releases      : hosted repository
maven-snapshots     : hosted repository
maven-public        : group repository
다운로드:
nexweb-public        group

Release 업로드:
nexweb-releases      hosted

Snapshot 업로드:
nexweb-snapshots     hosted

권장 pom.xml 설정:

<distributionManagement>
    <repository>
        <id>nexweb-releases</id>
        <name>Nexus Releases</name>
        <url>http://localhost:8081/repository/nexweb-releases/</url>
    </repository>

    <snapshotRepository>
        <id>nexweb-snapshots</id>
        <name>Nexus Snapshots</name>
        <url>http://localhost:8081/repository/nexweb-snapshots/</url>
    </snapshotRepository>
</distributionManagement>

settings.xml에는 해당 인증 ID도 추가합니다.

<servers>
    <server>
        <id>nexweb-public</id>
        <username>user01</username>
        <password>변경된-비밀번호</password>
    </server>

    <server>
        <id>nexweb-releases</id>
        <username>deploy-user01</username>
        <password>변경된-비밀번호</password>
    </server>

    <server>
        <id>nexweb-snapshots</id>
        <username>deploy-user01</username>
        <password>변경된-비밀번호</password>
    </server>
</servers>

maven-public group에는 일반적으로 다음을 포함

  1. Nexus에서 Central repository 생성 확인
    Nexus 관리자 화면에서 확인
    alt text 다음 repository가 있어야 합니다
nexweb-central (proxy) - download 용
nexweb-releases (hosted) - upload용
nexweb-snapshots (hosted) - upload 용
nexweb-public (group)

maven-central Name: nexweb-central Type: proxy Format: maven2 Remote storage: https://repo.maven.apache.org/maven2/

  1. Group Repository 생성 또는 확인 다음 group repository를 생성
    Name: nexweb-public
    Type: group
    Format: maven2
    

Members에는 다음을 추가

nexweb-releases
nexweb-snapshots
nexweb-central
  1. settings.xml 수정 다운로드 mirror는 /repository/nexweb-public/의 group repository를 사용
    ```xml <?xml version=”1.0” encoding=”UTF-8”?>
nexus-public Nexus Maven Public Group http://localhost:8081/repository/maven-public/ * nexweb-releases deploy-user01 변경된-비밀번호 nexus-public user01 변경된-비밀번호
4. pom.xml의 배포 설정 수정
프로젝트 버전이 현재 다음과 같습니다  
```xml
<version>1.0.0</version>

이 버전은 snapshot이 아니라 release 버전입니다. 하지만 현재 pom.xml에는 snapshotRepository만 있습니다

Release와 Snapshot repository를 분리하는 것이 좋습니다.

<distributionManagement>

    <repository>
        <id>nexus-releases</id>
        <name>Nexus Releases</name>
        <url>http://localhost:8081/repository/maven-releases/</url>
    </repository>

    <snapshotRepository>
        <id>nexus-snapshots</id>
        <name>Nexus Snapshots</name>
        <url>http://localhost:8081/repository/maven-snapshots/</url>
    </snapshotRepository>

</distributionManagement>

그리고 settings.xml의 server ID도 동일하게 맞춥니다.

<servers>
    <server>
        <id>nexweb-releases</id>
        <username>deploy-user01</username>
        <password>변경된-비밀번호</password>
    </server>

    <server>
        <id>nexweb-public</id>
        <username>user01</username>
        <password>변경된-비밀번호</password>
    </server>
</servers>

ID 매핑은 다음과 같아야 합니다

pom.xml repository id
=
settings.xml server id

nexweb 하나만 사용해야 하는 경우

nexweb-releases      hosted
nexweb-snapshots     hosted
nexweb-public        group
nexweb-central       proxy
nexweb-releases
nexweb-snapshots
nexweb-central

or

nexweb-releases
nexweb-snapshots
maven-central

그때 mirror URL은:

    <mirrors>
        <mirror>
            <id>nexweb-public</id>
            <name>Local Nexus Repository</name>
            <url>http://localhost:8081/repository/nexweb-public</url>
            <mirrorOf>*</mirrorOf>
        </mirror>
    </mirrors>

로 설정합니다.

hosted라면 Maven Central artifact를 자동으로 다운로드하지 않습니다.

proxy라면 Remote storage가 설정되어 있어야 합니다.

https://repo.maven.apache.org/maven2/

핵심은 다음 두 ID가 동일해야 한다는 것입니다.

<mirror>
    <id>nexweb-public</id>
</mirror>

<server>
    <id>nexweb-public</id>
</server>

적용 확인

mvn -s C:\Users\<사용자명>\.m2\settings.xml -U package -DskipTests

로그가 다음과 같이 표시되어야 합니다.

Downloading from nexweb-public:
http://localhost:8081/repository/nexweb-public/...

그리고 더 이상 다음 오류가 나오면 안 됩니다.

Not authorized
Unauthorized

Nexus 권한도 확인

nx-repository-view-maven2-nexweb-public-browse
nx-repository-view-maven2-nexweb-public-read

관리자 계정으로 Nexus에 로그인한 뒤 다음을 확인하십시오

Security
 └─ Users
     └─ user01
         └─ Roles

# 참조

댓글남기기