Apakah maven memerlukan koneksi ke internet di beberapa titik untuk dapat menggunakannya? Berarti secara khusus mendapatkan plugin maven internal untuk kompilasi, pembersihan, pengemasan, dll?
Apakah maven memerlukan koneksi ke internet di beberapa titik untuk dapat menggunakannya? Berarti secara khusus mendapatkan plugin maven internal untuk kompilasi, pembersihan, pengemasan, dll?
Jawaban:
Anda dapat menjalankan maven dalam mode offline mvn -o install
. Tentu saja artefak apa pun yang tidak tersedia di repositori lokal Anda akan gagal. Maven tidak didasarkan pada repositori terdistribusi, tetapi mereka pasti membuat segalanya lebih mulus. Karena alasan inilah banyak toko menggunakan mirror internal yang secara bertahap disinkronkan dengan repositori pusat.
Selain itu, mvn dependency:go-offline
dapat digunakan untuk memastikan Anda memiliki semua dependensi yang diinstal secara lokal sebelum Anda mulai bekerja secara offline.
mvn dependency:go-offline
hanya tidak tidak menangkap segalanya. Di dalam mesin virtual baru, misalnya, proyek saya masih harus mengunduh banyak hal bahkan setelah menjalankan tujuan ini. Lihat juga masalah ini .
Jika Anda memiliki PC dengan akses internet di LAN, Anda harus menginstal repositori Maven lokal.
Saya merekomendasikan Open Source Artifactory . Inilah yang kami gunakan di organisasi kami, sangat mudah untuk disiapkan.
Artifactory bertindak sebagai proxy antara alat build Anda (Maven, Ant, Ivy, Gradle, dll.) Dan dunia luar.
Ini menyimpan artefak jarak jauh sehingga Anda tidak perlu mengunduhnya lagi dan lagi.
Ini memblokir permintaan eksternal yang tidak diinginkan (dan terkadang sensitif keamanan) untuk artefak internal dan mengontrol bagaimana dan di mana artefak disebarkan, dan oleh siapa.
Setelah menyiapkan Artifactory, Anda hanya perlu mengubah Maven settings.xml
di mesin pengembangan:
<?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>
Kami menggunakan solusi ini karena kami memiliki masalah dengan akses internet di mesin pengembangan kami dan beberapa artefak mengunduh file rusak atau tidak mengunduh sama sekali. Kami tidak memiliki masalah sejak itu.
Anda memiliki dua opsi untuk ini:
1.) buat perubahan di settings.xml tambahkan ini di tag pertama
<localRepository>C:/Users/admin/.m2/repository</localRepository>
2.) gunakan -o tag untuk perintah offline.
mvn -o clean install -DskipTests=true
mvn -o jetty:run
Maven membutuhkan dependensi di repositori lokal Anda. Cara termudah untuk mendapatkannya adalah dengan akses internet (atau lebih sulit menggunakan solusi lain yang disediakan di sini).
Jadi diasumsikan bahwa Anda bisa mendapatkan akses internet sementara Anda bisa bersiap untuk pergi offline menggunakan maven-dependency-plugin dengan ketergantungannya: tujuan go-offline . Ini akan mengunduh semua dependensi proyek Anda ke repositori lokal Anda (tentu saja perubahan dalam dependensi / plugin akan membutuhkan akses repositori internet / sentral baru).
Sayangnya
dependency:go-offline
tidak berhasil untuk saya karena tidak menyimpan semuanya, yaitu. File POM dan dependensi lainnya yang secara implisit menyebutkan.
Solusi telah menentukan lokasi repositori lokal , baik di dalam settings.xml
berkas dengan <localRepository>...</localRepository>
atau dengan menjalankan mvn
dengan -Dmaven.repo.local=...
parameter. Setelah pembuatan proyek awal, semua artefak yang diperlukan harus disimpan dalam cache, lalu Anda dapat mereferensikan lokasi repositori dengan cara yang sama, saat menjalankan pembuatan Maven dalam mode offline ( mvn -o ...
).
Sebelum offline, Anda harus memastikan bahwa semuanya ada di repo lokal Anda, yang diperlukan saat bekerja offline. Menjalankan "mvn dependency: go-offline" untuk project / pom (s), yang ingin Anda kerjakan, akan mengurangi upaya untuk mencapai ini.
Tetapi biasanya ini bukan keseluruhan cerita, karena ketergantungan: go-offline hanya akan mengunduh plugin "bare build" ( go-offline / menyelesaikan-plugin tidak menyelesaikan semua dependensi plugin ). Jadi, Anda harus menemukan cara untuk mengunduh plugin deploy / test / site (dan mungkin yang lain) dan dependensinya ke repo Anda.
Selanjutnya ketergantungan: go-offline tidak mengunduh artefak pom itu sendiri, jadi Anda harus ketergantungan: salin jika diperlukan.
Kadang-kadang - seperti yang ditulis MaDa - Anda tidak tahu, apa yang akan Anda butuhkan, saat offline, yang membuatnya sangat tidak mungkin untuk memiliki repo yang "cukup".
Pokoknya memiliki repo yang terisi dengan baik Anda hanya perlu menambahkan "<offline> true </offline>" ke Maven's settings.xml untuk pergi offline.
Jangan ubah profil (id) Maven yang Anda gunakan untuk mengisi repo Anda, saat sedang offline. Maven mengenali artefak yang diunduh dalam metadatanya dengan "identitas", yang terikat ke id profil.
Jika Anda menggunakan IntelliJ, Anda cukup masuk ke Preferences -> Build, Execution, Deployment -> Build Tools -> Maven dan centang / hapus centang Work offline .
Apakah ini Bekerja untukmu?
http://jojovedder.blogspot.com/2009/04/running-maven-offline-using-local.html
Jangan lupa untuk menambahkannya ke repositori plugin Anda dan arahkan url ke mana pun repositori Anda berada.
<repositories>
<repository>
<id>local</id>
<url>file://D:\mavenrepo</url>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>local</id>
<url>file://D:\mavenrepo</url>
</pluginRepository>
</pluginRepositories>
Jika tidak, Anda mungkin perlu menjalankan server lokal, mis. Apache, di komputer Anda.
(sumber: jfrog.com )
atau
Cukup gunakan server repositori Maven seperti Sonatype Nexus http://www.sonatype.org/nexus/ atau JFrog Artifactory https://www.jfrog.com/artifactory/ .
Setelah satu pengembang membangun proyek, dibangun oleh pengembang berikutnya atau Jenkins CI tidak memerlukan akses Internet.
Server repositori Maven juga dapat memiliki proxy yang dikonfigurasi untuk mengakses Maven Central (atau repositori publik yang lebih dibutuhkan), dan mereka dapat memiliki daftar artefak yang disinkronkan di repositori jarak jauh.
Pengalaman saya menunjukkan bahwa opsi -o tidak berfungsi dengan baik dan bahwa tujuan pergi-offline jauh dari cukup untuk memungkinkan pembangunan offline penuh:
Solusi yang dapat saya validasi mencakup penggunaan --legacy-local-repository
opsi maven daripada opsi -o
(offline) dan penggunaan repositori lokal sebagai pengganti repositori distribusi
Selain itu, saya harus menyalin setiap maven-metadata-maven2_central.xml
file dari repo-lokal ke dalam maven-metadata.xml
formulir yang diharapkan oleh maven.
Lihat solusi yang saya temukan di sini .
Menjawab pertanyaan Anda secara langsung: tidak memerlukan koneksi internet, tetapi akses ke repositori, di LAN atau disk lokal (gunakan petunjuk dari orang lain yang diposting di sini).
Jika proyek Anda tidak dalam fase matang, itu berarti ketika POM cukup sering diubah, mode offline akan sangat tidak praktis, karena Anda juga harus memperbarui repositori Anda cukup sering. Kecuali Anda bisa mendapatkan salinan repositori yang memiliki semua yang Anda butuhkan, tapi bagaimana Anda tahu? Biasanya Anda memulai repositori dari awal dan itu akan dikloning secara bertahap selama pengembangan (di komputer yang terhubung ke repositori lain). Salinan repositori publik repo1.maven.org memiliki berat ratusan gigabyte, jadi saya juga tidak akan merekomendasikan brute force.
Plugin baru tampaknya memperbaiki kekurangan mvn dependency:go-offline
:
https://github.com/qaware/go-offline-maven-plugin
Tambahkan di pom Anda, lalu jalankan mvn -T1C de.qaware.maven:go-offline-maven-plugin:resolve-dependencies
. Setelah Anda mengatur semua dependensi dinamis, maven tidak akan mencoba mengunduh apa pun lagi (sampai Anda memperbarui versi).
<offline> false </offline>
<localRepository>${user.home}/.m2/repository</localRepository>
untuk
<offline> true <offline>
<localRepository>${user.home}/.m2/repository</localRepository>
Ubah tag offline dari salah menjadi benar.
akan mengunduh dari repo online