2010-04-07 20 views
17

Haftalardır, maven'le güreşim, projemizi "düzgün bir şekilde" uygulamaya koyuyorum.Daha önceden eklenen maven assembly eklentisini atlama dosyalarını nasıl önlerim? Ya da üzerine yazılmasına izin verilsin mi?

neredeyse bitti ama bir inatçı küçük bir sorun var:

Ben

mvn assembly:directory

gibi "dizin" hedefi ile maven montaj eklenti kullanmak

Ben konsolun sürü olsun aşağıdaki gibi çıktı:

[INFO] tomcat/conf already added, skipping
 [INFO] tomcat/conf/Catalina already added, skipping
 [INFO] tomcat/conf/Catalina/localhost already added, skipping
 [INFO] tomcat/webapps already added, skipping

Ben kendi montaj açıklayıcısı t yazdım hat temelde birkaç FileSets'i dağıtım dizinimizdeki çeşitli alt dizinlere kopyalar. Yukarıdaki gibi mesajlar, bir FileSet dosyasındaki bir dosyanın, başka bir FileSet'in temel dizin yapısını (ve üzerine yazılabilen bazı "varsayılan" dosyaları) oluşturduğu bir konuma kopyalandığında görünür. Ya 1) bu mesajları bastırır nasıl

(ama sadece mesajları "zaten eklendi") veya 2) üzerine izin:

Yani, anlamakta zorlanıyorum?

cevap

12

bilgi mesajları Pleksus Archiver geliyor ... yerine montaj eklentisi kullanarak üzerine/dosyaları kopyalamak için maven-dependency plugin kullanmalıdır soru doğru anlarsınız.

http://jira.codehaus.org/browse/PLXCOMP-129

+1

Maven-assembly-plugin'in en son sürümüne güncellemek benim için düzeltildi. – GuiSim

+2

@GuiSim, benim için çalıştığına teşekkürler. 2.5.5 sürümü kullandım. https://maven.apache.org/plugins/maven-assembly-plugin/usage.html – shashaDenovo

1

i

+0

Yanıtınız için teşekkür ederiz. Maven bağımlılık eklentisi, ihtiyaçlarım için iyi bir uyum gibi görünmemektedir. Aslında, birkaç hafta önce denedim ve kazma işleminden sonra, dosya kümelerinden daha çok yapaylık (JUnit gibi) kopyalamaya yönelik olduğunu fark ettim. Derleme gibi görünüyor: dizin hedefi, dosyaları bir çıkış dizinine taşımak (montaj) için daha iyi bir seçimdir. Topladığımdan, montaj eklentisi, şeyleri genellikle sıkıştırmak için tek bir yerde gruplandırmak istediğiniz zaman içindir. Şu an tek sorunum, "önceden eklenmiş" mesajları nasıl önleyeceğimi/önleyebileceğimi anlayamıyorum. – gMale

+0

Hm..maven bağımlılık eklentisi (http://maven.apache.org/plugins/maven-dependency-plugin/copy-mojo.html) tam olarak ihtiyacınız olan şey gibi görünüyordu (üzerine yazma seçenekleri vb.) Belirli bir yere .. yapıt eserler (dosyaları) ... olabilir maven-kargo-eklenti (http://cargo.codehaus.org/Maven2+plugin) bir göz atmak için iyi bir fikir olabilir, neden Tomcat vb. başlatabilir/durdurabilir/dağıtabilir BTW: Assembly-plugin hangi sürümünü kullanıyorsunuz? En son güncelleme olabilir .. – khmarbaise

+0

Bu benim sorunumu tam olarak çözmüyor ama başka kimsem olmadığı için cevabınızı kabul ediyorum. Bu doğru düşünce mi? lol – gMale

2

Birlikte tek bir yerde içine ihtiyaç dizinleri çekmeye kopyalamaya karşı kaynaklar amacı ile maven-kaynaklar-eklenti kullanmak muhtemelen daha iyidir: bu konuda açık bir hata raporu vardır. Temel dizin yapınız için bir yürütme oluşturun ve özelleştirilmiş parçalar için sonraki yürütmeleri ekleyin. Hedefin üzerine yazma özelliğinin true değerine ayarlanması, özel dosyaların varsayılanların üzerine yazılmasını sağlar.

Ardından, montaj tanımlayıcılarınızda, daha önce oluşturduğunuz dosya grubunu kullanın.

1

maven 3.0.4:

tek kavanoz veya dağıtım için kombine kaynaklar yaparken hala bu mesajları almak. http://jira.codehaus.org/browse/PLXCOMP-129 , maven içinde görünmemektedir.

Çözümüm, çeşitli dışlama kalıplarını ve özellikle de klasörleri için% regex [..] kullanmaktır. Bunun ne kadar kararlı ve genel olduğunu bilmiyorum ve açıkça bakılması gerekiyor. Ancak, gerçek bir mesaj göründüğünde göremediğimiz pek çok mesaj aldığımız durumda bizler hakkında bir şeyler yapmamız gerekiyor.

DİKKAT, LİSANSI Atlama - Birleştirilmiş metin versiyonlarını daha sonra montajda yerleştiririm. Bağımlılıklardan kısmi olanlar zaten yeterince iyi değil.

Klasör adına eşleme, klasörün kendisinden değil, her şeyi hariç tutar. Klasörler çıktıda görünür ve INFO düzeyinde "atlama" mesajları yok. vocaro tarafından belirtildiği

<unpackOptions> 
    <excludes> 
    <exclude>**/NOTICE*</exclude> 
    <exclude>**/LICENSE*</exclude> 
    <exclude>**/DEPENDENCIES*</exclude> 
    <exclude>META-INF/**</exclude> 
    <!-- Exclude folders - this removes "skipping" messages --> 
    <exclude>%regex[.*/]</exclude> 
    </excludes> 
</unpackOptions> 
9

pleksus hata giderildi.Maven-assembly-plugin'in 2.4 sürümü ile (yazma sırasında en yüksek) kullanılması, ayrıntılı mesajları basmaz. Maven 3.1.x veya daha yüksek

+0

Bu, bu rahatsız edici sorunu benim için giderdi. Teşekkürler! –

2
  1. Yükseltme -

    standart Maven dağılımı http://maven.apache.org/maven-logging.html, ileriye Maven 3.1.0 den, SLF4J Basit uygulanması ile kombine günlük kaydı için SLF4J API kullanır görüyoruz.

  2. Simplelogger ile birlikte, günlük iletileri üzerinde ince ayarlı kontrole sahibiz. İstenmeyen mesajları neden olan logger tanımlamak için MAVEN_HOME/conf/günlüğü/simplelogger.properties düzenlemek ve aşağıdaki değiştirin:

    org.slf4j.simpleLogger.showLogName = true

  3. Yapınızda istenmeyen çöp gözlemleyin çıktı: (aynı zamanda yanlış geri showLogName ayarlayın) sınıf adı

    org.slf4j.simp tarafından kusurlu kaydedicisi (ler) için simplelogger.properties geri

    [INFO] org.codehaus.plexus.archiver.jar.JarArchiver - META-INF/MANIFEST.MF already added, skipping 
    
  4. azaltmak günlük düzeyi leLogger.log.org.codehaus.plexus.archiver.jar.JarArchiver = uyarısı

+0

Bu sorunun en iyi cevabı .. thx! – codeturner