maven 태그 와 태그 사용

Maven 을 사용 하지 않 을 때,예 를 들 어 예전 에 우 리 는 Ant 로 프로젝트 를 구축 했다.프로젝트 디 렉 터 리 에서 흔히/lib 라 는 하위 디 렉 터 리 를 볼 수 있다.그곳 에는 각종 제3자 의존 jar 파일 이 저장 되 어 있다.예 를 들 어 log4j.jar,junit.jar 등 이다.프로젝트 를 만 들 때마다 이러한/lib 디 렉 터 리 를 만 들 고 jar 파일 을 복사 해 야 합 니 다.이것 은 분명 한 중복 입 니 다.반복 은 악몽 의 출발점 입 니 다.여러 항목 이 같은 jar 파일 을 공유 하지 않 으 면 디스크 자원 의 낭 비 를 초래 할 뿐만 아니 라 버 전의 일치 성 관리 도 어렵 습 니 다.또한 SVN 과 같은 버 전 관리 도 구 를 사용한다 면(버 전 관리 도 구 를 사용 하지 않 았 습 니까?SVN 을 바로 시도 해 보 세 요.골 치 아 픈 문 제 를 해결 할 수 있 습 니 다.)코드 라 이브 러 리 에 대량의 jar 파일 을 제출 해 야 하지만 버 전 관리 도 구 는 바 이 너 리 파일 을 처리 하 는 데 뛰 어 나 지 않 습 니 다.
Maven 창 고 는 모든 JAR 파일(WAR,ZIP,POM 등)을 설치 하 는 곳 으로 모든 Maven 프로젝트 는 같은 Maven 창고 에서 자신 이 필요 로 하 는 JAR 의존 도 를 얻 을 수 있어 디스크 자원 을 절약 할 수 있다.또한 Maven 창고 에 있 는 모든 JAR 은 자신의 좌 표를 가지 고 있 기 때문에 이 좌 표 는 Maven 의 그룹 ID,구조물 ID,버 전,포장 방식 등 을 알려 주기 때문에 Maven 프로젝트 는 버 전 관리 에 편리 하 게 의존 할 수 있다.당신 도 JAR 파일 을 SCM 창고 에 제출 할 필요 가 없습니다.모든 구성원 이 사용 할 수 있 도록 조직 적 인 Maven 창 고 를 만 들 수 있 습 니 다.
요컨대 Maven 창 고 는 우리 가 부품 을 관리 하 는 데 도움 을 줄 수 있다(주로 JAR).
로 컬 창고(.m2)vs.원 격 창고(인터넷)
Maven 을 실행 할 때 Maven 이 필요 로 하 는 모든 구조물 은 로 컬 창고 에서 직접 얻 을 수 있 습 니 다.만약 로 컬 창고 가 없다 면,먼저 원 격 창고 에서 부품 을 로 컬 창고 로 다운로드 한 다음 에 로 컬 창고 의 부품 을 사용 하려 고 시도 할 것 이다.
예 를 들 어 프로젝트 는 Junit-3.8 의 의존 도 를 설정 합 니 다.mvn test 를 실행 할 때 Maven 은 Junit-3.8 의 jar 파일 을 사용 해 야 합 니 다.먼저 좌표 에 따라 로 컬 창 고 를 찾 고 찾 으 면 바로 사용 합 니 다.없 으 면 Maven 은 사용 가능 한 원 격 창고 설정 을 확인 한 다음 원 격 창고 에서 Junit-3.8 의 jar 파일 을 다운로드 하려 고 시도 합 니 다.원 격 창고 에 이 파일 이 존재 하면 Maven 은 로 컬 창고 에 다운로드 하여 사용 합 니 다.모든 원 격 창 고 를 시도 한 후에 도 Maven 이 이 파일 을 다운로드 하지 못 하면 오류 가 발생 할 수 있 습 니 다.
Maven 이 부족 한 로 컬 창고 주 소 는${user.home}/.m2/reposcory 입 니 다.즉,한 사용자 가 대응 하 는 로 컬 창 고 를 가지 고 있다 는 것 이다.
로 컬 창고 의 위 치 를 사용자 정의 할 수 있 습 니 다.${user.home}/.m2/settings.xml:

 <!-- localRepository
 | The path to the local repository maven will use to store artifacts.
 |
 | Default: ${user.home}/.m2/repository-->
 <localRepository>D:/.m2/repository</localRepository>
실행 중 로 컬 창고 위 치 를 지정 할 수 있 습 니 다:

mvn clean install -Dmaven.repo.local=/home/juven/myrepo/
또 한 가지 이해 해 야 할 것 은 우리 가 인 스 톨 을 실행 할 때 Maven 은 실제로 프로젝트 생 성 된 구조물 을 로 컬 창고 에 설치 했다 는 것 이다.즉,인 스 톨 이 된 후에 야 다른 프로젝트 가 이 프로젝트 에서 생 성 된 구조물 을 사용 할 수 있다 는 것 이다.
이 어 Maven 이 부족 한 원 격 창고,즉 Maven 중앙 창고 에 대해 알 아 보 자.
Maven 을 설치 한 후에 우 리 는 간단 한 프로젝트 를 만 들 고 간단 한 의존 도 를 설정 한 다음 에 mvn clean install 을 실행 하면 프로젝트 가 구 축 됩 니 다.우 리 는 어떤 jar 파일 도 손 으로 다운로드 하지 않 았 습 니 다.이 모든 것 은 Maven 중앙 창고 가 존재 하기 때 문 입 니 다.Maven 이 로 컬 창고 에서 필요 한 jar 파일 을 찾 지 못 할 때 원 격 창 고 를 찾 습 니 다.원 격 Maven 설치 로 원 격 창고 인 Maven 중앙 창 고 를 가 져 왔 습 니 다.
이 Maven 중앙 창 고 는 어디서 정의 되 나 요?내 기계 에 maven-2.0.10 을 설 치 했 습 니 다.이 파일 을 찾 을 수 있 습 니 다:${M2HOME}/lib/maven-2.0.10-uber.jar ,
하지만 3.xxx 버 전 이후:maven 설치 디 렉 터 리 에 있 는:/lib/maven-model-builder-${version}.jar 에서
이 파일 을 열 면 슈퍼 POM:\org\apache\maven\model\pom-4.0.0.xml 을 찾 을 수 있 습 니 다.모든 Maven POM 의 부모 POM 입 니 다.모든 Maven 프로젝트 가 이 설정 을 계승 합 니 다.이 POM 에서 다음 과 같은 설정 을 발견 할 수 있 습 니 다.

 <repositories>
 <repository>
  <id>central</id>
  <name>Central Repository</name>
  <url>https://repo.maven.apache.org/maven2</url>
  <layout>default</layout>
  <snapshots>
  <enabled>false</enabled>
  </snapshots>
 </repository>
 </repositories>
원 격 창고 의 설정 에 대해 아래 의 제 가 상세 하 게 설명 하 겠 습 니 다.중앙 창고 의 id 는 central 이 고 원 격 url 주 소 는http://repo.maven.apache.org/maven2이 며 snapshot 버 전 구조 재 다운로드 지원 을 닫 았 습 니 다.
POM 에 원 격 창고 설정
앞에서 우 리 는 슈퍼 POM 이 ID 가 central 인 원 격 창 고 를 설정 한 것 을 보 았 습 니 다.우 리 는 POM 에 다른 원 격 창 고 를 설정 할 수 있 습 니 다.이렇게 하 는 이 유 는 여러 가지 가 있 습 니 다.예 를 들 어 랜 의 원 격 창 고 를 가지 고 있 습 니 다.이 창 고 를 사용 하면 다운로드 속 도 를 크게 향상 시 킬 수 있 고 구축 속 도 를 높 일 수 있 습 니 다.또한 당신 이 의존 하 는 jar 는 central 에서 찾 을 수 없 을 수도 있 습 니 다.특정한 공공 창고 에 만 존재 합 니 다.그러면 원 격 창고 의 설정 을 추가 해 야 합 니 다.
중앙 창 고 를 가리 키 는 원 격 창 고 를 설정 합 니 다.

<project>
...
 <repositories>
 <repository>
  <id>maven-net-cn</id>
  <name>Maven China Mirror</name>
  <url>http://maven.net.cn/content/groups/public/</url>
  <releases>
  <enabled>true</enabled>
  </releases>
  <snapshots>
  <enabled>false</enabled>
  </snapshots>
 </repository>
 </repositories>
 <pluginRepositories>
 <pluginRepository>
  <id>maven-net-cn</id>
  <name>Maven China Mirror</name>
  <url>http://maven.net.cn/content/groups/public/</url>
  <releases>
  <enabled>true</enabled>
  </releases>
  <snapshots>
  <enabled>false</enabled>
  </snapshots> 
 </pluginRepository>
 </pluginRepositories>
...
</project>
먼저의 설정 을 살 펴 보 겠 습 니 다.아래 에 여러 개의를 추가 할 수 있 습 니 다.모든에는 유일한 ID,설명 적 인 name,그리고 가장 중요 한 원 격 창고 의 url 이 있 습 니 다.또한,true는 Maven 에 게 이 창고 에서 releases 버 전의 구성 요 소 를 다운로드 할 수 있 음 을 알려 주 고,false는 Maven 에 게 이 창고 에서 snapshot 버 전의 구성 요 소 를 다운로드 하지 말 라 고 알려 줍 니 다.공공 창고 에서 snapshot 구조물 을 다운로드 하 는 것 을 금지 하 는 것 은 추천 하 는 방법 입 니 다.이 구조물 들 이 불안정 하고 통제 되 지 않 기 때문에 사용 을 피해 야 합 니 다.물론 랜 내 조직 내부 창 고 를 사용 하려 면 snapshot 지원 을 활성화 할 수 있 습 니 다.
에 대한 더 자세 한 설정 및 설명 은 다음 을 참고 하 십시오.http://www.sonatype.com/books/maven-book/reference_zh/apas02s08.html
에 대해 서 는 Maven 이 플러그 인 구성 요 소 를 어디서 다운로드 하 는 지 설정 합 니 다(Maven 의 모든 실제 행 위 는 플러그 인 에 의 해 이 루어 집 니 다).이 요소 의 내부 설정 은와 완전히 같 아서 설명 하지 않 습 니 다.
settings.xml 에 원 격 창 고 를 설정 합 니 다.
우 리 는 POM 에 원 격 창 고 를 어떻게 배치 하 는 지 알 게 되 었 으 나 이러한 상황 을 고려 했다.한 회사 내부 에서 이 세 가지 프로젝트 를 동시에 진행 하고 앞으로 이 몇 가지 프로젝트 가 끝나 면서 점점 더 많은 프로젝트 가 시 작 될 것 이다.동시에 회사 내부 에 Maven 창 고 를 세 웠 다.우 리 는 모든 항목 에 이 창 고 를 배치 하기 때문에 모든 항목 에 똑 같은 설정 을 제공 해 야 한다.문제 가 생 겼 습 니 다.이것 은 중복 입 니 다!
사실 우 리 는 한 번 만 설정 할 수 있 습 니 다.어디서 설정 합 니까?settings.xml 입 니 다.
그러나 일 은 그리 간단 하지 않 습 니 다.POM 의요 소 를 settings.xml 에 간단하게 복사 하면 되 는 것 이 아 닙 니 다.setting.xml 은 이 두 요 소 를 직접 지원 하지 않 습 니 다.그러나 우 리 는 복잡 하지 않 은 해결 방안 이 있 습 니 다.바로 profflee 를 이용 하 는 것 입 니 다.다음 과 같 습 니 다.

<settings>
 ...
 <profiles>
 <profile>
  <id>dev</id>
  <!-- repositories and pluginRepositories here-->
 </profile>
 </profiles>
 <activeProfiles>
 <activeProfile>dev</activeProfile>
 </activeProfiles>
 ...
</settings>
이 프로필 에 모든 reposcories 와 pluginRepositories 요 소 를 넣 고요 소 를 사용 하여 이 프로필 을 자동 으로 활성화 합 니 다.이렇게 하면 모든 POM 에 창 고 를 중복 배치 할 필요 가 없다.
프로필 을 사용 하여 settings.xml 에 창 고 를 추가 하 는 데 사용자 전역 범위 의 창고 설정 을 제공 합 니 다.
미 러 사용
지리 적 위치 근처에 속도 가 빠 른 central 미 러 가 있 거나 central 창고 설정 을 덮어 쓰 고 싶 거나 모든 POM 에 유일한 원 격 창고(이 원 격 창고 에이전트 에 필요 한 모든 다른 창고)를 사용 하고 싶다 면 settings.xml 의 mirror 설정 을 사용 할 수 있 습 니 다.
다음 mirror 설정 은 Maven.NET.cn 으로 Maven 자체 테이프 의 central 을 덮어 씁 니 다.

<settings>
...
 <mirrors>
 <mirror>
  <id>maven-net-cn</id>
  <name>Maven China Mirror</name>
  <url>http://maven.net.cn/content/groups/public/</url>
  <mirrorOf>central</mirrorOf>
 </mirror>
 </mirrors>
...
</settings>

여기 서 유일 하 게 설명 해 야 할 것 은입 니 다.여기 서 우 리 는 central 의 미 러 를 설정 합 니 다.우 리 는 모든 창고 의 미 러 를 설정 하여 이 미 러 가 Maven 에서 유일 하 게 사용 하 는 창고 임 을 보증 할 수 있 습 니 다.

 <mirrors>
 <!-- mirror
  | Specifies a repository mirror site to use instead of a given repository. The repository that
  | this mirror serves has an ID that matches the mirrorOf element of this mirror. IDs are used
  | for inheritance and direct lookup purposes, and must be unique across the set of mirrors.
  |
  -->
 <mirror>
  <id>nexus</id>
  <mirrorOf>*</mirrorOf>
  <name>Nexus Mirror</name>
  <url>http://xx.xx/nexus/content/groups/public</url>
 </mirror>
 </mirrors>

<settings>
...
 <mirrors>
 <mirror>
  <id>my-org-repo</id>
  <name>Repository in My Orgnization</name>
  <url>http://192.168.1.100/maven2</url>
  <mirrorOf>*</mirrorOf>
 </mirror>
 </mirrors>
...
</settings>

마 븐태그 와태그 에 대한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 마 븐태그 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 많은 지원 바 랍 니 다!

좋은 웹페이지 즐겨찾기