메이븐을 이용하면서 레파지토리로 Nexus나 Artifactory를 이용할 수 있다.
필자의 경우 최근엔 Nexus를 이용하고 있지만 아직도 Artifactory를 사용하는 프로젝트가 많이 있어서 종종 사용하게 된다.
오늘은 다음과 같은 목적으로 Artifactory의 설정을 바꿔보았다.
1. 새로운 레파지토리가 필요하여 아이디를 지정하고 생성함.
2. 보안을 위해서 기존 사용자는 모든 레파지토리를 이용할 수 있지만 신규 사용자는 새로 만들어진 레파지토리만 이용하게하려고 함.
3. 사용자와 그룹 및 퍼미션을 생성하고 관계를 설정.
4. 생성된 레파지토리에 퍼미션을 할당함.
5. Admin -> Security -> General 메뉴에서 "Allow Anonymous Access"를 Unchecked 함.
기대했던 동작은 기존 사용자는 모든 레파지토리에 접근할 수 있고 신규 사용자만 새로이 생성된 레파지토리에 접근했어야 했는데 어찌된 일인지 모든 사용자에게서
와 같은 경고와 더불어 배포가 되지 않았다.
다음은 당시의 설정 내역이다.
setting.xml
pom.xml
지금까지는 Security 설정을 변경해 본적이 없어서 사용자와 패스워드만 맞으면 되는 것으로알았다. 그런데 "Allow Anonymous Access" 체크를 빼보니 그렇지 않다는 것을 알 수 있었다.
이에 대한 논의는 2010년에 많이 있었던 듯하다.
참고: http://forums.jfrog.org/quot-Allow-Anonymous-Access-quot-only-for-selected-repos-td5469007.html
별다른 성과가 없었는데
다음의 URL에서 실마리를 찾을 수 있었다.
참고: http://old.nabble.com/Authorization-failed---Access-denied-td28238554.html
중간쯤에 freddy33 이라는 사람이 답글에 보면 각각의 레파지토리는 서버 선언에 따라서 ID가 필요하다는 내용을 볼 수 가 있다. 아래는 그 내용이다.
그래서 위에 문제가 되었던 설정 부문을 다음과 같이 변경함으로써 해결되었다.
setting.xml
pom.xml
필자의 경우 최근엔 Nexus를 이용하고 있지만 아직도 Artifactory를 사용하는 프로젝트가 많이 있어서 종종 사용하게 된다.
오늘은 다음과 같은 목적으로 Artifactory의 설정을 바꿔보았다.
1. 새로운 레파지토리가 필요하여 아이디를 지정하고 생성함.
2. 보안을 위해서 기존 사용자는 모든 레파지토리를 이용할 수 있지만 신규 사용자는 새로 만들어진 레파지토리만 이용하게하려고 함.
3. 사용자와 그룹 및 퍼미션을 생성하고 관계를 설정.
4. 생성된 레파지토리에 퍼미션을 할당함.
5. Admin -> Security -> General 메뉴에서 "Allow Anonymous Access"를 Unchecked 함.
기대했던 동작은 기존 사용자는 모든 레파지토리에 접근할 수 있고 신규 사용자만 새로이 생성된 레파지토리에 접근했어야 했는데 어찌된 일인지 모든 사용자에게서
[WARNING] repository metadata for: 'snapshot kr.flowerteam.pom:BasicPOM:1.1.2-SNAPSHOT' could not be retrieved from repository: snapshots due to an error: Authorization failed: Access denied to: http://{myhost}/artifactory/repo/kr/flowerteam/pom:BasicPOM/7.13-SNAPSHOT/maven-metadata.xml
와 같은 경고와 더불어 배포가 되지 않았다.
다음은 당시의 설정 내역이다.
setting.xml
...
<servers>
<server>
<id>flowerteam-rep</id>
<username>flowerteam</username>
<password>flowerteam</password>
</server>
</servers>
...
pom.xml
...
<distributionManagement>
<repository>
<id>flowerteam-rep</id>
<name>Flowerteam Releases</name>
<url>dav:http://{myhost}/artifactory/libs-releases-local</url>
</repository>
<snapshotRepository>
<id>flowerteam-rep</id>
<name>Flowerteam Snapshots</name>
<url>dav:http://{myhost}/artifactory/libs-snapshots-local</url>
</snapshotRepository>
</distributionManagement>
...
...
지금까지는 Security 설정을 변경해 본적이 없어서 사용자와 패스워드만 맞으면 되는 것으로알았다. 그런데 "Allow Anonymous Access" 체크를 빼보니 그렇지 않다는 것을 알 수 있었다.
이에 대한 논의는 2010년에 많이 있었던 듯하다.
참고: http://forums.jfrog.org/quot-Allow-Anonymous-Access-quot-only-for-selected-repos-td5469007.html
별다른 성과가 없었는데
다음의 URL에서 실마리를 찾을 수 있었다.
참고: http://old.nabble.com/Authorization-failed---Access-denied-td28238554.html
중간쯤에 freddy33 이라는 사람이 답글에 보면 각각의 레파지토리는 서버 선언에 따라서 ID가 필요하다는 내용을 볼 수 가 있다. 아래는 그 내용이다.
그래서 위에 문제가 되었던 설정 부문을 다음과 같이 변경함으로써 해결되었다.
setting.xml
...
<servers>
<server>
<id>flowerteam-rep-central</id>
<username>flowerteam</username>
<password>flowerteam</password>
</server>
<server>
<server>
<id>flowerteam-rep-snapshots</id>
<username>flowerteam</username>
<password>flowerteam</password>
</server>
</servers>
...
pom.xml
...
<distributionManagement>
<repository>
<id>flowerteam-rep-central</id>
<name>Flowerteam Releases</name>
<url>dav:http://{myhost}/artifactory/libs-releases-local</url>
</repository>
<snapshotRepository>
<id>flowerteam-rep-snapshots</id>
<name>Flowerteam Snapshots</name>
<url>dav:http://{myhost}/artifactory/libs-snapshots-local</url>
</snapshotRepository>
</distributionManagement>
...
...