Maven 저장소, pom.xml 또는 settings.xml을 지정하는 가장 좋은 장소는 어디입니까?
어디 받는다는 프로젝트에 필요한 저장소를 지정하는 가장 좋은 장소 pom.xml
또는 settings.xml
? 각 위치의 장단점은 무엇입니까? 모범 사례는 무엇입니까?
여러 가지 이유로 POM에서 리포지토리를 정의하는 것이 더 나은 것 같습니다.
- 재현성 : 종속 아티팩트는 POM에 명시 적으로 선언 된 알려진 위치에서 나옵니다. 또한 사용자의 잘못 구성된 저장소로 인해 문제가 발생할 가능성이 적습니다.
- 이식성 :이 POM은 Maven이 설치된 모든 컴퓨터에 빌드됩니다. 추가 사용자 구성 리포지토리 설정에 대한 추가 요구 사항은 없습니다.
- 사용 용이성 : 설정하는 구성이 적기 때문에 신규 개발자가 프로젝트를 검색하고 빌드하는 것이 더 쉽습니다.
아마도 단점은 향후 저장소 위치가 변경되면 프록시를 설치하거나 새 저장소 위치를 지정하여 이전 소프트웨어의 패치 릴리스를 릴리스해야한다는 것입니다 (또는 .m2/settings.xml
마지막 수단으로 추가 저장소를 항상 제공 할 수 있음). 그러나 이것은 단점이 아니라 릴리스 관리에서 좋은 재현성과 이식성에 필요한 결과로 보입니다.
다른 생각은?
Maven 프로젝트, pom.xml 또는 settings.xml에 필요한 저장소를 지정하는 가장 좋은 위치는 어디입니까? 각 위치의 장단점은 무엇입니까? 모범 사례는 무엇입니까?
pom.xml
빌드를 이식 가능하게 유지하기 때문에 프로젝트의 특정 프로젝트에 필요한 리포지토리를 개인적으로 정의합니다 . 이 settings.xml
파일은 내 의견으로는 사용자 특정 또는 비밀스러운 용도로만 사용해야합니다. 아니요, 사용자에게 저장소 위치를 추가하도록 요청하면 이것이 적절하게 문서화되어 있어도 어떻게 든 maven의 기능 (투명한 종속성 처리) 중 하나를 무력화하고이 아이디어가 마음에 들지 않습니다.
settings.xml
리포지토리를 다루는 데 사용할 수있는 유일한 "좋은"사용 사례 는 기업 리포지토리가 있고 Maven이 공개 리포지토리 대신이 리포지토리를 사용하기를 원할 때입니다. 예를 들어 공용 저장소 에 대한 연결을 방지 하려면 회사 저장소를 모든 저장소의 미러로 선언합니다.
<settings>
...
<mirrors>
<mirror>
<id>proxy-of-entire-earth</id>
<mirrorOf>*</mirrorOf>
<name>Maven Repository Manager running on repo.mycompany.com</name>
<url>http://repo.mycompany.com/proxy</url>
</mirror>
</mirrors>
...
</settings>
나는 항상 POM에 URL을 넣고 settings.xml에 암호를 넣습니다. settings.xml에 URL을 넣는 경우 URL이 변경되면 사용자가 로컬 시스템에서 파일을 업데이트해야합니다. URL이 POM에 지정된 경우 URL을 변경하고 새 릴리스를 푸시 할 수 있습니다. URL은 대부분이 예측할 수있는 것보다 더 자주 변경되며 빌드가 중단 될 때 사용자를 실망시킵니다.
명백한 이유로 암호는 settings.xml에 보관됩니다. 암호는 버전 관리에 보관되어서는 안됩니다. 원격 저장소에 배포하려면 mvn 배포 기능에 대한 암호가 필요합니다.
settings.xml
대신에 저장소 URL을 저장해야하는 세 가지 이유를 알려 드리겠습니다 pom.xml
.
- spekdrum 은 실제로 우리에게 일어난 일을 언급했습니다.
기업 저장소가 있고 고객을위한 프로젝트를 구축하고 있고 마지막에 소스 코드를 제공해야하는 경우 settings.xml에서 저장소를 더 잘 구성 할 수 있습니다. 프로젝트가 사무실 외부에 구축 될 때마다 Artifactory (또는 이와 유사한)에 도달하는 것을 원하지 않습니다.
Sonatype에있는 사람은 추천 에서 URL을 배치
settings.xml
.종속성 저장소가 다운되면 (생각해보십시오
java.net
) 한 곳에서 URL을 수정하면됩니다. 사용한 경우pom.xml
모든 이전 릴리스가 손상됩니다.pom.xml
릴리스 별 고정 버전 을 커밋해야 할 수 있습니다 .
settings.xml
보다 많은 작업 에서 URL을 구성하고 pom.xml
있습니까? 물론.
더 많은 유연성을 얻습니까? 물론.
다음 settings.xml
과 같이 표시되어야합니다.
<settings>
<profiles>
<profile>
<id>mycompany-servers</id>
<repositories>
<repository>
<id>mycompany-release</id>
<url>https://mycompany.com/release/</url>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
<repository>
<id>mycompany-snapshot</id>
<url>https://mycompany.com/snapshot/</url>
<releases>
<enabled>false</enabled>
</releases>
</repository>
</repositories>
</profile>
</profiles>
<activeProfiles>
<activeProfile>mycompany-servers</activeProfile>
</activeProfiles>
<servers>
<server>
<id>mycompany-release</id>
<username>your-username</username>
<password>your-api-key</password>
</server>
<server>
<id>mycompany-snapshot</id>
<username>your-username</username>
<password>your-api-key</password>
</server>
</servers>
</settings>
ReferenceURL : https://stackoverflow.com/questions/2225535/where-is-the-best-place-to-specify-maven-repositories-pom-xml-or-settings-xml
'IT story' 카테고리의 다른 글
`--squash`와`--no-ff --no-commit`의 차이점은 무엇입니까? (0) | 2020.12.31 |
---|---|
MySQL 쿼리의 여러 열 인덱스 이해 (0) | 2020.12.31 |
Azure의 정적 콘텐츠 (svg, woff, ttf)에 대한 404 (0) | 2020.12.30 |
Akka는 Play에서 어떻게 사용 되나요? (0) | 2020.12.30 |
JDBC 소스를 사용하여 (Py) Spark에서 데이터를 쓰고 읽는 방법은 무엇입니까? (0) | 2020.12.30 |