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