Có phải maven yêu cầu kết nối với internet tại một số điểm để có thể sử dụng nó? Có nghĩa là cụ thể nhận được các plugin maven nội bộ để biên dịch, làm sạch, đóng gói, vv?
Có phải maven yêu cầu kết nối với internet tại một số điểm để có thể sử dụng nó? Có nghĩa là cụ thể nhận được các plugin maven nội bộ để biên dịch, làm sạch, đóng gói, vv?
Câu trả lời:
Bạn có thể chạy maven trong chế độ ngoại tuyến mvn -o install
. Tất nhiên mọi hiện vật không có sẵn trong kho lưu trữ cục bộ của bạn sẽ thất bại. Maven không được xác nhận trên các kho lưu trữ phân tán, nhưng chúng chắc chắn làm cho mọi thứ liền mạch hơn. Vì lý do này mà nhiều cửa hàng sử dụng gương bên trong được đồng bộ hóa tăng dần với các repos trung tâm.
Ngoài ra, mvn dependency:go-offline
có thể được sử dụng để đảm bảo bạn có tất cả các phụ thuộc được cài đặt cục bộ trước khi bạn bắt đầu làm việc ngoại tuyến.
mvn dependency:go-offline
đơn giản là không nắm bắt được mọi thứ. Ví dụ, bên trong một máy ảo mới, dự án của tôi vẫn phải tải xuống mọi thứ ngay cả sau khi chạy mục tiêu này. Xem thêm vấn đề này .
Nếu bạn có PC có truy cập internet trong mạng LAN, bạn nên cài đặt kho lưu trữ Maven cục bộ.
Tôi khuyên dùng Nguồn mở Artifactory . Đây là những gì chúng tôi sử dụng trong tổ chức của chúng tôi, nó thực sự dễ dàng để thiết lập.
Artifactory hoạt động như một proxy giữa công cụ xây dựng của bạn (Maven, Ant, Ivy, Gradle, v.v.) và thế giới bên ngoài.
Nó lưu trữ các tạo phẩm từ xa để bạn không phải tải đi tải lại nhiều lần.
Nó chặn các yêu cầu bên ngoài không mong muốn (và đôi khi nhạy cảm với bảo mật) đối với các tạo phẩm bên trong và kiểm soát cách thức và nơi các tạo phẩm được triển khai và của ai.
Sau khi thiết lập Artifactory, bạn chỉ cần thay đổi Maven settings.xml
trong các máy phát triển:
<?xml version="1.0" encoding="UTF-8"?>
<settings xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd" xmlns="http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<mirrors>
<mirror>
<mirrorOf>*</mirrorOf>
<name>repo</name>
<url>http://maven.yourorganization.com:8081/artifactory/repo</url>
<id>repo</id>
</mirror>
</mirrors>
<profiles>
<profile>
<repositories>
<repository>
<snapshots>
<enabled>false</enabled>
</snapshots>
<id>central</id>
<name>libs-release</name>
<url>http://maven.yourorganization.com:8081/artifactory/libs-release</url>
</repository>
<repository>
<snapshots />
<id>snapshots</id>
<name>libs-snapshot</name>
<url>http://maven.yourorganization.com:8081/artifactory/libs-snapshot</url>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<snapshots>
<enabled>false</enabled>
</snapshots>
<id>central</id>
<name>plugins-release</name>
<url>http://maven.yourorganization.com:8081/artifactory/plugins-release</url>
</pluginRepository>
<pluginRepository>
<snapshots />
<id>snapshots</id>
<name>plugins-snapshot</name>
<url>http://maven.yourorganization.com:8081/artifactory/plugins-snapshot</url>
</pluginRepository>
</pluginRepositories>
<id>artifactory</id>
</profile>
</profiles>
<activeProfiles>
<activeProfile>artifactory</activeProfile>
</activeProfiles>
</settings>
Chúng tôi đã sử dụng giải pháp này vì chúng tôi gặp sự cố với truy cập internet trong các máy phát triển của mình và một số tạo phẩm đã tải xuống các tệp bị hỏng hoặc hoàn toàn không tải xuống. Chúng tôi đã không có vấn đề kể từ đó.
Bạn có hai lựa chọn cho việc này:
1.) thực hiện các thay đổi trong tệp settings.xml thêm điều này vào thẻ đầu tiên
<localRepository>C:/Users/admin/.m2/repository</localRepository>
2.) sử dụng thẻ -o cho lệnh ngoại tuyến.
mvn -o clean install -DskipTests=true
mvn -o jetty:run
Maven cần các phụ thuộc trong kho lưu trữ cục bộ của bạn. Cách dễ nhất để có được chúng là truy cập internet (hoặc khó hơn bằng cách sử dụng các giải pháp khác được cung cấp ở đây).
Vì vậy, giả sử rằng bạn có thể truy cập internet tạm thời, bạn có thể chuẩn bị ngoại tuyến bằng cách sử dụng plugin phụ thuộc maven với phụ thuộc của nó : mục tiêu go-offline . Điều này sẽ tải tất cả các phụ thuộc dự án của bạn vào kho lưu trữ cục bộ của bạn (tất nhiên thay đổi trong các phụ thuộc / plugin sẽ yêu cầu truy cập kho lưu trữ internet / trung tâm mới).
Đáng buồn thay
dependency:go-offline
đã không làm việc cho tôi vì nó đã không lưu trữ mọi thứ, tức là. Các tập tin POM và các phụ thuộc khác đề cập ngầm.
Cách giải quyết là chỉ định vị trí kho lưu trữ cục bộ , trong settings.xml
tệp có <localRepository>...</localRepository>
hoặc bằng cách chạy mvn
với -Dmaven.repo.local=...
tham số. Sau khi xây dựng dự án ban đầu, tất cả các tạo phẩm cần thiết phải được lưu vào bộ đệm, và sau đó bạn có thể tham chiếu vị trí kho lưu trữ theo cùng một cách, trong khi chạy Maven build trong chế độ ngoại tuyến ( mvn -o ...
).
Trước khi ngoại tuyến, bạn phải đảm bảo rằng mọi thứ đều nằm trong repo cục bộ của bạn, điều này là bắt buộc khi làm việc ngoại tuyến. Chạy "phụ thuộc mvn: go-offline" cho (các) dự án / pom (s), bạn dự định làm việc, sẽ làm giảm các nỗ lực để đạt được điều này.
Nhưng nó thường không phải là toàn bộ câu chuyện, bởi vì sự phụ thuộc: go-offline sẽ chỉ tải xuống các plugin "bản dựng trần" ( go-offline / giải quyết-plugin không giải quyết tất cả các phụ thuộc của plugin ). Vì vậy, bạn phải tìm cách tải xuống các plugin triển khai / thử nghiệm / trang web (và có thể các plugin khác) và các phụ thuộc của chúng vào repo của bạn.
Hơn nữa, sự phụ thuộc: go-offline không tải xuống chính tạo phẩm pom, vì vậy bạn phải phụ thuộc: sao chép nó nếu cần.
Đôi khi - như MaDa đã viết - bạn không biết, bạn sẽ cần gì, trong khi ngoại tuyến, điều này khiến cho việc có một repo "đủ" là điều không thể.
Dù sao, có một repo được điền đúng cách, bạn chỉ phải thêm "<offline> true </ offline>" vào tệp cài đặt Maven ERICs để ngoại tuyến.
Không thay đổi hồ sơ Maven (id) bạn đã sử dụng để điền vào repo của mình khi đang ngoại tuyến. Maven nhận ra các tạo phẩm được tải xuống trong siêu dữ liệu của nó với một "danh tính", được liên kết với id hồ sơ.
Nếu bạn đang sử dụng IntelliJ, bạn chỉ cần truy cập Tùy chọn -> Xây dựng, Thực thi, Triển khai -> Công cụ xây dựng -> Maven và kiểm tra / bỏ chọn Công việc ngoại tuyến .
công việc này là dành cho bạn?
http://jojondder.blogspot.com/2009/04/rucky-maven-offline-USE-local.html
Đừng quên thêm nó vào kho lưu trữ plugin của bạn và trỏ url đến bất cứ nơi nào kho lưu trữ của bạn.
<repositories>
<repository>
<id>local</id>
<url>file://D:\mavenrepo</url>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>local</id>
<url>file://D:\mavenrepo</url>
</pluginRepository>
</pluginRepositories>
Nếu không, bạn có thể cần phải chạy một máy chủ cục bộ, ví dụ như apache, trên máy của bạn.
(nguồn: jfrog.com )
hoặc là
Chỉ cần sử dụng các máy chủ kho lưu trữ Maven như Sonatype Nexus http://www.sonatype.org/nexus/ hoặc JFrog Artifactory https://www.jfrog.com/artifactory/ .
Sau khi một nhà phát triển xây dựng dự án, xây dựng bởi các nhà phát triển tiếp theo hoặc Jenkins CI sẽ không yêu cầu truy cập Internet.
Máy chủ kho lưu trữ Maven cũng có thể có các proxy được định cấu hình để truy cập Maven Central (hoặc các kho lưu trữ công cộng cần thiết hơn) và chúng có thể có danh sách các tạo phẩm trong các kho lưu trữ từ xa.
Kinh nghiệm của tôi cho thấy tùy chọn -o không hoạt động chính xác và mục tiêu ngoại tuyến không đủ để cho phép xây dựng ngoại tuyến đầy đủ:
Giải pháp tôi có thể xác thực bao gồm sử dụng --legacy-local-repository
tùy chọn maven thay vì -o
(ngoại tuyến) và sử dụng kho lưu trữ cục bộ thay cho kho lưu trữ phân phối
Ngoài ra, tôi đã phải sao chép mọi maven-metadata-maven2_central.xml
tệp của repo cục bộ vào maven-metadata.xml
biểu mẫu mà maven mong đợi.
Xem giải pháp tôi tìm thấy ở đây .
Trả lời câu hỏi của bạn trực tiếp: nó không yêu cầu kết nối internet, nhưng truy cập vào kho lưu trữ, trên mạng LAN hoặc đĩa cục bộ (sử dụng gợi ý từ những người khác đã đăng ở đây).
Nếu dự án của bạn chưa ở giai đoạn trưởng thành, điều đó có nghĩa là khi các POM được thay đổi khá thường xuyên, chế độ ngoại tuyến sẽ rất không thực tế, vì bạn cũng sẽ phải cập nhật kho lưu trữ của mình khá thường xuyên. Trừ khi bạn có thể có được một bản sao của một kho lưu trữ có mọi thứ bạn cần, nhưng làm sao bạn biết? Thông thường, bạn bắt đầu một kho lưu trữ từ đầu và nó sẽ được nhân bản dần dần trong quá trình phát triển (trên một máy tính được kết nối với một kho lưu trữ khác). Một bản sao của kho lưu trữ công cộng repo1.maven.org nặng hàng trăm gigabyte, vì vậy tôi cũng không đề xuất vũ lực.
Một plugin mới đã xuất hiện để khắc phục những thiếu sót của mvn dependency:go-offline
:
https://github.com/qwar/go-offline-maven-plugin
Thêm nó vào pom của bạn, sau đó chạy mvn -T1C de.qaware.maven:go-offline-maven-plugin:resolve-dependencies
. Khi bạn đã thiết lập tất cả các phụ thuộc động, maven sẽ không thử tải xuống bất cứ thứ gì nữa (cho đến khi bạn cập nhật các phiên bản).
<offline> false </offline>
<localRepository>${user.home}/.m2/repository</localRepository>
đến
<offline> true <offline>
<localRepository>${user.home}/.m2/repository</localRepository>
Thay đổi thẻ ngoại tuyến từ false thành true.
sẽ tải xuống từ repo trực tuyến