Maven에서 사용중인 settings.xml 파일을 확인하는 Maven 명령


답변:


333

-X 옵션 (디버그)으로 maven을 시작하고 출력의 시작을 검사하십시오. 다음과 같은 것이 있어야합니다.

...
[INFO] Error stacktraces are turned on.
[DEBUG] Reading global settings from c:\....\apache-maven-3.0.3\conf\settings.xml
[DEBUG] Reading user settings from c:\....\.m2\settings.xml
[DEBUG] Using local repository at C:\....\repository
...

(원래 디렉토리 이름은 나에 의해 제거됩니다)


10
아마도 이것은 maven 3이 출시 될 때까지 디버그 출력에 없었지만 2.5 년 후 게시물은 마침내 내가 찾던 정확한 대답입니다 (6 개월 동안 눈치 채지 못하여 죄송합니다).
harschware

내가 사용하고있는 maven 버전 인 maven2.x는 -B 플래그를 사용할 때이 중요한 세부 사항을 표시하지 않았습니다. ... 젠킨스 서버로 무슨 일이 일어나고 있는지 디버깅하려고한다면 안타깝습니다.
Cognitiaclaeves

168

cletus의 (정확한) 답변에 대한 귀하의 의견은 여러 Maven 설정 파일이 관련되어 있음을 나타냅니다.

Maven은 항상 하나 또는 두 개의 설정 파일을 사용합니다. ($ {M2_HOME} /conf/settings.xml)에 정의 된 전역 설정은 항상 필요합니다. $ {user.home} /. m2 / settings.xml에 정의 된 사용자 설정 파일은 선택 사항입니다. 사용자 설정에 정의 된 설정은 해당 전역 설정보다 우선합니다.

명령 행에서 글로벌 및 사용자 설정의 위치를 ​​대체 할 수 있습니다. 다음 예제는 글로벌 설정을 c : \ global \ settings.xml로 설정 하고 사용자 설정을 c : \ user \ settings.xml로 설정합니다 .

mvn install --settings c:\user\settings.xml 
    --global-settings c:\global\settings.xml

현재 Maven에서 사용한 사용자 및 전역 설정 파일을 설정하는 속성이나 수단이 없습니다. 이러한 값에 액세스하려면 MavenCli 및 / 또는 DefaultMavenSettingsBuilder를 수정하여 파일 위치를 해결 된 Settings 객체에 주입해야합니다.


1
여러 사용자의 settings.xml을 제공 할 수 있다면 좋을 것이므로 예를 들어 다른 프로젝트에서 사용할 수 있습니다. 프로필을 사용할 수 있다는 것을 알고 있습니다. 그러나 별도의 파일이 있으면 훨씬 좋습니다. 불가능 해요?! 건배!
despot

파일을 조작하지 않고도 사용자 설정을 한 번만 무시할 수있는 솔루션을 찾고있었습니다. 방금 사용자 설정에 전역 파일을 사용했습니다. 즉 --settings c : \ global \ settings.xml이 방법으로 사용자 파일이 생략되었습니다
msp

@despot, 파티에 늦었지만 여러 방법으로 정의 된 여러 프로필과 일부 사용자 정의 '트리거'를 통해 가능합니다 : maven.apache.org/settings.html#Activation
불가분 한

항상 현재 폴더에 pom을 요청합니다. "지정한 목표는 프로젝트를 실행해야하지만이 디렉토리 (/)에 POM이 없습니다. 올바른 디렉토리에서 Maven을 호출했는지 확인하십시오.-> [도움말 1]"
Nilesh


40

이것은 Maven의 구성 파일입니다. 두 가지 수준으로 지정할 수 있습니다.

  1. 사용자 수준. 이 settings.xml 파일은 단일 사용자를위한 구성을 제공하며 일반적으로 $ {user.home} /. m2 / settings.xml에 제공됩니다.

              NOTE: This location can be overridden with the CLI option:
    
              -s /path/to/user/settings.xml
  2. 글로벌 수준. 이 settings.xml 파일은 머신의 모든 Maven 사용자를위한 구성을 제공합니다 (모두 동일한 Maven 설치를 사용한다고 가정). 일반적으로 $ {maven.home} /conf/settings.xml에 제공됩니다.

              NOTE: This location can be overridden with the CLI option:
    
              -gs /path/to/global/settings.xml

1
이 부동산은 maven.home이 아닌 M2_HOME입니다
Rich Seller

중요하지 않습니다. maven.home을 사용하여 환경 변수를 설정하면 문제가되지 않습니다
firstthumb at

24

M2_HOME글로벌 한에 대한 환경 변수. 참조 설정 참조 :

파일 의 settings요소 settings.xml에는와 같은 다양한 방법으로 Maven 실행을 구성하는 값을 정의하는 데 사용되는 요소가 포함되어 pom.xml있지만 특정 프로젝트에 번들로 묶거나 대상에게 배포해서는 안됩니다. 여기에는 로컬 저장소 위치, 대체 원격 저장소 서버 및 인증 정보와 같은 값이 포함됩니다. settings.xml 파일이있는 위치는 두 가지가 있습니다.

  • 메이븐 설치 : $M2_HOME/conf/settings.xml
  • 사용자 설치 : ${user.home}/.m2/settings.xml

이 답변이 환경을 검사해야만 리포지토리 결정이 수행된다는 것을 암시하는 경우 이는 올바른 답변입니다. 커맨드 라인 스위치 또는 모든 settings.xml 파일에 대해 한정된 경로 목록을 제공하는 것을 배우고 싶었습니다. 아마도 그러한 메커니즘이 없을 것입니다.
harschware

3
+1 답변, Cletus. "Settings Reference"링크에서 다음 행을 언급하는 것이 좋습니다.the former settings.xml are also called global settings, the latter settings.xml are referred to as user settings. If both files exists, their contents gets merged, with the user-specific settings.xml being dominant.
Kevin Meredith

개인 리포지토리를 찾기 위해 컴퓨터 별 구성이 필요하기 때문에 많은 어려움이 있습니다. 나는 이것이 Java 생태계의 현 상태라는 것을 알고 있지만 재현 할 수없는 빌드 설정으로 이어집니다.
jpierson

24

Maven이 원하는 settings.xml을 사용하고 있는지 확인하는 빠르고 더러운 방법은 xml을 무효화하고 settings.xml이 필요한 안전한 maven 명령을 실행합니다.

settings.xml을 읽는 다면 Maven은 "settings.xml을 읽는 중 오류 가 발생했습니다 ..."라는 오류를 보고합니다.


3
클리 터스 '대답은 매우 유익한 동안,이 답변이 내가 찾던 뭘 더 엄격한 의미에서 (메이븐 자체에있는 Settings.XML의 파일보고 메커니즘의 부족있을 것 같습니다 주어진)
harschware
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.