Maven - สร้างโปรไฟล์

Build Profile คืออะไร?

โปรไฟล์ Build คือชุดของค่าคอนฟิกูเรชันซึ่งสามารถใช้เพื่อตั้งค่าหรือลบล้างค่าดีฟอลต์ของ Maven build การใช้โปรไฟล์บิลด์คุณสามารถปรับแต่งบิวด์สำหรับสภาพแวดล้อมต่างๆเช่นสภาพแวดล้อมการพัฒนา v / s ของการผลิต

โปรไฟล์ถูกระบุในไฟล์ pom.xml โดยใช้อิลิเมนต์ activeProfiles / profiles และทริกเกอร์ได้หลายวิธี โปรไฟล์แก้ไข POM ในเวลาสร้างและใช้เพื่อกำหนดพารามิเตอร์สภาพแวดล้อมเป้าหมายที่แตกต่างกัน (ตัวอย่างเช่นเส้นทางของเซิร์ฟเวอร์ฐานข้อมูลในสภาพแวดล้อมการพัฒนาการทดสอบและการใช้งานจริง)

ประเภทของ Build Profile

สร้างโปรไฟล์ส่วนใหญ่มีสามประเภท

ประเภท กำหนดไว้ที่ไหน
ต่อโครงการ กำหนดไว้ในไฟล์โปรเจ็กต์ POM, pom.xml
ต่อผู้ใช้ กำหนดไว้ในไฟล์ xml การตั้งค่า Maven (% USER_HOME% /. m2 / settings.xml)
ทั่วโลก กำหนดไว้ในไฟล์ xml การตั้งค่าส่วนกลาง Maven (% M2_HOME% / conf / settings.xml)

การเปิดใช้งานโปรไฟล์

สามารถเปิดใช้งานโปรไฟล์ Maven Build ได้หลายวิธี

  • ใช้อินพุตคอนโซลคำสั่งอย่างชัดเจน
  • ผ่านการตั้งค่า maven
  • ขึ้นอยู่กับตัวแปรสภาพแวดล้อม (ตัวแปรผู้ใช้ / ระบบ)
  • การตั้งค่าระบบปฏิบัติการ (เช่นตระกูล Windows)
  • ไฟล์ปัจจุบัน / ขาดหายไป

ตัวอย่างการเปิดใช้งานโปรไฟล์

ให้เราสมมติโครงสร้างไดเรกทอรีต่อไปนี้ของโครงการของคุณ -

ตอนนี้ภายใต้ src/main/resourcesมีไฟล์เฉพาะสภาพแวดล้อมสามไฟล์ -

ซีเนียร์ ชื่อไฟล์และคำอธิบาย
1

env.properties

การกำหนดค่าเริ่มต้นใช้หากไม่มีการกล่าวถึงโปรไฟล์

2

env.test.properties

การกำหนดค่าการทดสอบเมื่อใช้โปรไฟล์การทดสอบ

3

env.prod.properties

การกำหนดค่าการผลิตเมื่อใช้โปรไฟล์ prod

การเปิดใช้งานโปรไฟล์ที่ชัดเจน

ในตัวอย่างต่อไปนี้เราจะแนบ maven-antrun-plugin: run goal เพื่อทดสอบเฟส วิธีนี้จะช่วยให้เราสามารถสะท้อนข้อความสำหรับโปรไฟล์ต่างๆได้ เราจะใช้ pom.xml เพื่อกำหนดโปรไฟล์ที่แตกต่างกันและจะเปิดใช้งานโปรไฟล์ที่คอนโซลคำสั่งโดยใช้คำสั่ง maven

สมมติว่าเราได้สร้าง pom.xml ต่อไปนี้ในโฟลเดอร์ C: \ MVN \ project

<project xmlns = "http://maven.apache.org/POM/4.0.0"
   xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation = "http://maven.apache.org/POM/4.0.0
   http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <groupId>com.companyname.projectgroup</groupId>
   <artifactId>project</artifactId>
   <version>1.0</version>
   <profiles>
      <profile>
         <id>test</id>
         <build>
            <plugins>
               <plugin>
                  <groupId>org.apache.maven.plugins</groupId>
                  <artifactId>maven-antrun-plugin</artifactId>
                  <version>1.1</version>
                  <executions>
                     <execution>
                        <phase>test</phase>
                        <goals>
                           <goal>run</goal>
                        </goals>
                        <configuration>
                           <tasks>
                              <echo>Using env.test.properties</echo>
                              <copy file="src/main/resources/env.test.properties"
                                 tofile="${project.build.outputDirectory}
                                 /env.properties"/>
                           </tasks>
                        </configuration>
                     </execution>
                  </executions>
               </plugin>
            </plugins>
         </build>
      </profile>
   </profiles>
</project>

ตอนนี้เปิดคอนโซลคำสั่งไปที่โฟลเดอร์ที่มี pom.xml และดำเนินการต่อไปนี้ mvnคำสั่ง ส่งชื่อโปรไฟล์เป็นอาร์กิวเมนต์โดยใช้ตัวเลือก -P

C:\MVN\project>mvn test -Ptest

Maven จะเริ่มประมวลผลและแสดงผลลัพธ์ของโปรไฟล์การสร้างการทดสอบ

[INFO] Scanning for projects...
[INFO] ------------------------------------------------------------------
[INFO] Building Unnamed - com.companyname.projectgroup:project:jar:1.0
[INFO] task-segment: [test]
[INFO] ------------------------------------------------------------------
[INFO] [resources:resources {execution: default-resources}]

[WARNING] Using platform encoding (Cp1252 actually) to copy filtered resources,
i.e. build is platform dependent!

[INFO] Copying 3 resources
[INFO] [compiler:compile {execution: default-compile}]
[INFO] Nothing to compile - all classes are up to date
[INFO] [resources:testResources {execution: default-testResources}]

[WARNING] Using platform encoding (Cp1252 actually) to copy filtered resources,
i.e. build is platform dependent!

[INFO] skip non existing resourceDirectory C:\MVN\project\src\test\resources
[INFO] [compiler:testCompile {execution: default-testCompile}]
[INFO] Nothing to compile - all classes are up to date
[INFO] [surefire:test {execution: default-test}]
[INFO] Surefire report directory: C:\MVN\project\target\surefire-reports

-------------------------------------------------------
T E S T S
-------------------------------------------------------

There are no tests to run.
Results :
Tests run: 0, Failures: 0, Errors: 0, Skipped: 0
[INFO] [antrun:run {execution: default}]
[INFO] Executing tasks
[echo] Using env.test.properties
[INFO] Executed tasks

[INFO] ------------------------------------------------------------------
[INFO] BUILD SUCCESSFUL
[INFO] ------------------------------------------------------------------

[INFO] Total time: 1 second
[INFO] Finished at: Sun Jul 08 14:55:41 IST 2012
[INFO] Final Memory: 8M/64M
[INFO] ------------------------------------------------------------------

ตอนนี้คุณสามารถทำตามขั้นตอนต่อไปนี้ -

  • เพิ่มองค์ประกอบโปรไฟล์อื่นให้กับองค์ประกอบโปรไฟล์ของ pom.xml (คัดลอกองค์ประกอบโปรไฟล์ที่มีอยู่และวางในตำแหน่งที่องค์ประกอบโปรไฟล์สิ้นสุด)

  • อัปเดต id ขององค์ประกอบโปรไฟล์นี้จากการทดสอบเป็นปกติ

  • อัพเดตส่วนงานเป็น echo env.properties และคัดลอก env.properties ไปยังไดเร็กทอรีเป้าหมาย

  • ทำซ้ำสามขั้นตอนข้างต้นอีกครั้งอัพเดต id เป็น prod และส่วนงานสำหรับ env.prod.properties

  • นั่นคือทั้งหมด ตอนนี้คุณพร้อมสร้างโปรไฟล์สามแบบแล้ว (ปกติ / ทดสอบ / prod)

ตอนนี้เปิดคอนโซลคำสั่งไปที่โฟลเดอร์ที่มี pom.xml และดำเนินการต่อไปนี้ mvnคำสั่ง ส่งชื่อโปรไฟล์เป็นอาร์กิวเมนต์โดยใช้ตัวเลือก -P

C:\MVN\project>mvn test -Pnormal

C:\MVN\project>mvn test -Pprod

ตรวจสอบผลลัพธ์ของโครงสร้างเพื่อดูความแตกต่าง

การเปิดใช้งานโปรไฟล์ผ่านการตั้งค่า Maven

เปิด Maven settings.xml ไฟล์ที่มีอยู่ในไดเร็กทอรี% USER_HOME% /. m2 โดยที่ %USER_HOME%แสดงถึงโฮมไดเร็กทอรีของผู้ใช้ หากไม่มีไฟล์ settings.xml ให้สร้างไฟล์ใหม่

เพิ่มโปรไฟล์ทดสอบเป็นโปรไฟล์ที่ใช้งานอยู่โดยใช้โหนดโปรไฟล์ที่ใช้งานอยู่ดังที่แสดงด้านล่างในตัวอย่าง

<settings xmlns = "http://maven.apache.org/POM/4.0.0"
   xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
   http://maven.apache.org/xsd/settings-1.0.0.xsd">
   <mirrors>
      <mirror>
         <id>maven.dev.snaponglobal.com</id>
         <name>Internal Artifactory Maven repository</name>
         <url>http://repo1.maven.org/maven2/</url>
         <mirrorOf>*</mirrorOf>
      </mirror>
   </mirrors>
   <activeProfiles>
      <activeProfile>test</activeProfile>
   </activeProfiles>
</settings>

ตอนนี้เปิดคอนโซลคำสั่งไปที่โฟลเดอร์ที่มี pom.xml และดำเนินการต่อไปนี้ mvnคำสั่ง อย่าส่งชื่อโปรไฟล์โดยใช้ตัวเลือก -P Maven จะแสดงผลการทดสอบโปรไฟล์ที่เป็นโปรไฟล์ที่ใช้งานอยู่

C:\MVN\project>mvn test

การเปิดใช้งานโปรไฟล์ผ่านตัวแปรสภาพแวดล้อม

ตอนนี้ลบโปรไฟล์ที่ใช้งานออกจาก maven settings.xml และอัปเดตโปรไฟล์การทดสอบที่กล่าวถึงใน pom.xml เพิ่มองค์ประกอบการเปิดใช้งานในองค์ประกอบโปรไฟล์ดังที่แสดงด้านล่าง

โปรไฟล์การทดสอบจะทริกเกอร์เมื่อคุณสมบัติของระบบ "env" ถูกระบุด้วยค่า "test" สร้างตัวแปรสภาพแวดล้อม "env" และตั้งค่าเป็น "test"

<profile>
   <id>test</id>
   <activation>
      <property>
         <name>env</name>
         <value>test</value>
      </property>
   </activation>
</profile>

มาเปิดคอนโซลคำสั่งไปที่โฟลเดอร์ที่มี pom.xml และดำเนินการต่อไปนี้ mvn คำสั่ง

C:\MVN\project>mvn test

การเปิดใช้งานโปรไฟล์ผ่านระบบปฏิบัติการ

องค์ประกอบการเปิดใช้งานเพื่อรวมรายละเอียดระบบปฏิบัติการตามที่แสดงด้านล่าง โปรไฟล์ทดสอบนี้จะทริกเกอร์เมื่อระบบเป็น windows XP

<profile>
   <id>test</id>
   <activation>
      <os>
         <name>Windows XP</name>
         <family>Windows</family>
         <arch>x86</arch>
         <version>5.1.2600</version>
      </os>
   </activation>
</profile>

ตอนนี้เปิดคอนโซลคำสั่งไปที่โฟลเดอร์ที่มี pom.xml และดำเนินการต่อไปนี้ mvnคำสั่ง อย่าส่งชื่อโปรไฟล์โดยใช้ตัวเลือก -P Maven จะแสดงผลการทดสอบโปรไฟล์ที่เป็นโปรไฟล์ที่ใช้งานอยู่

C:\MVN\project>mvn test

การเปิดใช้งานโปรไฟล์ผ่านไฟล์ปัจจุบัน / ขาดหายไป

ตอนนี้องค์ประกอบการเปิดใช้งานเพื่อรวมรายละเอียดระบบปฏิบัติการตามที่แสดงด้านล่าง โปรไฟล์การทดสอบจะเริ่มทำงานเมื่อtarget/generated-sources/axistools/wsdl2java/com/companyname/group ที่ขาดหายไป.

<profile>
   <id>test</id>
   <activation>
      <file>
         <missing>target/generated-sources/axistools/wsdl2java/
           com/companyname/group</missing>
      </file>
   </activation>
</profile>

ตอนนี้เปิดคอนโซลคำสั่งไปที่โฟลเดอร์ที่มี pom.xml และดำเนินการต่อไปนี้ mvnคำสั่ง อย่าส่งชื่อโปรไฟล์โดยใช้ตัวเลือก -P Maven จะแสดงผลการทดสอบโปรไฟล์ที่เป็นโปรไฟล์ที่ใช้งานอยู่

C:\MVN\project>mvn test