2009-11-18 29 views
19

Trong dự án cơ sở của tôi, tôi sử dụng sự phụ thuộc của JasperReports có khai báo kho lưu trữ không tồn tại trong pom của nó. Khi tôi chạy tất cả các dấu phẩy Maven có phụ thuộc tìm kiếm commons-bộ sưu tập trong kho lưu trữ Jasper này vì vậy tôi cần phải chờ thời gian chờ.
Đây là dự án cơ sở của tôi và được sử dụng làm phụ thuộc trong các dự án khác của tôi nên tôi cần phải chờ thời gian chờ.
Có cách nào để di chuyển kho lưu trữ này sang danh sách đen hoặc ghi đè cài đặt này không?Làm thế nào để tự vô hiệu hóa/danh sách đen kho Maven

Ghi chú:
1.Why nó ​​tìm kiếm trong kho lưu trữ Jasper, có lẽ bacause của dãy

<dependency> 
    <groupId>commons-collections</groupId> 
    <artifactId>commons-collections</artifactId> 
    <version>[2.1,)</version> 
    <scope>compile</scope> 
</dependency> 

2.My ý tưởng để giải quyết vấn đề này là thay đổi jasper pom và sử dụng kho proxy, nhưng tôi tìm cách để một tùy chọn khác.
3.Tôi sử dụng phiên bản jasperreports 1.3.3 và tôi không muốn thay đổi nó.

Trả lời

8

Có cách nào để di chuyển kho lưu trữ này sang danh sách cấm hoặc ghi đè cài đặt này không?

Theo hiểu biết của tôi, điều này là không thể.

Tại sao nó tìm kiếm trong kho lưu trữ Jasper, có lẽ vì dãy

Vâng, tôi nghĩ rằng phạm vi là "có trách nhiệm" ở đây của hành vi này. Không có dải ô, Maven sẽ không phải kiểm tra kho lưu trữ từ xa cho phiên bản mới hơn phiên bản có sẵn trong kho lưu trữ cục bộ của bạn.

Ý tưởng của tôi để giải quyết vấn đề này là thay đổi jasper pom và sử dụng kho lưu trữ proxy, nhưng tôi tìm đến một tùy chọn khác.

Sửa lỗi jasper và sử dụng kho lưu trữ proxy tất nhiên sẽ là giải pháp lý tưởng nhưng điều này không phải lúc nào cũng có thể. Có lẽ có một cách giải quyết. Bạn đã cố gắng loại trừ các phụ thuộc chuyển tiếp của jasperreports có phạm vi và để cung cấp cho chính họ (với phiên bản cố định) trong pom của bạn để thay thế. Một cái gì đó như thế này:

<dependencies> 
    <dependency> 
    <groupId>jasperreports</groupId> 
    <artifactId>jasperreports</artifactId> 
    <version>1.3.3</version> 
    <!-- Remove Transitive dependencies drawn by Jasper Report that we don't want --> 
    <exclusions> 
     <exclusion> 
     <groupId>commons-collections</groupId> 
     <artifactId>commons-collections</artifactId> 
     </exclusion> 
     ... 
    </exclusions> 
    </dependency> 
    <dependency> 
    <groupId>commons-collections</groupId> 
    <artifactId>commons-collections</artifactId> 
    <version>2.1</version><!-- Or whatever version, as long as it's fixed --> 
    <scope>compile</scope> 
    </dependency> 
    .... 
<dependencies> 

Bằng cách này, Maven không cần phải kiểm tra kho lưu trữ không tồn tại và điều này sẽ tránh phải chờ thời gian chờ. Tôi sẽ thử.

Tôi sử dụng jasperreports phiên bản 1.3.3 và tôi không muốn thay đổi nó.

Không sao cả.

+0

@Pascal. Cảm ơn nó giúp. Phạm vi trong Maven là ác :) – cetnar

+0

@cetnar Vui vì nó rất hữu ích. Và tôi đồng ý, phạm vi không tốt, họ thêm nhiều vấn đề hơn giải pháp. –

+0

Câu trả lời của Fred dưới đây rằng nó có thể bị vô hiệu hóa xuất hiện chính xác, tôi vừa mới sử dụng nó. Có lẽ một tính năng mới? – brad

11

Bạn có thể ghi đè một repo bằng cách sử dụng một tờ khai mirrorOf trong tệp settings.xml của bạn. Mặc dù đó không phải là những gì nó thường dành cho, thiết lập ví dụ một mirrorOf trên các báo cáo jasper repoid và trỏ nó vào miền Trung (repo1.maven.org) sẽ làm cho nó biến mất một cách hiệu quả.

Tùy chọn tốt hơn là sử dụng trình quản lý kho lưu trữ như Nexus và sau đó bạn có thể kiểm soát những proxy và hiện vật nào thực sự được phân phát.

+1

Điều này thực sự đã giúp tôi, cảm ơn bạn. –

+0

Đây phải là giải pháp được chấp nhận !!! –

+0

tôi vô hiệu hóa java.net bằng cách thêm vào settings.xml ( /conf/settings.xml hoặc ~/.m2/settings.xml) ' ... disabled-jave.net https: //jcenter.bintray.com/ http://download.java.net/maven/2 ' – raisercostin

16

Sẽ không phải maven tell sau để bỏ qua một kho lưu trữ cụ thể:

<repository> 
     <id>repo1.maven</id> 
     <url>http://repo1.maven.org</url> 
     <releases> 
      <enabled>false</enabled> 
     </releases> 
     <snapshots> 
      <enabled>false</enabled> 
     </snapshots> 
    </repository> 
+0

cách tiếp cận trên là một cách tốt để danh sách đen một repo maven đó là trong pom.xml một số transitive sự phụ thuộc của và đang gây ra sự cố (như chuyển hướng 301 đáng sợ mà bạn nhận được từ java.net), nơi các thành phần đã tồn tại trong trung tâm Maven . – kkrugler

+0

Điều này đã xảy ra với tôi - một sự phụ thuộc đã tham chiếu một kho lưu trữ xem trước công nghệ mà bây giờ đã được thay thế bởi một kho lưu trữ GA. Được sử dụng để chặn nó và tất cả đều tốt trên thế giới, nhưng phew - đó là một khó khăn để theo dõi! – JoshC13

0

Giải pháp từ Fred làm việc rất lớn đối với tôi. Tôi đã phải phù hợp với Id kho lưu trữ từ tập tin pom phụ thuộc transitive phụ thuộc để có được giải pháp này làm việc.

Các vấn đề liên quan