Maven이 올바른 저장소를 사용하도록하려면 어떻게해야합니까?
방금 몇 가지 프로젝트를 확인하고 빌드해야했지만 Maven을 꽤 오래 전에 설치했고 (6 개월 정도?) 이후 실제로 사용하지 않았습니다. 프로젝트의 pom.xml에는이 항목이 없습니다. http://repo1.maven.org/myurlhere "어디에서나-프로젝트에 대한 maven 저장소가있는 절대 URL이 있지만 maven은 여전히 일반 maven 저장소에서 다운로드하려고합니다.
Macintosh:trunk$ mvn clean install
[INFO] Scanning for projects...
Downloading: http://repo1.maven.org/url/project/project/x.x/project-x.x.pom
[INFO] Unable to find resource 'url.project:project:pom:x.x' in repository central (http://repo1.maven.org/)
[INFO] ------------------------------------------------------------------------
[ERROR] FATAL ERROR
[INFO] ------------------------------------------------------------------------
[INFO] Failed to resolve artifact.
GroupId: url.project
ArtifactId: project
Version: x.x
Reason: Unable to download the artifact from any repository
url.project:project:pom:x.x
from the specified remote repositories:
central (http://repo1.maven.org/)
누구든지 내가 옳지 않은 일로 나를 도울 수 있습니까? 기본적으로 명령 줄에서 프로젝트를 확인하고 디렉토리로 cd-ed하고 "mvn clean install"을 실행했습니다. 어떤 도움이라도 대단히 감사합니다.
내가 가지고있는 프로젝트의 pom.xml에는이 " http://repo1.maven.org/myurlhere "가 어디에도 없습니다.
모든 프로젝트에는 기본적 으로 http://repo1.maven.org/ 가 <repository>
(및 <pluginRepository>
)으로 선언되어 있습니다 . 중앙 저장소 라고하는이 저장소 는 "Super POM"에서 다른 기본 설정처럼 상속됩니다 (모든 프로젝트는 Super POM에서 상 속됨). 따라서 POM은 실제로 Super POM, 모든 상위 POM 및 현재 POM의 조합입니다. 이 조합을 "유효 POM"이라고하며 effective-pom
Maven 도움말 플러그인 의 목표를 사용하여 인쇄 할 수 있습니다 (디버깅에 유용함).
그리고 실제로 다음을 실행하면 :
mvn help:effective-pom
최소한 다음이 표시됩니다.
<repositories>
<repository>
<snapshots>
<enabled>false</enabled>
</snapshots>
<id>central</id>
<name>Maven Repository Switchboard</name>
<url>http://repo1.maven.org/maven2</url>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<releases>
<updatePolicy>never</updatePolicy>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
<id>central</id>
<name>Maven Plugin Repository</name>
<url>http://repo1.maven.org/maven2</url>
</pluginRepository>
</pluginRepositories>
프로젝트에 대한 maven repo가있는 절대 URL이 있지만 maven은 여전히 일반 maven repo에서 다운로드하려고합니다.
Maven은 우리가 본 것처럼 기본적으로 존재 하는 중앙 저장소를 포함하여 선언 된 모든 저장소에서 종속성을 찾으려고합니다 . 그러나 보여주는 추적에 따르면 하나의 저장소 (중앙 저장소) 만 정의되어 있거나 maven은 다음과 같이 인쇄합니다.
Reason: Unable to download the artifact from any repository
url.project:project:pom:x.x
from the specified remote repositories:
central (http://repo1.maven.org/),
another-repository (http://another/repository)
따라서 기본적으로 maven은 url.project:project:pom:x.x
중앙에서 사용할 수 없기 때문에 찾을 수 없습니다 .
그러나 체크 아웃 한 프로젝트 (특정 지침이있을 수 있음) 또는 누락 된 종속성 (다른 저장소에서 찾을 수 있음)을 알지 못하면 더 이상 도움을 줄 수 없습니다.
By default, Maven will always look in the official Maven repository, which is http://repo1.maven.org.
When Maven tries to build a project, it will look in your local repository (by default ~/.m2/repository
but you can configure it by changing the <localRepository>
value in your ~/.m2/settings.xml
) to find any dependency, plugin or report defined in your pom.xml
. If the adequate artifact is not found in your local repository, it will look in all external repositories configured, starting with the default one, http://repo1.maven.org.
You can configure Maven to avoid this default repository by setting a mirror in your settings.xml
file:
<mirrors>
<mirror>
<id>repoMirror</id>
<name>Our mirror for Maven repository</name>
<url>http://the/server/</url>
<mirrorOf>*</mirrorOf>
</mirror>
</mirrors>
This way, instead of contacting http://repo1.maven.org
, Maven will contact your entreprise repository (http://the/server
in this example).
If you want to add another repository, you can define a new one in your settings.xml file:
<profiles>
<profile>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<repositories>
<repository>
<id>foo.bar</id>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
<url>http://new/repository/server</url>
</repository>
</repositories>
You can see the complete settings.xml
model here.
Concerning the clean
process, you can ask Maven to run it offline. In this case, Maven will not try to reach any external repositories:
mvn -o clean
Basically, all Maven is telling you is that certain dependencies in your project are not available in the central maven repository. The default is to look in your local .m2 folder (local repository), and then any configured repositories in your POM, and then the central maven repository. Look at the repositories section of the Maven reference.
The problem is that the project that was checked in didn't configure the POM in such a way that all the dependencies could be found and the project could be built from scratch.
I think what you have missed here is this:
https://maven.apache.org/settings.html#Servers
The repositories for download and deployment are defined by the repositories and distributionManagement elements of the POM. However, certain settings such as username and password should not be distributed along with the pom.xml. This type of information should exist on the build server in the settings.xml.
This is the prefered way of using custom repos. So probably what is happening is that the url of this repo is in settings.xml of the build server.
Once you get hold of the url and credentials, you can put them in your machine here: ~/.m2/settings.xml
like this:
<settings ...>
.
.
.
<servers>
<server>
<id>internal-repository-group</id>
<username>YOUR-USERNAME-HERE</username>
<password>YOUR-PASSWORD-HERE</password>
</server>
</servers>
</settings>
참고URL : https://stackoverflow.com/questions/2361294/how-do-i-get-maven-to-use-the-correct-repositories
'IT TIP' 카테고리의 다른 글
MySQL에서 VARCHAR (20000)이 유효합니까? (0) | 2020.12.04 |
---|---|
하위 클래스에서 equals () 및 hashCode () 재정의… 수퍼 필드 고려 (0) | 2020.12.04 |
.NET 4.0에 기본 제공 이진 검색 트리가 있습니까? (0) | 2020.12.04 |
ggplot ()으로 선 색상 변경 (0) | 2020.12.04 |
kernel.h의 min 매크로에서“(void) (& _min1 == & _min2)”의 기능은 무엇입니까? (0) | 2020.12.04 |