Maven'ı kullanabilmek için bir noktada internet bağlantısı gerekiyor mu? Bu, özellikle derleme, temizleme, paketleme vb. İçin dahili maven eklentilerini almak anlamına mı geliyor?
Maven'ı kullanabilmek için bir noktada internet bağlantısı gerekiyor mu? Bu, özellikle derleme, temizleme, paketleme vb. İçin dahili maven eklentilerini almak anlamına mı geliyor?
Yanıtlar:
Maven'i çevrimdışı modda çalıştırabilirsiniz mvn -o install
. Elbette, yerel deponuzda bulunmayan tüm yapılar başarısız olacaktır. Maven dağıtılmış depolara dayalı değildir, ancak kesinlikle işleri daha sorunsuz hale getirir. Bu nedenle, birçok mağaza, merkezi depolarla aşamalı olarak senkronize edilen iç aynaları kullanır.
Ek olarak, mvn dependency:go-offline
çevrimdışı çalışmaya başlamadan önce tüm bağımlılıklarınızın yerel olarak kurulduğundan emin olmak için kullanılabilir.
LAN'ınızda internet erişimi olan bir bilgisayarınız varsa, yerel bir Maven deposu yüklemelisiniz.
Artifactory Open Source'u tavsiye ederim . Kuruluşumuzda kullandığımız şey bu, kurulumu gerçekten çok kolay.
Yapay, inşa aracınız (Maven, Ant, Ivy, Gradle vb.) İle dış dünya arasında bir vekil görevi görür.
Uzak eserleri önbelleğe alır, böylece onları tekrar tekrar indirmenize gerek kalmaz.
Dahili yapılara yönelik istenmeyen (ve bazen güvenliğe duyarlı) harici istekleri engeller ve yapıların nasıl, nerede ve kim tarafından dağıtılacağını kontrol eder.
Artifactory'yi kurduktan sonra, Maven'leri settings.xml
geliştirme makinelerinde değiştirmeniz yeterlidir :
<?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>
Bu çözümü kullandık çünkü geliştirme makinelerimizde internet erişimiyle ilgili sorunlar yaşadık ve bozuk dosyaları indiren veya hiç indirmeyen bazı eserler. O zamandan beri sorun yaşamadık.
Bunun için iki seçeneğiniz var:
1.) settings.xml'de değişiklik yapın bunu ilk etikete ekleyin
<localRepository>C:/Users/admin/.m2/repository</localRepository>
2.) Çevrimdışı komut için -o etiketini kullanın.
mvn -o clean install -DskipTests=true
mvn -o jetty:run
Maven'in yerel deponuzdaki bağımlılıklara ihtiyacı var. Bunları almanın en kolay yolu internet erişimidir (veya burada sağlanan diğer çözümleri kullanmak daha zordur).
Yani kullanarak çevrimdışı gitmek hazırlayabilirsiniz geçici internet erişimi elde edebilirsiniz farz maven-bağımlılık-eklentisi onun ile bağımlılık: go-çevrimdışı golü. Bu, tüm proje bağımlılıklarınızı yerel deponuza indirecektir (tabii ki bağımlılıklardaki / eklentilerdeki değişiklikler yeni internet / merkezi depo erişimi gerektirecektir).
Ne yazık ki
dependency:go-offline
, her şeyi önbelleğe almadığı için benim için çalışmadı, yani. POM dosyaları ve diğer bağımlılıklardan dolaylı olarak bahsedilir.
Geçici çözüm bir belirtmek için olmuştur yerel depo yeri dahilinde ya settings.xml
kayıtlı <localRepository>...</localRepository>
veya çalıştırarak mvn
ile -Dmaven.repo.local=...
parametresi. İlk proje derlemesinden sonra, gerekli tüm yapılar önbelleğe alınmalıdır ve ardından Maven derlemesini çevrimdışı modda ( mvn -o ...
) çalıştırırken, depo konumuna aynı yollarla başvurabilirsiniz .
Çevrimdışı olmadan önce, çevrimdışı çalışırken gerekli olan her şeyin yerel deponuzda olduğundan emin olmalısınız. Üzerinde çalışmayı planladığınız proje (ler) / pom (lar) için "mvn bağımlılığı: çevrimdışı duruma geçme" nin çalıştırılması, bunu başarma çabalarını azaltacaktır.
Ancak genellikle hikayenin tamamı değildir, çünkü bağımlılık: çevrim dışı sadece "çıplak derleme" eklentilerini indirir ( çevrimdışı / çözümleme eklentileri tüm eklenti bağımlılıklarını çözmez ). Bu yüzden deploy / test / site eklentilerini (ve belki diğerlerini) ve bunların bağımlılıklarını deponuza indirmenin bir yolunu bulmalısınız.
Ayrıca bağımlılık: Çevrimdışı, pom'un yapıtının kendisini indirmez, bu nedenle bağımlılık yapmalısınız: gerekirse kopyalayın.
Bazen - MaDa'nın yazdığı gibi - çevrimdışıyken neye ihtiyacınız olacağını bilmiyorsunuz, bu da "yeterli" bir depoya sahip olmayı oldukça imkansız kılıyor.
Her neyse, düzgün doldurulmuş bir depoya sahip olduğunuzda, çevrimdışı olmak için Maven´ın settings.xml dosyasına sadece "<offline> true </offline>" eklemeniz gerekir.
Deponuzu doldurmak için kullandığınız Maven profilini (id) çevrimdışıyken değiştirmeyin. Maven, indirilen yapıları meta verilerinde profil kimliğine bağlı bir "kimlik" ile tanır.
IntelliJ kullanıyorsanız, Tercihler -> Oluşturma, Yürütme, Dağıtım -> Oluşturma Araçları -> Maven'a gidip Çevrimdışı çalış'ı işaretleyebilir / işaretini kaldırabilirsiniz .
Bu senin için uygun mu?
http://jojovedder.blogspot.com/2009/04/running-maven-offline-using-local.html
Eklenti deponuza eklemeyi ve url'yi deponuzun olduğu yere yönlendirmeyi unutmayı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>
Değilse, makinelerinizde apache gibi yerel bir sunucu çalıştırmanız gerekebilir.
(kaynak: jfrog.com )
veya
Sonatype Nexus http://www.sonatype.org/nexus/ veya JFrog Artifactory https://www.jfrog.com/artifactory/ gibi Maven depo sunucularını kullanmanız yeterlidir .
Bir geliştirici bir proje oluşturduktan sonra, sonraki geliştiriciler veya Jenkins CI tarafından derlemek İnternet erişimi gerektirmez.
Maven depo sunucusu ayrıca Maven Central'a (veya daha fazla ihtiyaç duyulan genel depolara) erişmek için yapılandırılmış proxy'lere sahip olabilir ve uzak depolarda cynch'lenmiş yapı listesine sahip olabilirler.
Deneyimlerim, -o seçeneğinin düzgün çalışmadığını ve çevrimdışı olma hedefinin tam bir çevrimdışı derlemeye izin vermek için yeterli olmaktan uzak olduğunu gösteriyor:
Doğrulayabildiğim çözüm --legacy-local-repository
, -o
(çevrimdışı) yerine maven seçeneğinin kullanımını ve dağıtım deposu yerine yerel deponun kullanılmasını içeriyor.
Ek olarak, maven-metadata-maven2_central.xml
yerel deponun her dosyasını maven-metadata.xml
maven'in beklediği forma kopyalamak zorunda kaldım .
Burada bulduğum çözüme bakın .
Sorunuzu doğrudan yanıtlamak: İnternet bağlantısı gerektirmez, ancak bir havuza, LAN veya yerel diskte erişim gerektirir (burada yazan diğer kişilerin ipuçlarını kullanın).
Projeniz olgun bir aşamada değilse, bu, POM'lar oldukça sık değiştirildiğinde, deponuzu da sık sık güncellemeniz gerekeceğinden, çevrimdışı modun çok pratik olmayacağı anlamına gelir. İhtiyacınız olan her şeye sahip bir deponun bir kopyasını alamazsanız, ama nasıl bilebilirsiniz? Genellikle bir depoyu sıfırdan başlatırsınız ve geliştirme sırasında (başka bir depoya bağlı bir bilgisayarda) aşamalı olarak klonlanır. Repo1.maven.org genel deposunun bir kopyası yüzlerce gigabayt ağırlığındadır, bu yüzden kaba kuvvet de önermem.
Aşağıdaki eksiklikleri gidermek için yeni bir eklenti ortaya çıktı mvn dependency:go-offline
:
https://github.com/qaware/go-offline-maven-plugin
Onu ponponun içine ekle, sonra koş mvn -T1C de.qaware.maven:go-offline-maven-plugin:resolve-dependencies
. Tüm dinamik bağımlılıkları kurduktan sonra, maven bir daha hiçbir şey indirmeyi denemeyecektir (siz sürümleri güncelleyene kadar).
<offline> false </offline>
<localRepository>${user.home}/.m2/repository</localRepository>
için
<offline> true <offline>
<localRepository>${user.home}/.m2/repository</localRepository>
Çevrimdışı etiketi yanlıştan doğruya değiştirin.
çevrimiçi depodan indirilecek