nexus 설치
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에는 일반적으로 다음을 포함
- Nexus에서 Central repository 생성 확인
Nexus 관리자 화면에서 확인
다음 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/
- Group Repository 생성 또는 확인
다음 group repository를 생성
Name: nexweb-public Type: group Format: maven2
Members에는 다음을 추가
nexweb-releases
nexweb-snapshots
nexweb-central
- settings.xml 수정
다운로드 mirror는 /repository/nexweb-public/의 group repository를 사용
```xml <?xml version=”1.0” encoding=”UTF-8”?>
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
# 참조
댓글남기기