Làm thế nào để buộc cập nhật maven?


731

Tôi đã nhập dự án đã làm việc của mình trên một máy tính khác và nó bắt đầu tải xuống phụ thuộc.

Rõ ràng kết nối internet của tôi bị sập và bây giờ tôi nhận được như sau:

    >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

Làm cách nào để buộc maven cập nhật?


Lưu ý bên lề: Tôi gặp vấn đề này với Atlassian Maven (từ SDK plugin) và việc nâng cấp lên phiên bản mới hơn đã giải quyết được vấn đề.
Wirone

Câu trả lời:


1597
mvn clean install -U

-Ucó nghĩa là cập nhật lực lượng của phụ thuộc ảnh chụp . Phụ thuộc phát hành không thể được cập nhật theo cách này.


32
Tôi đồng ý với lwpro2, điều này cũng giải quyết vấn đề của tôi. Chỉ cần làm sạch mvn là không đủ. Câu trả lời của Navi là không đủ để giải quyết vấn đề.
R. van Twisk

1
Tôi tin rằng điều này phức tạp hơn nếu bạn đang sử dụng artifactory và sử dụng id kho lưu trữ "trung tâm", vì siêu dữ liệu dường như không bị xóa sạch.
ggb667

2
Điều này dường như không thực sự cập nhật các lọ phụ thuộc ảnh chụp nhanh, chỉ là siêu dữ liệu.
Roddy of the Frozen Peas

nếu nó gây ra bởi tệp .lastupdated, được tạo từ lần tải xuống phụ thuộc không thành công cuối cùng, phương pháp này sẽ không hoạt động, chúng ta cần một cái gì đó giống như câu trả lời của Rober Reiz
Junchen Liu

1
Tôi đang xem trợ giúp cho các phiên bản trước và lên đến maven 2.0.4, mô tả cho cờ -U là: "-U, - snapshot update Cập nhật tất cả các snapshot bất kể chính sách kho lưu trữ" bắt đầu từ 2.0.5, nó đã trở thành: "-U, - snapshot cập nhật Buộc kiểm tra các bản phát hành và ảnh chụp nhanh được cập nhật trên kho lưu trữ từ xa" Và nó đã như thế kể từ đó. Cả hai phiên bản đều được phát hành vào năm 2007. Tôi tự hỏi liệu câu trả lời có phải được chỉnh sửa để giải thích cho các bản phát hành không?
cleberz

93

Nếu kho lưu trữ cục bộ của bạn bằng cách nào đó bị nhét vào các lọ phát hành trái ngược với ảnh chụp nhanh ( -U--update-snapshotschỉ cập nhật ảnh chụp nhanh), bạn có thể lọc repo cục bộ bằng cách sử dụng như sau:

 mvn dependency:purge-local-repository

Bạn có thể sau đó muốn làm sạch và cài đặt lại:

 mvn dependency:purge-local-repository clean install

Nhiều thông tin khác có sẵn tại https://maven.apache.org/plugins/maven-dependency-plugin/examples/purging-local-reposeective.html


8
Ngay sau khi tôi làm mvn dependency:purge-local-repository, nó chỉ cần tải lại tất cả các phụ thuộc một lần nữa, đó chính xác là những gì tôi muốn
smac89

92

-U dường như buộc cập nhật tất cả các phụ thuộc.

Nếu bạn muốn cập nhật một phụ thuộc duy nhất mà không sạch hoặc -Ubạn chỉ có thể xóa nó khỏi repo cục bộ của bạn và sau đó xây dựng.

Ví dụ dưới đây nếu cập nhật slf4j-api 1.7.1-SNAPSHOT:

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

Điều này hoạt động độc đáo nếu bạn đang sử dụng một công cụ khác ngoài maven tham chiếu kho lưu trữ maven cục bộ của bạn.
Mansoor Siddiqui

57

Tất cả các câu trả lời ở đây không làm việc cho tôi. Tôi đã sử dụng phương pháp búa:

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

Điều đó đã khắc phục vấn đề :-)


1
@ DJ2 Điều này sẽ xóa tất cả các tệp trong .m2*.lastUpdated
-directory

find ~/.m2/ -name "*.lastUpdated" -deletesẽ làm mà không có nguy hiểm xargshoặc rmvượt quá một số giới hạn (nếu tìm thấy nhiều tệp).
Một Sz

45

Bạn có thể làm hiệu quả từ Eclipse IDE. Tất nhiên nếu bạn đang sử dụng nó.

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

1
Tôi đã thực hiện phiên bản dòng lệnh trong câu trả lời của @ lwpro2, cho phép tôi xây dựng trên dòng lệnh , nhưng sau đó tôi vẫn không thể xây dựng trong Eclipse. Làm điều này có nó để xây dựng thông qua Eclipse.
Gạch

Chỉ hoạt động với tôi nếu tôi đóng và mở lại Eclipse sau khi thực hiện cập nhật.
ceklock

33

Chỉ trong trường hợp ai đó chỉ muốn cập nhật phụ thuộc ảnh chụp nhanh của dự án và không muốn cài đặt tạo tác:

mvn dependency:resolve -U

Đừng quên nhập lại các phụ thuộc trong IDE của bạn. Trong IDEA, bạn cần nhấp chuột phải vào tệp pom và chọn Maven -> Reimport


13

Nếu bạn không chắc chắn những gì bên trong kho lưu trữ cục bộ của mình, tôi khuyên bạn nên kích hoạt bản dựng với tùy chọn:

-Dmaven.repo.local=localrepo

Bằng cách đó, bạn sẽ đảm bảo xây dựng trong môi trường phòng sạch.


5
lệnh này có nghĩa là sử dụng thư mục localrepo để lưu trữ cục bộ. điều đó tốt cho một không gian làm việc của dự án nhưng lại tệ nếu bạn có nhiều dự án và ít phụ thuộc vào dự án khác. sau đó tốt hơn là bạn đưa ra một đường dẫn đầy đủ như -Dmaven.repo.local = / data / my / localrepoDir
tgkprog

9

Trong trường hợp của tôi đầu tiên tôi đã làm là:

mvn clean install -U

Tuy nhiên, nó vẫn hiển thị lỗi tương tự sau đó tôi đóng dự án và mở lại nó. Cuối cùng cũng làm việc.


Tôi nghĩ rằng bạn chỉ có thể thực hiện lại các phụ thuộc để tránh mở lại dự án
GlaIZier

4

Nếu bạn đang sử dụng IDE nhật thực :

  • Chọn dự án.
  • Nhấn alt + F5, cửa sổ Cập nhật Dự án Maven sẽ bật lên.

  • Kiểm tra - Buộc cập nhật Ảnh chụp / phát hành và nhấp vào OK.

Nếu sử dụng Intellij IDE

  • đi tới cài đặt / Maven
  • kiểm tra Luôn cập nhật ảnh chụp nhanh

3

Tôi đã sử dụng IntelliJ IDE và tôi gặp vấn đề tương tự và để giải quyết, tôi đã nhấp vào "Tạo nguồn và cập nhật thư mục cho tất cả các dự án" trong tab Maven.

nhập mô tả hình ảnh ở đây


2

Tôi đã có lỗi trong một bối cảnh khác. Vì vậy, giải pháp của tôi có thể hữu ích cho những người khác vấp phải câu hỏi:

Vấn đề: Tôi đã sao chép kho lưu trữ cục bộ sang một máy tính khác, không có kết nối với kho lưu trữ đặc biệt. Vì vậy, maven đã cố gắng kiểm tra các tạo phẩm đối với kho lưu trữ không hợp lệ.

Giải pháp của tôi: Xóa các tệp _maven.repose khu vực.


2

Đây là một trong những điều khó chịu nhất về Maven. Đối với tôi điều sau đây xảy ra: Nếu tôi thêm một phụ thuộc yêu cầu nhiều phụ thuộc hơn và nhiều hơn nữa nhưng có kết nối chậm, nó sẽ dừng lại trong khi tải xuống và hết thời gian. Trong khi hết thời gian, tất cả các phụ thuộc chưa được tìm nạp được đánh dấu bằng các vị trí giữ trong bộ nhớ cache .m2 và Maven sẽ không (không bao giờ) nhận nó trừ khi tôi xóa mục nhập giữ chỗ khỏi bộ đệm (như đã nêu) bằng cách xóa nó.

Theo như tôi thấy, Maven hay chính xác hơn là plugin Maven Eclipse có một lỗi liên quan đến việc này. Ai đó nên báo cáo điều này.


2

Bạn cần kiểm tra tệp settings.xml của bạn trong <maven_home>/confthư mục.


1

Tôi đã có cùng một lỗi với sự phụ thuộc android-maps-utils. Sử dụng gói loại aar trong phần phụ thuộc giải quyết vấn đề của tôi. Theo mặc định, loại này là jar nên có thể kiểm tra loại phụ thuộc nào trong kho được tải xuống.


1

Để sửa lỗi này từ Eclipse:

1) Thêm phụ thuộc bên dưới vào Maven pom.xml và lưu tệp 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) Chuyển đến dự án >> Maven >> Cập nhật dự án

chọn dự án và nhấn OK.

3) Bước tùy chọn, nếu nó không được giải quyết cho đến bước 2 thì hãy thực hiện bước dưới đây sau khi thực hiện bước 1

Chuyển đến dự án >> Maven >> Cập nhật dự án >> kiểm tra trong hộp kiểm 'Buộc cập nhật ảnh chụp / phát hành'

chọn dự án và nhấn OK.


1

Các phiên bản trước của maven không buộc kiểm tra các bản phát hành bị thiếu khi được sử dụng -U với cài đặt sạch mvn, chỉ các ảnh chụp nhanh, mặc dù phiên bản mới hơn hỗ trợ điều này.

Đối với ai đó vẫn đang vật lộn với phiên bản trước, việc sau đây có thể hữu ích-

Trên Windows:

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

Trên Linux:

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

Bất cứ khi nào maven không thể tải xuống các phụ thuộc vì bất kỳ lý do nào (kết nối / không tồn tại, v.v.), nó sẽ thêm ".error = Không thể chuyển tạo phẩm" trong tệp tin phụ thuộc-name.lastUpdate trong thư mục tương ứng trong thư mục $ home / .m2. Xóa các tệp này sẽ buộc maven thử tìm nạp lại các phụ thuộc.


0

Điều quan trọng cần nói thêm là sự khác biệt chính của việc chạy mvn với -Ukhông có -U là điều đó -Usẽ ghi đè lên các lọ SNAPSHOT cục bộ của bạn bằng các lọ SNAPSHOT từ xa.

Các lọ SNAPSHOT cục bộ được tạo từ cục bộ mvn installtrong trường hợp bạn có các mô-đun khác của proj tạo ra các lọ.


0

-U được sử dụng để buộc cập nhật maven Repo. Sử dụng

mvn -U clean install

Đây là câu trả lời chính xác giống như câu trả lời được chấp nhận. Đưa ra 6 năm trước ...
Kerwin Sneijder

@KerwinSneijder Tôi đã thêm câu trả lời 2 năm trước vào thời điểm đó, câu trả lời được chấp nhận không cung cấp thông tin về những gì -U làm ở đây
Sanjeev Guglani

Theo như tôi có thể nói câu trả lời được chấp nhận bao gồm thông tin đó kể từ ngày nó được đăng. (14 tháng 3 năm 12). Và ngay cả khi không, thông tin này vẫn được đăng tốt hơn trong một bình luận bên dưới các câu trả lời được chấp nhận vì nó không phải là câu trả lời mà là thông tin bổ sung
Kerwin Sneijder

0

Tôi đã thử tất cả các câu trả lời ở đây nhưng dường như không có gì để làm việc. Khởi động lại máy tính của tôi trước rồi chạy mvn clean install -U. Điều đó đã giải quyết vấn đề của tôi.


0

Những gì maven làm là, nó tải tất cả các phụ thuộc dự án của bạn vào repo cục bộ (thư mục .m2). Do internet gây ra sự cố với repo cục bộ của bạn, dự án của bạn đang gặp vấn đề. Tôi không chắc điều này có chắc chắn sẽ giúp bạn hay không nhưng bạn có thể thử xóa tất cả các tệp trong thư mục kho lưu trữ bên trong thư mục .m2. Vì sẽ không có gì trong repo cục bộ, maven sẽ bị buộc phải tải lại các phụ thuộc một lần nữa, do đó buộc phải cập nhật. Nói chung, thư mục .m2 được đặt tại c: users: [tên người dùng] :. m2


-1

Tôi đã có vấn đề này vì một lý do khác nhau. Tôi đã đi đến kho lưu trữ maven https://mvnreposective.com để tìm phiên bản mới nhất của lõi lò xo, vào thời điểm đó là 5.0.0.M3 / Kho lưu trữ đã hiển thị cho tôi mục này cho pom.xml của tôi:

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

Ngây thơ là tôi, tôi giả sử rằng bình luận đã nói với tôi rằng cái hũ nằm trong kho lưu trữ mặc định.

Tuy nhiên, sau rất nhiều tiếng đập đầu, tôi đã thấy một ghi chú ngay bên dưới xml có nội dung "Lưu ý: hiện vật này được đặt tại kho lưu trữ công cộng Alfresco ( https://artifacts.alfresco.com/nexus/content/repose khu / public / ) "

Vì vậy, nhận xét trong XML là hoàn toàn sai lệch. Chiếc bình nằm trong một kho lưu trữ khác, đó là lý do tại sao Maven không thể tìm thấy nó!


-3

Chúng tôi có thể buộc phải nhận bản cập nhật mới nhất của kho lưu trữ phát hành và ảnh chụp nhanh bằng lệnh bên dưới:

mvn --update-snapshots clean install

12
Đây là câu trả lời chính xác giống như câu trả lời được chấp nhận. -U là dạng ngắn của --update-snapshots.
Roddy of the Frozen Peas

-3

Tôi đã có cùng một lỗi và chạy mvn install -Uvà sau đó chạy mvn installlàm việc cho tôi.


10
Xin đừng đăng "những điều được đề cập trong tất cả các câu trả lời khác cũng có hiệu quả với tôi" .
kryger

-4

Tôi đã chạy vào đây gần đây và chạy sau đây đã khắc phục tất cả các vấn đề

mvn -fae install

5
-fae,--fail-at-end Only fail the build afterwards; allow all non-impacted builds to continueCó vẻ như một cách kỳ lạ để sửa các phụ thuộc bên ngoài không được cập nhật ..
Donatello

-5

mvn clean install -Ukhông hoạt động. Tuy nhiên mvn -U cleantiếp theo là mvn clean installkhông.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.