2016-04-05 33 views
1

Mac Yosemite üzerinde Maven 3.3.0 kullanıyorum. Ben maven-savaş eklentisinin useCache özelliğinden yararlanmak istedim, ancak çoklu modül projemde hiçbir şey yapmıyor. BenMaven-war-plugin'in useCache özelliğini, ardışık yapılar daha hızlı olacak şekilde nasıl yapılandırabilirim?

mvn clean install -DskipTests 

çalıştırdığınızda benim projem

<profile> 
    <id>prepare-deploy-war-to-jboss</id> 
    <activation> 
     <file> 
      <exists>${basedir}/src/main/webapp</exists> 
     </file> 
    </activation> 
    <build> 
     <plugins> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-war-plugin</artifactId> 
       <version>2.6</version> 
       <configuration> 
        <useCache>true</useCache> 
        <cacheFile>/tmp/${project.artifactId}/war/work</cacheFile> 
       </configuration> 
      </plugin> 
     </plugins> 
    </build> 
</profile> 

Sonra yine aynı komutu çalıştırmak aşağıdaki yapılandırma ile çalıştırmak için yaklaşık 1:25 alır ve proje aynı süreyi alır. “İş” dosyalarının yaratıldığını görüyorum, bu yüzden eklenti kesinlikle çalışıyor ama ardışık yapılar hiçbir şey yapmıyor gibi görünüyor.

Sorgum, yapmamı neden hızlandırmıyor? useCache derlememi hızlandırmıyor, ancak eklentimi farklı şekilde yapılandırabilir miyim, böylece ardışık çalıştırmalar yapıyı hızlandırır? Başka bir eklenti varsa, arka arkaya çalışmalarda hızlanmayı hızlandırmalıyım, o zaman burada da yeterli olacaktır. gerçekten inşa süresini artırmak olmaz vakaların çoğunda bu yüzden WAR mojo code baktığımızda

cevap

1

(yazma anda), önbellek ağırlıklı, onun web app structureoverlays management ilgili tarafından kullanılır. its official documentation belirttiği gibi

Üstelik, önbellek mekanizması bir deneysel özellik, dolayısıyla muhtemelen (henüz) kullanıcı beklentilerini elde değil varsayılan olarak devre olduğunu. Ne olursa olsun bu önbellek seçeneği etkinliğinin


, bazı ipuçları olabilir maven yapýlar hızlandırmak için:

  • gerçekten
  • çevrimdışı oluşturmayı düşünün her çalıştırmanın clean gerekip gerekmediğini düşünün (-o opsiyonu) İhtiyacınız olan her şey zaten yerel önbelleğinizdeyse
  • Yapınız sırasında iş parçacığı kullanmayı düşünün (-T seçenek)
  • Oldukça kipte (-q seçeneği), geçici olarak kayıt günlüğünü kaydırarak ve yalnızca hata günlüklerini almayı düşünün (temel olarak: haber yok, iyi haber)
  • Durumunuza göre, Savaş Eklentisi, tipik bir yapının varlığıyla etkinleştirilir. war ambalajının, muhtemelen bu profilin toplayıcı/ana pompanın bir parçası olduğu ve daha sonra sadece savaş modülünde aktive edildiği anlamına gelir. çok az etkisi olsa da, aynı zamanda muhtemelen savaştan daha önemlidir yapım süresi, onun endişe modülüne Savaş Eklenti yapılandırma taşımayı düşünün ve geliştirme süresinde en az değil

Son fakat böyle bir tetiklenmiş yapılandırma önlemek Eğer recompressZippedFiles seçeneği aracılığıyla savaş dosyasına eklenen yeniden sıkıştırarak dış kütüphanelerinin varsayılan mekanizması kapatmak böylece boyutu:

gösterir zip arşivleri (kavanoz, zip vb) savaş eklenmeden eğer tekrar sıkıştırılmalıdır. Tekrar sıkıştırmak daha küçük arşiv boyutuyla sonuçlanabilir, ancak daha uzun bir yürütme süresi sağlar.
Standart:

<properties> 
    <war.recompress.files>false</war.recompress.files> 
</properties> 

<build> 
    <finalName>webapp</finalName> 
    <plugins> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-war-plugin</artifactId> 
      <version>2.6</version> 
      <configuration> 
       <recompressZippedFiles>${war.recompress.files}</recompressZippedFiles> 
      </configuration> 
     </plugin> 
    </plugins> 
</build> 

Not: true

Yani örnek bir yapılandırma gibi görünür bu yapılandırma girişi için hiçbir kullanıcı özelliği olmadığından, ben de, ona bir mülk eklendi Komut satırı (veya profil üzerinden) ile talep üzerine açıp kapatabilirsiniz.

Ardından (talep üzerine, aşağıda şimdiki yürütülmesi için üzerine rekompresyonuna anahtarlama) Önceki yapılandırmaya karşı (devre dışı bırakma rekompresyonla yukarıdaki yapılandırma ile) varsayılan yapı yürütme farklı yürütme sürelerini test edebilir:

mvn clean install -Dwar.recompress.files=true 

Geliştirme aşamasına bağlı olarak açıp kapatmak için profile it'u düşünebilirsiniz.

+0

Merhaba, tavsiye ettiğim seçeneğe geçtim (cacheFile'ı sizinkiyle eşleştirmek için) ama yine de ardışık çalışma hızını artırmak için hiçbir şey yapmadı. Aslında bunun neden bir şey yapacağını anlamıyorum. Yol keyfi. Bunu "iş" veya "webapp-cache.xml" olarak adlandırmak, belgeyi okumanın başına herhangi bir etkiye sahip olmaz. – Dave

+0

@Devamı koru, savaşımı hızlandırmak için bir ipucu ile cevabımı inceledim, test ettim ve gerçekten de yapım süresini kayganlaştıracaktı. –

+0

Sunduğunuz seçeneklerin çeşitliliğini takdir ediyorum. Yazınızı okuyana kadar bilmediğim "recompressZippedFiles" haricinde hepsini denedim. Ancak, ne yazık ki, doğru ya da yanlış ayarlanması arasında önemli bir fark görmüyorum. Bununla oynamaya devam edeceğim. – Dave