메이븐 업데이트를 강제하는 방법?


731

이미 다른 컴퓨터에서 이미 작업중인 프로젝트를 가져 와서 종속성을 다운로드하기 시작했습니다.

분명히 내 인터넷 연결이 중단되고 이제 다음과 같은 결과가 나타납니다.

    >Build errors for comics; org.apache.maven.lifecycle.LifecycleExecutionException:
    Failed to execute goal on project comicsTest: Could not resolve dependencies for project comicsTest:comicsTest:war:0.0.1-SNAPSHOT:
    The following artifacts could not be resolved:
    org.springframework:spring-context:jar:3.0.5.RELEASE,
    org.hibernate:hibernate-entitymanager:jar:3.6.0.Final,
    org.hibernate:hibernate-core:jar:3.6.0.Final,
    org.hibernate:hibernate-commons-annotations:jar:3.2.0.Final,
    org.aspectj:aspectjweaver:jar:1.6.8,
    commons-lang:commons-lang:jar:2.5,

    >mysql:mysql-connector-java:jar:5.1.13: Failure to transfer org.springframework:spring-context:jar:3.0.5.RELEASE from http://repo1.maven.org/maven2 was cached in the local repository, resolution will not be reattempted until the update interval of central has elapsed or updates are forced.

    >Original error: Could not transfer artifact org.springframework:spring-context:jar:3.0.5.RELEASE from central (http://repo1.maven.org/maven2): No response received after 60000

maven을 강제로 업데이트하려면 어떻게합니까?


참고 사항 : 플러그인 SDK의 Atlassian Maven 에서이 문제가 발생했으며 최신 버전으로 업그레이드하면 문제가 해결되었습니다.
Wirone

답변:


1597
mvn clean install -U

-U스냅 샷 종속성 의 강제 업데이트를 의미합니다 . 릴리스 종속성은이 방법으로 업데이트 할 수 없습니다.


32
나는 lwpro2에 동의합니다. 이것은 내 문제도 해결했습니다. mvn clean만으로는 충분하지 않습니다. Navi의 대답만으로는 문제를 해결할 수 없습니다.
R. van Twisk

1
메타 데이터가 분명히 정리되지 않기 때문에 아티팩트를 사용하고 리포지토리 ID "central"을 사용하는 경우 이것이 더 복잡하다고 생각합니다.
ggb667

2
이것은 실제로 스냅 샷 종속성 항아리를 업데이트하는 것보다는 메타 데이터 만 업데이트하는 것 같습니다.
냉동 완두콩의로드 디

이 마지막 실패 종속 다운로드에서 발생하는 .lastupdated 파일에 의해 발생 않다면,이 방법은없는 일, 우리는 로베르 REIZ의 대답 같은 것을해야합니다
Junchen 리우

1
이전 버전 및 최대 maven 2.0.4에 대한 도움말을보고 있는데 -U 플래그에 대한 설명은 "-U,-update-snapshots 2.0.5부터 시작하여 저장소 정책에 관계없이 모든 스냅 샷을 업데이트합니다", "-U,-update-snapshots 원격 리포지토리에서 업데이트 된 릴리스 및 스냅 샷을 강제로 확인합니다." 두 버전 모두 2007 년에 릴리스되었습니다. 릴리스를 설명하기 위해 답변을 편집해야하는지 궁금합니다.
cleberz

93

스냅 샷 (반대로 로컬 저장소가 어떻게 든 릴리스 항아리를 위해 청소 만하는 경우 -U--update-snapshots만 업데이트 스냅 샷), 다음을 사용하여 로컬 REPO를 제거 할 수 있습니다 :

 mvn dependency:purge-local-repository

그런 다음 청소하고 다시 설치하려고합니다.

 mvn dependency:purge-local-repository clean install

https://maven.apache.org/plugins/maven-dependency-plugin/examples/purging-local-repository.html 에서 더 많은 정보를 얻을 수 있습니다.


8
내가하자마자 mvn dependency:purge-local-repository, 그것은 단지 모든 의존성을 다시 다시 다운로드했다. 이것은 내가 원하는 것이다
smac89

92

-U 모든 종속성을 강제로 업데이트하는 것 같습니다.

정리하지 않고 단일 종속성을 업데이트하거나 -U로컬 리포지토리에서 해당 종속성을 제거한 다음 빌드 할 수 있습니다.

업데이트하는 경우 아래 예 slf4j-api 1.7.1-SNAPSHOT:

rm -rf ~/.m2/repository/org/slf4j/slf4j-api/1.7.1-SNAPSHOT
mvn compile

로컬 maven 저장소를 참조하는 maven 이외의 다른 도구를 사용하는 경우 잘 작동합니다.
Mansoor Siddiqui

57

여기에있는 모든 대답은 저에게 효과적이지 않았습니다. 망치 방식을 사용했습니다.

find ~/.m2/ -name "*.lastUpdated" | xargs rm

문제가 해결되었습니다 :-)


@ DJ2 이것은 모든 파일 삭제 .m2-directory 이름*.lastUpdated
sjngm

find ~/.m2/ -name "*.lastUpdated" -delete많은 파일을 찾은 경우 일부 제한 의 위험이 xargs있거나 rm초과 하지 않습니다 .
의 Sz

45

에서 효과적으로 할 수 있습니다 Eclipse IDE. 물론 당신이 그것을 사용하는 경우.

Project_Name->Maven->Update Project Configuration->Force Update of Snapshots/Releases

1
@ lwpro2의 답변에서 명령 줄 버전을 수행했는데 명령 줄 에서 빌드 할 수 있었지만 여전히 Eclipse 내에서 빌드 할 수 없었습니다. 이렇게하면 Eclipse를 통해 빌드 할 수 있습니다.
Brick

업데이트를 실행 한 후 Eclipse를 닫았다가 다시 열어야 만 작동합니다.
ceklock

33

누군가 프로젝트의 스냅 샷 종속성 만 업데이트하고 이슈를 설치하고 싶지 않은 경우를 대비하여 :

mvn dependency:resolve -U

IDE에서 종속성을 다시 가져 오는 것을 잊지 마십시오. IDEA에서는 pom 파일을 마우스 오른쪽 버튼으로 클릭하고 Maven-> Reimport를 선택해야합니다.


13

로컬 저장소에 무엇이 있는지 확실하지 않은 경우 다음 옵션을 사용하여 빌드를 시작하는 것이 좋습니다.

-Dmaven.repo.local=localrepo

그렇게하면 클린 룸 환경에서 구축 할 수 있습니다.


5
이 명령은 localrepo 폴더를 사용하여 로컬 저장소가됨을 의미합니다. 단일 프로젝트 작업 공간에는 적합하지만 둘 이상의 프로젝트가 있고 다른 프로젝트에 의존하는 경우에는 나쁩니다. 다음 더 나은 / = / 데이터 -Dmaven.repo.local처럼 내 / localrepoDir 전체 경로를주는
tgkprog

9

내 경우에는 처음으로 다음을 수행했습니다.

mvn clean install -U

여전히 같은 오류가 표시되어 프로젝트를 닫았다가 다시 열었습니다. 마침내 일했다.


프로젝트를 다시 열지 않기 위해 의존성을 다시 가져올 수 있다고 생각합니다.
GlaIZier

4

이클립스 IDE 를 사용하는 경우 :

  • 프로젝트를 선택하십시오.
  • Alt + F5를 누르면 Maven Project 업데이트 창이 나타납니다.

  • 확인-스냅 샷 / 릴리스 강제 업데이트를 클릭하고 확인을 클릭하십시오.

Intellij IDE를 사용하는 경우

  • 설정 / 메이븐으로 이동
  • 항상 스냅 샷 업데이트 확인

3

IntelliJ IDE를 사용했는데 비슷한 문제가 있었고 Maven 탭의 "모든 프로젝트의 소스 및 업데이트 폴더 생성"을 클릭하여 해결했습니다.

여기에 이미지 설명을 입력하십시오


2

다른 상황에서 오류가 발생했습니다. 따라서 내 솔루션은 질문에 걸림돌이되는 다른 사람들에게 유용 할 수 있습니다.

문제 : 로컬 저장소를 다른 컴퓨터에 복사했는데 특수 저장소에 연결되지 않았습니다. 그래서 maven은 유효하지 않은 저장소에 대해 아티팩트를 확인하려고했습니다.

내 해결책 : _maven.repositories 파일을 제거하십시오.


2

이것은 Maven에서 가장 성가신 것 중 하나입니다. 나를 위해 다음과 같은 일이 발생합니다. 더 많은 종속성을 요구하는 종속성을 추가하지만 연결 속도가 느리면 다운로드 및 시간 초과 중에 중단되는 이음새가 생깁니다. 아직 가져 오지 않은 모든 종속성의 시간이 .m2 캐시에 자리 표시 자로 표시되어 있지만 Maven은 캐시에서 자리 표시 자 항목을 제거하여 제거하지 않으면 (선택하지 않음)이를 가져 오지 않습니다.

내가 아는 한 Maven 또는 더 정확한 Eclipse Maven 플러그인에는 이에 관한 버그가 있습니다. 누군가 이것을보고해야합니다.



1

android-maps-utils 종속성과 동일한 오류가 있습니다. 의존성 섹션에서 aar 유형 패키지를 사용하면 문제가 해결됩니다. 기본적으로 type은 jar이므로 리포지토리에서 어떤 유형의 종속성이 다운로드되는지 확인할 수 있습니다.


1

Eclipse에서이 문제를 해결하려면 다음을 수행하십시오.

1) Maven pom.xml에 아래의 종속성을 추가하고 pom.xml 파일을 저장하십시오.

<!-- https://mvnrepository.com/artifact/com.thoughtworks.xstream/xstream -->
<dependency>
    <groupId>com.thoughtworks.xstream</groupId>
    <artifactId>xstream</artifactId>
    <version>1.3.1</version>
</dependency>

2) 프로젝트로 이동 >> Maven >> 프로젝트 업데이트

프로젝트를 선택하고 확인을 클릭하십시오.

3) 선택 단계, 2 단계까지 해결되지 않으면 1 단계를 수행 한 후 아래 단계를 수행하십시오.

프로젝트로 이동 >> Maven >> 프로젝트 업데이트 >> '스냅 샷 / 릴리스 강제 업데이트'확인란을 선택하십시오.

프로젝트를 선택하고 확인을 클릭하십시오.


1

mvn 클린 설치와 함께 -U를 사용할 때 이전 버전의 maven은 누락 된 릴리스 를 강제로 검사하지 않았지만 최신 버전에서는이를 지원하지만 스냅 샷 만 있습니다.

이전 버전으로 여전히 어려움을 겪고있는 사람에게는 다음이 도움이 될 수 있습니다.

Windows에서 :

cd %userprofile%\.m2\repository
for /r %i in (*.lastUpdated) do del %i

Linux에서 :

find ~/.m2  -name "*.lastUpdated" -exec grep -q "Could not transfer" {} \; -print -exec rm {} \;

maven이 어떤 이유로 든 연결을 다운로드 할 수 없을 때마다 (연결성 / 존재하지 않는 등) $ home / .m2 디렉토리의 각 폴더에있는 dependency-name.lastUpdate 파일의 ".error = Could not transfer artifact"를 추가합니다. 이 파일을 제거하면 maven이 종속성을 다시 가져 오도록 강제합니다.


0

그것은 실행의 주요 차이점 것을 추가하는 것이 중요 mvn -U으로 하고 -U없이이-U원격 스냅 샷 항아리와 로컬 스냅 샷 단지보다 우선합니다.

항아리를 생성하는 mvn install프로젝트의 다른 모듈이있는 경우 로컬 에서 작성된 로컬 SNAPSHOT 항아리.


0

-U는 maven Repo를 강제로 업데이트하는 데 사용됩니다. 사용하다

mvn -U clean install

이것은 수락 된 답변과 정확히 같은 답변입니다. 6 년 전 ...
Kerwin Sneijders

@KerwinSneijders 그 당시 2 년 전에 답변을 추가했지만, 답변이 -U가 무엇을하는지에 대한 정보를 제공하지 않았습니다
Sanjeev Guglani

수락 된 답변에 게시 된 날부터 해당 정보가 포함되어 있음을 알 수 있습니다. (Mar 14 '12). 이 답변은 아니지만 오히려 추가 정보로 그리고 그것은하지 않은 경우에도,이 정보는 더 허용 답변 아래 코멘트에 게시
Kerwin가 Sneijders

0

나는 모든 대답을 시도했지만 아무것도 효과가없는 것 같습니다. 내 컴퓨터를 다시 시작한 다음 실행했습니다 mvn clean install -U. 그게 내 문제를 해결했다.


0

maven은 프로젝트의 모든 종속성을 로컬 저장소 (.m2 폴더)에 다운로드합니다. 인터넷이 로컬 리포지토리에 문제를 일으켜 프로젝트에 문제가 있습니다. 이것이 확실히 도움이 될지 확실하지 않지만 .m2 폴더 내의 저장소 폴더에있는 모든 파일을 삭제할 수 있습니다. 로컬 리포지토리에는 아무것도 없으므로 maven은 종속성을 다시 다운로드해야하므로 업데이트가 필요합니다. 일반적으로 .m2 폴더는 c : users : [username] :. m2에 있습니다.


-1

다른 이유로이 문제가 발생했습니다. 나는 최신 버전의 스프링 코어를 찾고 있는 maven 저장소 https://mvnrepository.com에 갔다 . 당시에는 5.0.0.M3 /이 저장소는 내 pom.xml에 대한이 항목을 보여 주었다

<!-- https://mvnrepository.com/artifact/org.springframework/spring-core -->
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-core</artifactId>
    <version>5.0.0.M3</version>
</dependency>

내가 순진한 바보 인 나는 의견이 항아리가 기본 저장소에 있다고 말하고 있다고 가정했습니다.

그러나 머리를 두드리는 많은 후에, 나는 "말을 바로 XML을 아래에 메모를보고 참고 :이 프레스코 공개 저장소에있는이 유물 ( https://artifacts.alfresco.com/nexus/content/repositories/public/ ) "

따라서 XML의 주석은 완전히 오도됩니다. 항아리는 다른 보관소에 있으므로 Maven이 찾지 못했습니다!


-3

아래 명령을 사용하여 릴리스 및 스냅 샷 저장소의 최신 업데이트를 강제로받을 수 있습니다.

mvn --update-snapshots clean install

12
이것은 수락 된 답변과 정확히 같은 답변입니다. -U는 짧은 형식의 --update-snapshots입니다.
냉동 완두콩의로드 디

-3

나는 같은 오류가 있었고 달리고 mvn install -U나서 달리는 mvn install것이 나를 위해 일했다.


10
"다른 모든 답변에서 언급 된 내용도 저에게도 효과가 있습니다"라는 답변을 게시하지 마십시오 .
kryger

-4

나는 최근에 이것을 만났고 다음을 실행하면 모든 문제가 해결되었습니다.

mvn -fae install

5
-fae,--fail-at-end Only fail the build afterwards; allow all non-impacted builds to continue업데이트되지 않은 외부 종속성을 수정하는 이상한 방법 인 것 같습니다.
Donatello

-5

mvn clean install -U작동하지 않습니다. 그러나 mvn -U clean그 뒤에 mvn clean install있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.