Bagaimana saya bisa mendapatkan maven-release-plugin untuk melewati tes saya?

177

Bagaimana saya bisa menjalankan maven-release-plugin tanpa memicu tes?

saya telah mencoba

-Dmaven.test.skip=true 

dan

-DskipTests 

dan

-DpreparationGoals=clean

... belum ada yang berhasil.

Ya, saya tahu saya tidak boleh melepaskan jika tes tidak lulus, tetapi saya tidak memiliki kendali atas membuat rekan kerja saya menulis tes yang dapat diandalkan.

Steven
sumber

Jawaban:

406

-Darguments="-DskipTests" adalah apa yang Anda inginkan, atau secara eksplisit mengkonfigurasi eksekusi bercabang di pom.

bmargulies
sumber
1
Ini berfungsi untuk saya, terima kasih dan +1 tetapi ... Apakah ini perlu?
javamonkey79
5
TI diperlukan karena proses rilis garpu proses maven baru, dan ttical -DskipTests tidak diteruskan sebagai properti sistem.
Eddie
4
berharap aku bisa memilihmu 2. Saya menghabiskan berjam-jam mencoba untuk memperbaiki ini ... tetapi 1. Apakah saya melewatkan sesuatu dalam dokumentasi atau apakah dokumentasi mvn kehilangan sesuatu? 2. Saya telah <skipTests>true</skipTests>mengkonfigurasi POM perusahaan saya. Masih tidak berhasil. Apa yang berhasil adalah solusi Anda.
Pulak Agrawal
Apakah Anda memerlukan konfigurasi khusus di pom untuk membuat ini berfungsi?
DenCowboy
42

-Darguments="..."meneruskan argumen ke proses maven bercabang dua, tetapi penting untuk menyadari bahwa ada dua sakelar berbeda yang digunakan di sini. The -DskipTestspasukan maven untuk tidak menjalankan tes, tetapi tes masih disusun (ini penting jika Anda memiliki ketergantungan pada jenis tes-jar). The -Dmaven.test.skip=truepasukan maven bahkan tidak mengkompilasi tes, yang berarti bahwa setiap tes-guci tidak akan dihasilkan.

Jadi, Anda harus menggunakan -Darguments, tetapi untuk melewati tes yang berjalan gunakan saja skipTests, untuk menghentikannya mengkompilasi penggunaan maven.test.skip.

Insinyur Perangkat Lunak
sumber
21

Jika Anda hanya ingin melewati tes integrasi, ini akan melakukannya:

-Darguments="-DskipITs"
David Gilks
sumber
3

Anda memiliki pilihan yang terlalu berbeda untuk menghindari dan melewati tes dengan plugin rilis

  • Yang pertama adalah sebagai argumen pada cli untuk tujuan rilis atau fase dengan memberikan -Dokumen:

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

-Yang kedua adalah melakukan argumennya pada pom.xml Anda di build seperti ini:

<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>

Perhatikan bahwa metode kedua menimpa yang pertama.

Saya merekomendasikan Anda untuk mempersiapkan rilis pertama pada satu tindakan dan kemudian Anda dapat mengedit file release.properties pada direktur kerja dan melihat exec.additionalArgumentsproperti jika argumen Anda ada di sana. Ini akan terlihat seperti: exec.additionalArguments=-Dmaven.javadoc.skip\=true -Dmaven.test.skipTests\=true -Dmaven.test.skip\=true -P release-mode.

Setelah itu Anda bisa melakukan rilis.

idriss Eliguene
sumber
2

Untuk melewati seluruh unit test, ia menggunakan argumen

-Dmaven.test.skip = benar

jadi jika Anda ingin melewati tes Unit ini akan menyelesaikan

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

atau Anda bisa mendefinisikan skipTests di maven-surefire-plugin in

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>
Mfuon Leonard
sumber
2
Pertanyaan ini khusus tentang plugin rilis Maven, jadi ini bukan tujuan Maven yang akan digunakan.
Jaap
-2

Tidak ada plug-in pakar yang secara harfiah memicu kompilasi atau eksekusi pengujian. Fase siklus hidup pakar yang memicu eksekusi satu atau lebih plug-in, ketika ini telah membatasi sasaran ke fase tertentu.

Jadi, menjalankan satu tujuan plug-in saja sudah cukup tanpa menjalankan tes:

mvn release:perform

atau kombinasikan dengan proyek build dan packaging:

mvn clean package release:perform
Yannis Sermetziadis
sumber