Testlerimi atlamak için maven-release-plugin'i nasıl edinebilirim?


177

Testleri tetiklemeden maven-release-plugin'i nasıl çalıştırabilirim?

denedim

-Dmaven.test.skip=true 

ve

-DskipTests 

ve

-DpreparationGoals=clean

... ama hiçbiri işe yaramıyor.

Evet, testlerin geçememesi durumunda serbest bırakmamam gerektiğini biliyorum, ancak iş arkadaşlarıma güvenilir testler yazma konusunda kontrolüm yok.

Yanıtlar:


406

-Darguments="-DskipTests" istediğin şeydir veya pom'daki çatallı infazları açıkça yapılandırmaktır.


1
Benim için çalışıyor, teşekkürler ve +1 ama ... Wny bu gerekli mi?
javamonkey79

5
BT gereklidir çünkü yayınlama işlemi yeni bir maven süreci çatallar ve tpical -DskipTests sistem özellikleri olarak iletilmez.
Eddie

4
keşke sana oy 2verebilseydim. Ben bu doğru almaya çalışırken saat geçirdim ... ama 1. Belgelerde bir şey mi kaçırdım veya mvn belgelerinde bir şey eksik mi? 2. <skipTests>true</skipTests>Şirketim POM'da yapılandırılmıştım. Hala çalışmadı. İşe yarayan çözümünüzdü.
Pulak Agrawal

Bu işi yapmak için pom'da belirli bir yapılandırmaya ihtiyacınız var mı?
DenCowboy

42

-Darguments="..."çatallı maven sürecine argümanlar iletir, ancak burada kullanılan iki farklı anahtarın olduğunu fark etmek önemlidir. -DskipTests(Bir test-kavanoz tipi üzerinde herhangi bir bağımlılıkları varsa bu önemlidir) güçleri herhangi testler değil maven, ama testler hala derlenmektedir. -Dmaven.test.skip=trueMaven kuvvetler bile herhangi bir test kavanoz oluşturulur olmayacak araçları testler, derlenmez.

Bu nedenle, kullanmanız gerekir -Darguments, ancak yalnızca kullanımda olan testleri atlamak için kullanımı skipTestsderlemeyi durdurmak için maven.test.skip.


21

Entegrasyon testlerini atlamak istiyorsanız, bunu yapacaksınız:

-Darguments="-DskipITs"

3

sürüm eklentisi ile testleri önlemek ve atlamak için çok farklı seçenekleriniz var

  • Birincisi, bir -Darguments sağlayarak serbest bırakma hedefine veya aşamalarına cli üzerinde argüman olarak geçmektir:

exemple: mvn -X -Darguments="-Dmaven.javadoc.skip=true -Dmaven.test.skipTests=true -Dmaven.test.skip=true" -P release-mode release:prepare

-İkincisi, pom.xml'nizde yapıdaki bu argümanları şu şekilde yapmaktır:

<plugin>    
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-release-plugin</artifactId>
                <dependencies>
                    <dependency>
                        <groupId>org.apache.maven.scm</groupId>
                        <artifactId>maven-scm-provider-gitexe</artifactId>
                        <version>1.9.4</version>
                    </dependency>
                </dependencies>
                <configuration>
                    <skip>true</skip>
                    <skipTests>true</skipTests>
                    <preparationGoals>clean validate</preparationGoals>
                    <arguments>-Dmaven.javadoc.skip=true -Dmaven.test.skipTests=true -Dmaven.test.skip=true</arguments>
                    <useReleaseProfile>false</useReleaseProfile>
                    <releaseProfiles>release-mode</releaseProfiles>
                    <tagNameFormat>TEST-@{project.version}</tagNameFormat>
                </configuration>
            </plugin>

İkinci yöntemin ilk yöntemi geçersiz kıldığına dikkat edin.

İlk önce tek bir işlemde sürüm hazırlamanızı ve daha sonra çalışma dizinindeki release.properties dosyasını düzenleyebilir ve exec.additionalArgumentsargümanlarınız varsa özelliklere bakabilirsiniz . Şöyle görünecektir:exec.additionalArguments=-Dmaven.javadoc.skip\=true -Dmaven.test.skipTests\=true -Dmaven.test.skip\=true -P release-mode .

Sonra sürümü yapabilirsiniz.


2

Tüm birim testini atlamak için bağımsız değişken kullanır

= True -Dmaven.test.skip

yani Birim testini atlamak istiyorsanız, bu

mvn install -Dmaven.test.skip=true
mvn package -Dmaven.test.skip=true

veya alternatif olarak maven-surefire-eklentisinde skipTest'leri tanımlayabilirsiniz.

pom.xml

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-surefire-plugin</artifactId>
      <version>2.12.4</version>
      <configuration>
         <skipTests>true</skipTests>
      </configuration>
</plugin>

2
Bu soru özellikle Maven sürüm eklentisi ile ilgilidir, bu yüzden bunlar kullanılacak Maven hedefleri değildir.
Jaap

-2

Maven hiçbir eklenti tam anlamıyla test derleme veya yürütme tetikler. Hedefleri belirli bir fazla sınırladığında, bir veya daha fazla eklentinin yürütülmesini tetikleyen maven yaşam döngüsü aşamalarıdır.

Bu nedenle, testler yapmadan tek bir eklenti hedefi yürütmek yeterli olacaktır:

mvn release:perform

veya proje oluşturma ve paketleme ile birleştirin:

mvn clean package release:perform
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.