ฉันจะรับ maven-release-plugin เพื่อข้ามการทดสอบได้อย่างไร


177

ฉันจะทำให้ maven-release-plugin ทำงานได้อย่างไรโดยไม่ทำให้เกิดการทดสอบ?

ฉันเหนื่อย

-Dmaven.test.skip=true 

และ

-DskipTests 

และ

-DpreparationGoals=clean

... ยังไม่มีงานเลย

ใช่ฉันรู้ว่าฉันไม่ควรปล่อยถ้าการทดสอบไม่ผ่าน แต่ฉันไม่สามารถควบคุมให้เพื่อนร่วมงานของฉันเขียนการทดสอบที่เชื่อถือได้

คำตอบ:


406

-Darguments="-DskipTests" คือสิ่งที่คุณต้องการหรือกำหนดค่าการประมวลผลที่แยกกันอย่างชัดเจนใน pom


1
มันใช้งานได้สำหรับฉันขอบคุณและ +1 แต่ ... นี่มันจำเป็นไหม?
javamonkey79

5
มันเป็นสิ่งจำเป็นเนื่องจากกระบวนการปล่อยให้ใช้กระบวนการ maven ใหม่และ tpical -DskipTests จะไม่ถูกส่งผ่านไปตามคุณสมบัติของระบบ
Eddie

4
หวังว่าฉันจะสามารถลงคะแนนคุณ2ขึ้น ฉันใช้เวลาหลายชั่วโมงในการทำให้ถูกต้อง ... แต่ 1. ฉันคิดถึงบางอย่างในเอกสารประกอบหรือเอกสาร mvn หายไปบางอย่าง 2. ฉันได้ <skipTests>true</skipTests>กำหนดค่าใน POM บริษัท ของฉัน ยังไม่ได้ผล อะไรคือวิธีแก้ปัญหาของคุณ
Pulak Agrawal

คุณต้องการการกำหนดค่าบางอย่างใน pom เพื่อทำงานนี้หรือไม่?
DenCowboy

42

-Darguments="..."ส่งผ่านอาร์กิวเมนต์ไปยังกระบวนการ maven ที่แยกส่วน แต่สิ่งสำคัญคือต้องตระหนักว่ามีสวิตช์ที่แตกต่างกันสองตัวที่ใช้ที่นี่ -DskipTestsกองกำลัง Maven ไม่เรียกใช้การทดสอบใด ๆ แต่การทดสอบจะเรียบเรียงยัง (นี้เป็นสิ่งสำคัญถ้าคุณมีที่ขึ้นอยู่กับประเภทของการทดสอบขวด) -Dmaven.test.skip=trueกองกำลัง Maven จะไม่ได้รวบรวมการทดสอบซึ่งหมายความว่าการทดสอบใด ๆ ขวดจะไม่ถูกสร้างขึ้น

ดังนั้นคุณต้องใช้-Dargumentsแต่จะข้ามการทดสอบการทำงานการใช้งานเท่านั้นที่จะหยุดพวกเขารวบรวมการใช้งานskipTestsmaven.test.skip



3

คุณมีทางเลือกต่างกันที่จะหลีกเลี่ยงและข้ามการทดสอบด้วยปลั๊กอินสำหรับวางจำหน่าย

  • สิ่งแรกคือการส่งผ่านเป็นอาร์กิวเมนต์บน cli ไปยังเป้าหมายการเปิดตัวหรือขั้นตอนโดยการให้ -Darguments:

กันตัวอย่าง: mvn -X -Darguments="-Dmaven.javadoc.skip=true -Dmaven.test.skipTests=true -Dmaven.test.skip=true" -P release-mode release:prepare

- ข้อที่สองคือการดำเนินการกับอาร์กิวเมนต์ใน pom.xml ของคุณในบิลด์ดังนี้:

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

โปรดทราบว่าวิธีที่สองจะแทนที่วิธีแรก

ฉันแนะนำให้คุณเตรียมการปล่อยครั้งแรกในการกระทำเดียวแล้วคุณสามารถแก้ไขไฟล์ release.properties ในผู้อำนวยการการทำงานและดูexec.additionalArgumentsคุณสมบัติหากข้อโต้แย้งของคุณมี มันจะมีลักษณะ: exec.additionalArguments=-Dmaven.javadoc.skip\=true -Dmaven.test.skipTests\=true -Dmaven.test.skip\=true -P release-mode.

หลังจากที่คุณสามารถทำการเปิดตัว


2

เพื่อข้ามการทดสอบหน่วยทั้งหมดจะใช้อาร์กิวเมนต์

-Dmaven.test.skip = true

ดังนั้นหากคุณต้องการข้ามการทดสอบหน่วยนี้จะแก้ปัญหา

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

หรืออีกทางหนึ่งคุณสามารถกำหนด skipTests ใน maven-surefire-plugin

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
คำถามนี้มีเฉพาะเกี่ยวกับปลั๊กอินการปล่อย Maven ดังนั้นสิ่งเหล่านี้ไม่ใช่เป้าหมายของ Maven ที่จะใช้
Jaap

-2

ปลั๊กอิน maven ไม่มีตัวกระตุ้นการรวบรวมหรือการทดสอบ มันเป็นเฟสวัฏจักร maven ที่กระตุ้นการทำงานของปลั๊กอินตั้งแต่หนึ่งปลั๊กอินขึ้นไปเมื่อสิ่งเหล่านี้มีเป้าหมายล้อมรอบไปยังเฟสที่ระบุ

ดังนั้นเพียงแค่เรียกใช้งานปลั๊กอินปลั๊กอินเดียวก็พอเพียงโดยไม่ต้องทำการทดสอบ:

mvn release:perform

หรือรวมกับโครงการสร้างและบรรจุภัณฑ์:

mvn clean package release:perform
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.