나는 pom.xml 파일을 가지고 있으며 <artifactId>
그 차이가 태그 에있는 것과 동일하게 참조되는 3 개의 종속성임을 알 수 있습니다.
<classifier>sources</classifier>
<classifier>javadoc</classifier>
종속성이 SOURCES/JAVADOC
하나 뿐인 종속성을 삭제했습니다 . 내 응용 프로그램을 테스트했는데 모든 것이 잘 작동합니다.
이 분류 자 태그를 사용하는 목적은 무엇입니까? <classifier>
태그 를 추가하기 위해 종속성을 두 번 복제해야하는 이유 SOURCES/JAVADOC
.
<dependency>
<groupId>oauth.signpost</groupId>
<artifactId>signpost-commonshttp4</artifactId>
<version>1.2.1.2</version>
<type>jar</type>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>oauth.signpost</groupId>
<artifactId>signpost-commonshttp4</artifactId>
<version>1.2.1.2</version>
<type>jar</type>
***<classifier>javadoc</classifier>***
<scope>compile</scope>
</dependency>
<dependency>
<groupId>oauth.signpost</groupId>
<artifactId>signpost-commonshttp4</artifactId>
<version>1.2.1.2</version>
<type>jar</type>
***<classifier>sources</classifier>***
<scope>compile</scope>
</dependency>
답변
분류기는 동일한 POM에서 빌드되었지만 내용이 다른 아티팩트를 구별합니다. 존재하는 경우 버전 번호 바로 뒤에 아티팩트 이름에 추가되는 선택적 임의의 문자열입니다.
답변
classifier
더 나은 유용성을 이해하는 데 도움이되는 예제에 의한 또 다른 실용적인 대답 .
두 가지 버전의 아티팩트가 필요하다고 가정하십시오. for openjpa
및 for eclipselink
-jar가 특별히 향상된 JPA 구현에 필요한 엔티티를 포함하기 때문입니다.
Maven 프로필에 정의 된 이러한 빌드에 대해 약간 다른 처리가있을 수 있으며 사용 된 프로필에는 property도 있습니다 <classifier />
.
에서 다르게 분류 버전을 빌드하려면 pom
(가) maven-jar-plugin
다음 followingly 구성 할 것
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>3.0.2</version>
<configuration>
<classifier>${classifier}</classifier>
</configuration>
</plugin>
둘 다 설치하면 다음과 같은 repo 파일이 생성됩니다.
org / example / data / 1.0.0 / data-1.0.0.pom
org / example / data / 1.0.0 / data-1.0.0-openjpa.jar
org / example / data / 1.0.0 / data-1.0. 0-eclipselink.jar
이제 classifier
어느 하나를 사용하는 것이 중요 하므로 OpenJPA의 경우 예를 들면 다음과 같습니다.
<dependency>
<groupId>org.example</groupId>
<artifactId>data</artifactId>
<version>1.0.0</version>
<classifier>openjpa</classifier>
</dependency>
EclipseLink의 경우 분류자를 다음과 같이 전환합니다.
<classifier>eclipselink</classifier>
답변
분류기
의 예이 요소에 대한 동기로 JRE 1.8을 대상으로하는 아티팩트를 제공하는 동시에 JRE 1.7을 계속 지원하는 아티팩트도 제공하는 프로젝트를 고려하십시오. 첫 번째 아티팩트에는 분류 자 jdk18이 장착되고 두 번째 아티팩트에는 jdk14가 장착되어 클라이언트가 사용할 항목을 선택할 수 있습니다.
분류 자의 또 다른 일반적인 사용 사례는 프로젝트의 주요 아티팩트에 보조 아티팩트를 첨부해야한다는 것입니다. Maven 중앙 저장소를 탐색하면 분류 자 소스 및 javadoc이 패키지 된 클래스 파일과 함께 프로젝트 소스 코드 및 API 문서를 배포하는 데 사용된다는 것을 알 수 있습니다.
답변
동일한 POM에 속하지만 다르게 빌드되고 버전 뒤에 파일 이름에 추가되는 두 개의 아티팩트를 구별 할 수 있습니다.
예를 들어 저장소에 다른 아티팩트 (문서, 소스 …)가있는 경우이를 참조하고 프로젝트에 종속성으로 추가 할 수 있습니다. 이 코드에서를 추가하여 <classifier>sources</classifier>
저장소에서 sources.jar을 가져옵니다.
<dependency>
<groupId>oauth.signpost</groupId>
<artifactId>signpost-commonshttp4</artifactId>
<version>1.2.1.2</version>
<type>jar</type>
***<classifier>sources</classifier>***
<scope>compile</scope>
</dependency>
실제로 더 세분화 된 수준으로 종속성을 찾을 수 있습니다.
답변
다음에 따르면 :
https://blog.packagecloud.io/eng/2017/03/09/how-does-a-maven-repository-work/
분류 자 태그는 “이차 아티팩트”를 의미하며 “전 이적 종속성”입니다. 끊어집니다! 따라서 분류 자 태그는 $ artifactId- $ version- $ classifier.jar에 의해 “Maven Coordinate”를 변경할뿐만 아니라!