การตั้งค่า xml ส่วนใหญ่ใช้เพื่อกำหนดค่าชุดของแอตทริบิวต์ทั่วไปเช่นสภาพแวดล้อมการทำงานของ Maven และเป็นไฟล์การกำหนดค่าระดับโลก ในขณะที่ POM.XML ส่วนใหญ่อธิบายถึงพิกัด Maven ของโครงการการพึ่งพากฎที่นักพัฒนาจำเป็นต้องปฏิบัติตามระบบการจัดการข้อบกพร่ององค์กรและใบอนุญาตรวมถึงปัจจัยอื่น ๆ ที่เกี่ยวข้องกับโครงการและเป็นไฟล์กำหนดค่าระดับโครงการ
การกำหนดค่าพื้นฐาน
การกำหนดค่าไฟล์ pom.xml ทั่วไปมีดังนี้:
<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.0http://maven.apache.org/xsd/maven-4.0.0.xsd"> <!-รุ่นรุ่น Maven2.0 ต้องเขียนเช่นนี้ตอนนี้มันเป็นรุ่นเดียวที่รองรับ Maven2-> <moderVersion> 4.0.0 </modelversion> <!-ธงที่ไม่ซ้ำกันของ บริษัท หรือองค์กรและเส้นทางที่สร้างขึ้นในระหว่างการกำหนดค่าก็ถูกสร้างขึ้นจากสิ่งนี้ ตัวอย่างเช่น com.winner.trade, maven จะวางแพ็คเกจ jar ของโครงการลงในเส้นทางท้องถิ่น:/com/ผู้ชนะ/การค้า-> <Groupid> com.winner.trade </groupid> <!-ID ที่เป็นเอกลักษณ์ของโครงการนี้หลายโครงการ <Sersion> 1.0.0-SNAPSHOT </เวอร์ชัน> <!-หมายเลขเวอร์ชันของโครงการนี้อยู่ใน-> <Sersion> 1.0.0-SNAPSHOT </Sersion> <!-กลไกการบรรจุภัณฑ์เช่น POM, JAR, MAVEN-PLUGIN, EJB, สงคราม, RAR, PAR ส่วนประกอบเสริมสอดคล้องกับองค์ประกอบหลัก บางครั้งคุณจำเป็นต้องเพิ่มตัวจําแนกเพื่อพิจารณาอย่างไม่ซ้ำใครว่าส่วนประกอบไม่สามารถกำหนดตัวแยกประเภทของโครงการได้โดยตรงเนื่องจากส่วนประกอบเสริมไม่ได้ถูกสร้างขึ้นโดยตรงโดยโครงการ แต่ถูกสร้างขึ้นโดยความช่วยเหลือของปลั๊กอินเพิ่มเติม-> <classifier> ... Maven ค้นหาส่วนประกอบผ่านค่าองค์ประกอบทั้งสาม (ที่รู้จักกันทั่วไปว่าเป็นพิกัด) ของ GroupID, artifactId และเวอร์ชันจากนั้นแนะนำโครงการของคุณ หากมีคนต้องการอ้างอิงโครงการที่คุณกำลังพัฒนาอยู่ในขณะนี้ (โดยมีเงื่อนไขว่าได้รับการพัฒนาและเผยแพร่ไปยังพื้นที่เก็บข้อมูลระยะไกล)-> <!-คุณต้องสร้างโหนดการพึ่งพาในไฟล์ POM และเขียน GroupID, ArtifactId และเวอร์ชันของโครงการนี้ Maven จะดาวน์โหลดแพ็คเกจ JAR ที่คุณอัปโหลดไปยังท้องถิ่น-> <roupId> com.winner.trade </groupId> <ratifactid> การทดสอบการค้า </artifactid> <sersion> 1.0.0-snapshot </Sersion> <! -> <!-ขอบเขตมีค่าต่อไปนี้: คอมไพล์ (ขอบเขตการรวบรวม), ให้ (ขอบเขตที่ให้), รันไทม์ (ขอบเขตรันไทม์), ทดสอบ (ขอบเขตการทดสอบ), ระบบ (ขอบเขตระบบ)-> <cope> ทดสอบ </cope> <! การจัดการพึ่งพา-> <ไม่เลือก> เท็จ </ploental> <!-การพึ่งพาหน้ากาก ตัวอย่างเช่น LIBA ที่ใช้ในโครงการขึ้นอยู่กับรุ่น 1.0 ของไลบรารีและ LIBB ขึ้นอยู่กับไลบรารีรุ่น 2.0 ตอนนี้หากคุณต้องการใช้เวอร์ชัน 2.0 ในแบบครบวงจรคุณควรบล็อกการพึ่งพาในเวอร์ชัน 1.0-> <การยกเว้น> <excusion> <sclusion> <sclusion> คุณสามารถอ้างอิงโดยตรงและใช้ในสถานที่อื่น ๆ ใน POM ดังนี้: $ {file.encoding}-> <properties> <file.encoding> UTF-8 </file.encoding> <java.source.version> 1.5 </java.source.ersion> </project>โดยทั่วไปรายการการกำหนดค่าข้างต้นมีความจำเป็นสำหรับโครงการใด ๆ และกำหนดคุณสมบัติพื้นฐานของโครงการ
ที่นี่มีความจำเป็นที่จะต้องอธิบายตัวแยกประเภทคุณสมบัติที่ใช้กันทั่วไปน้อยกว่าเพราะบางครั้งแพ็คเกจ JAR บางอย่างจะถูกยกมาและหากตัวจําแนกไม่ได้เขียนมันจะรายงานข้อผิดพลาด
องค์ประกอบตัวจําแนกใช้เพื่อช่วยกำหนดส่วนประกอบเสริมบางส่วนที่ถูกส่งออกโดยส่วนประกอบ ส่วนประกอบเสริมสอดคล้องกับองค์ประกอบหลัก ตัวอย่างเช่นองค์ประกอบหลักคือ kimi-app-2.0.0.jar โครงการนี้อาจสร้างองค์ประกอบเสริมสองอย่างเช่น kimi-app-2.0.0-javadoc.jar (เอกสาร Java) และ kimi-app-2.0.0-sources.jar (ซอร์สโค้ด Java) โดยใช้ปลั๊กอิน ในเวลานี้ Javadoc และแหล่งข้อมูลเป็นตัวแยกประเภทขององค์ประกอบเสริมทั้งสองนี้เพื่อให้ส่วนประกอบเสริมมีพิกัดที่เป็นเอกลักษณ์ของตัวเอง
วัตถุประสงค์ของตัวจําแนกคือ:
1. เมื่อแพ็คเกจ mavendownloadjavadoc/sourcesjar คุณต้องใช้ตัวจําแนก
2. เมื่อแนะนำการพึ่งพาบางครั้งองค์ประกอบบางอย่างไม่สามารถกำหนดได้โดยไม่ซ้ำกันตาม GroupID, artifactId และเวอร์ชัน ตัวจําแนกจำเป็นต้องใช้เพื่อชี้แจงเป้าหมายเพิ่มเติม ตัวอย่างเช่น JSON-LIB บางครั้งมีแพ็คเกจ JAR หลายชุดในเวอร์ชันเดียวกันซึ่งเป็นชุดหนึ่งในสภาพแวดล้อม JDK1.5 และหนึ่งชุดในสภาพแวดล้อม JDK1.3:
เมื่ออ้างถึงคุณต้องระบุเวอร์ชัน JDK มิฉะนั้น Maven จะไม่ทราบว่าคุณต้องการแพ็คเกจใด:
<Ederency> <sderctId> net.sf.json-Lib </groupId> <ratifactId> json-Lib </artifactId> <version> 2.4 </เวอร์ชัน> <classifier> jdk15 </sclesifier> </addency>
สร้างการกำหนดค่า
<สร้าง> <!-ชื่อไฟล์ของส่วนประกอบที่สร้างขึ้นค่าเริ่มต้นคือ $ {artifactId}-$ {เวอร์ชัน} -> <finalName> myPorjectName </finalname> <!-ไดเรกทอรีที่ไฟล์ทั้งหมดที่สร้างขึ้นจะถูกเก็บไว้ในบิลด์คือ $ {as-based}/เป้าหมายนั่นคือเป้าหมายในไดเรกทอรีรากของโครงการ-> <ไดเรกทอรี> $ {basedir}/เป้าหมาย </directory> <!-ค่าเริ่มต้น บรรทัดคำสั่งเช่น JAR: JAR หรือเหมือนกับเฟสเช่นการติดตั้ง, คอมไพล์, ฯลฯ-> <DefaultGoal> ติดตั้ง </defaultGoal> <!-รายการไฟล์แอตทริบิวต์ตัวกรองที่ใช้เมื่อสวิตช์กรองเปิดอยู่ -> <!-ตัวยึดสถานที่เช่น $ {Spring.version} ในข้อมูลการกำหนดค่าโครงการจะถูกแทนที่ด้วยค่าจริงในไฟล์คุณสมบัติ-> <filters> <filter> ../ filter.properties </filter> </ตัวกรอง> <! -> <resources> <resource> <!-อธิบายเส้นทางเป้าหมายของทรัพยากร พา ธ นั้นสัมพันธ์กับไดเรกทอรีเป้าหมาย/คลาส (เช่น $ {project.build.outputDirectory}) -> <!-ตัวอย่างเช่นหากคุณต้องการให้ทรัพยากรอยู่ในแพ็คเกจเฉพาะ (org.apache.maven.messages) คุณต้องตั้งค่าองค์ประกอบเป็น org/apache/maven/ข้อความ -> <!-อย่างไรก็ตามถ้าคุณต้องการใส่ทรัพยากรลงในโครงสร้างไดเรกทอรีต้นฉบับคุณไม่จำเป็นต้องมีการกำหนดค่านี้ -> <sournedPath> ทรัพยากร </TargetPath> <!-ไม่ว่าจะใช้ค่าพารามิเตอร์แทนชื่อพารามิเตอร์หรือไม่ ค่าพารามิเตอร์ถูกนำมาจากองค์ประกอบคุณสมบัติหรือคุณสมบัติที่กำหนดค่าไว้ในไฟล์และไฟล์แสดงอยู่ในองค์ประกอบตัวกรอง -> <siltering> True </filtering> <!-อธิบายไดเรกทอรีที่จัดเก็บทรัพยากรซึ่งสัมพันธ์กับเส้นทาง POM-> <ไดเรกทอรี> SRC/Main/Resources </Directory> <! กำหนดโดย <cedsid>, <sclude> จะเหนือกว่า-> <excludes> <cerfrude> jdbc.properties < /exclude> </surse> </sursece> <!-เส้นทางทรัพยากรทั้งหมดที่เกี่ยวข้องกับการทดสอบหน่วยวิธีการกำหนดค่านั้นคล้ายกับทรัพยากร-> <testresources> </testResource> </testResources> <!-ไดเรกทอรีซอร์สโค้ดของโครงการ เมื่อสร้างโครงการระบบสร้างจะรวบรวมซอร์สโค้ดในไดเรกทอรี เส้นทางนี้เป็นเส้นทางสัมพัทธ์ที่สัมพันธ์กับ pom.xml -> <Sourcedirectory> $ {Achedir}/src/main/java </sourcedirectory> <!-ไดเรกทอรีซอร์สโค้ดของสคริปต์โครงการแตกต่างจากไดเรกทอรีรหัสแหล่งที่มา <!- ในกรณีส่วนใหญ่เนื้อหาในไดเรกทอรีนี้จะถูกคัดลอกไปยังไดเรกทอรีผลลัพธ์ (เพราะสคริปต์ถูกตีความไม่ได้รวบรวม) -> <ScriptSourcedirectory> $ {Afflementir}/src/main/scripts </scriptsourcedirectory> <!-ไดเรกทอรีรหัสซอร์สที่ใช้สำหรับการทดสอบหน่วยโครงการ เมื่อทดสอบโครงการระบบบิลด์จะรวบรวมซอร์สโค้ดในไดเรกทอรี เส้นทางนี้เป็นเส้นทางสัมพัทธ์ที่สัมพันธ์กับ pom.xml -> <TestSourcedirectory> $ {Afflementir}/src/test/java </testsourcedirectory> <!-ไดเรกทอรีที่เก็บไฟล์คลาสแอปพลิเคชันที่รวบรวมไว้ -> <UtputDirectory> $ {Afflementir}/Target/classes </utputDirectory> <!-ไดเรกทอรีที่เก็บไฟล์คลาสทดสอบที่รวบรวมไว้ -> <TestOutPutDirectory> $ {AfflementIR}/Target/Test-Classes </testOutputDirectory> <!-ชุดส่วนขยายการก่อสร้างของโครงการซึ่งเป็นผลิตภัณฑ์ที่จะใช้ในชุดของกระบวนการสร้าง -> <!-พวกเขาสามารถเปิดส่วนขยายหรือพวกเขาสามารถเปิดใช้งานปลั๊กอินโดยการให้เงื่อนไข -> <!-ส่วนขยายเป็นผลิตภัณฑ์ที่เปิดใช้งานในระหว่างกระบวนการสร้าง-> <ส่วนขยาย> <!-ตัวอย่างเช่นหลังจากการพัฒนาโปรแกรมเสร็จสมบูรณ์อาจต้องใช้ชุดของขั้นตอนที่น่าเบื่อเช่นบรรจุภัณฑ์-> <!-ส่งไฟล์แพ็คเกจไปยังเซิร์ฟเวอร์ -> <!-ในความเป็นจริงขั้นตอนเหล่านี้สามารถเสร็จสิ้นโดยอัตโนมัติผ่านปลั๊กอินของ Maven, Wagon-Maven-Plugin-> <!-ปลั๊กอินส่วนขยายต่อไปนี้ใช้เพื่อเชื่อมต่อกับเซิร์ฟเวอร์ระยะไกลผ่าน SSH -> <!-ปลั๊กอิน Wagon-FTP ที่คล้ายกันซึ่งรองรับ ftp ---> <Entension> <mentens> <roupId> org.apache.maven.wagon </groupId> <ratifactid> wagon-ssh </artifactid> <version> 2.8 </เวอร์ชัน> </extensions> <! -> <plugins> <plugin> <GroupId> </roupId> <ratifactId> maven-assembly-plugin </artifactid> <sersion> 2.5.5 </version> <!-ดำเนินการชุดการกำหนดค่าเป้าหมายระหว่างวงจรชีวิตการสร้าง แต่ละเป้าหมายอาจมีการกำหนดค่าที่แตกต่างกัน -> <การดำเนินการ> <การดำเนินการ> <!-ตัวระบุเป้าหมายการดำเนินการใช้เพื่อระบุเป้าหมายในระหว่างกระบวนการก่อสร้างหรือเพื่อให้ตรงกับเป้าหมายการดำเนินการที่ต้องรวมกันในระหว่างกระบวนการสืบทอด-> <id> แอสเซมบลี </id> <! หากถูกละเว้นเป้าหมายจะถูกผูกไว้กับเฟสเริ่มต้นที่กำหนดค่าในข้อมูลต้นฉบับ-> <pare> แพคเกจ </เฟส> <!-การกำหนดค่าของเป้าหมายการดำเนินการ-> <goals> <goal> </เป้าหมาย> </เป้าหมาย> <! <การกำหนดค่า> <minmalName> $ {finalName} </finalName> <EctendAsemblyId> FALSE </upcendAsemblyId> <scriptor> Assembly.xml </scriptor> </การกำหนดค่า> <! -> <Extensions> FALSE </Extensions> <!-การพึ่งพาพิเศษที่จำเป็นสำหรับการแนะนำโครงการปลั๊กอิน-> <การพึ่งพา> <การพึ่งพา> ... </การพึ่งพาอาศัย> </การพึ่งพา> <! -> <!-โครงการย่อยทั้งหมดที่สืบทอดมาจากโครงการนี้สามารถใช้งานได้ รายการการกำหนดค่าปลั๊กอินนี้ไม่ได้แยกวิเคราะห์หรือผูกพันกับวงจรชีวิตจนกว่าจะมีการอ้างอิง -> <!-การกำหนดค่าท้องถิ่นใด ๆ สำหรับปลั๊กอินที่กำหนดจะแทนที่การกำหนดค่าที่นี่-> <pluginmanagement> <plugins> ... </plugins> </pluginmanagement> </uffle>ที่เก็บใน POM มีฟังก์ชั่นเดียวกับที่เก็บใน sett.xml ความแตกต่างที่สำคัญคือคลังสินค้าใน POM นั้นเป็นส่วนตัว ตัวอย่างเช่นไฟล์การตั้งค่าใน บริษัท ขนาดใหญ่เป็นสาธารณะและโครงการทั้งหมดใช้ไฟล์การตั้งค่า แต่โครงการย่อยแต่ละโครงการจะอ้างถึงไลบรารีของบุคคลที่สามที่แตกต่างกันดังนั้นคุณต้องตั้งค่าที่อยู่ที่เก็บที่คุณต้องการใน POM
การกำหนดค่าการกระจาย
<!-ข้อมูลการกระจายโครงการหลังจากดำเนินการ MVN DEPLING แล้วจะระบุตำแหน่งที่จะเผยแพร่ -> <!-ด้วยข้อมูลนี้คุณสามารถปรับใช้เว็บไซต์ไปยังเซิร์ฟเวอร์ระยะไกลหรือปรับใช้ส่วนประกอบไปยังที่เก็บระยะไกล -> <DistributionManagement> <!-ข้อมูลที่จำเป็นสำหรับการปรับใช้วิดเจ็ตที่สร้างโดยโครงการไปยังที่เก็บระยะไกล-> <ที่เก็บ> <!-มันได้รับการกำหนดหมายเลขเวอร์ชันที่ไม่ซ้ำกันหรือไม่ </id> <name> repo-name </name> <url> ไฟล์: // $ {askasedir}/target/deploy </url> <ydayout/> </repository> <!-จะปรับใช้ snapshot ของวิดเจ็ตได้ที่ไหน หากองค์ประกอบไม่ได้รับการกำหนดค่าจะถูกปรับใช้กับที่เก็บที่กำหนดค่าโดยองค์ประกอบที่เก็บโดยค่าเริ่มต้น-> <snapshotrepository> <uniqueVersion /> <id /> <name /> <name /> <url /> <layout /> < /snapshotrepository> <! การกำหนดค่าในเว็บไซต์และ settings.xml ไฟล์-> <id> site-id </id> <!-ชื่อของตำแหน่งการปรับใช้-> <name> site-name </name> <!-URL ของตำแหน่งการปรับใช้ตามโปรโตคอล: // hostname/path-> <url> scp: //svn.baidu.com </url> </site> <!-URL ของหน้าดาวน์โหลดโครงการ หากองค์ประกอบนี้ไม่พร้อมใช้งานผู้ใช้ควรอ้างถึงโฮมเพจ -> <!-เหตุผลในการใช้องค์ประกอบนี้คือช่วยค้นหาส่วนประกอบที่ไม่ได้อยู่ในคลังสินค้า (เนื่องจากข้อ จำกัด ใบอนุญาต) -> <downloadurl /> <!-หากส่วนประกอบมีกลุ่มใหม่และ ARTIFACT ID (ส่วนประกอบย้ายไปยังตำแหน่งใหม่) ข้อมูลการย้ายส่วนประกอบของส่วนประกอบจะอยู่ที่นี่ -> <การย้ายถิ่นฐาน> <!-รหัสกลุ่มใหม่ของบทความ-> <GroupId /> <!-ID สิ่งประดิษฐ์ใหม่ของบทความ-> <ArtIfactId /> <!-หมายเลขเวอร์ชันใหม่ของบทความ-> <เวอร์ชัน /> <!-ข้อมูลใหม่ของบทความเกี่ยวกับการเคลื่อนไหวเช่นเหตุผล -> <message /> < /relocation> <!-ให้สถานะของส่วนประกอบในที่เก็บระยะไกล องค์ประกอบนี้จะต้องไม่ถูกตั้งค่าในโครงการท้องถิ่นเนื่องจากเครื่องมือได้รับการปรับปรุงโดยอัตโนมัติ -> <!-ค่าที่ถูกต้องคือ: ไม่มี (ค่าเริ่มต้น), แปลง (ผู้ดูแลคลังสินค้าแปลงจาก maven 1 pom),-> <!-พันธมิตร (ซิงโครไนซ์โดยตรงจากที่เก็บ Maven 2 คู่ค้า), นำไปใช้ -> <Status /> </SributionManagement>การกำหนดค่าคลังสินค้า
<!-ค้นพบรายการที่เก็บระยะไกลที่พึ่งพาและส่วนขยาย -> <ที่เก็บ> <!-มีข้อมูลที่ต้องเชื่อมต่อกับที่เก็บระยะไกล-> <ที่เก็บ> <!-วิธีจัดการกับการดาวน์โหลดเวอร์ชันที่เผยแพร่ในพื้นที่เก็บข้อมูลระยะไกล-> <releases> <! -> <enabled /> <!-องค์ประกอบนี้ระบุความถี่ที่การอัปเดตเกิดขึ้น Maven เปรียบเทียบการประทับเวลาของ POM ในท้องถิ่นและ POM ระยะไกล -> <!-ตัวเลือกที่นี่คือ: เสมอ, ทุกวัน (ค่าเริ่มต้น, รายวัน),-> <!-ช่วงเวลา: x (ที่นี่ x เป็นช่วงเวลาในไม่กี่นาที) หรือไม่เคย (ไม่เคย) -> <updatePolicy /> <!-จะทำอย่างไรเมื่อไฟล์การตรวจสอบส่วนประกอบการตรวจสอบ Maven ล้มเหลว:-> <!-ละเว้น, ล้มเหลวหรือคำเตือน -> <checksumpolicy /> </releases> <!-วิธีจัดการกับการดาวน์โหลดเวอร์ชันสแน็ปช็อตในที่เก็บระยะไกล ด้วยการกำหนดค่าสองชุดการเผยแพร่และสแน็ปช็อต-> <!-POM สามารถใช้กลยุทธ์ที่แตกต่างกันสำหรับส่วนประกอบแต่ละประเภทในที่เก็บแยกต่างหาก -> <!-ตัวอย่างเช่นบางคนอาจตัดสินใจเปิดใช้งานการสนับสนุนสำหรับการดาวน์โหลดเวอร์ชันสแน็ปช็อตเพื่อวัตถุประสงค์ในการพัฒนาเท่านั้น-> <snapshots> <enabled /> <updatepolicy /> <checksumpolicy /> </napshots> <! สามารถใช้ให้ตรงกับที่เก็บข้อมูลระยะไกลที่กำหนดค่าในไฟล์ settings.xml-> <id> repo-id </id> <!-ชื่อที่เก็บระยะไกล-> <name> repo-name </name> <! <url> http://192.168.1.169:9999/repository/ </url> <!-ประเภทเค้าโครงที่เก็บที่ใช้ในการค้นหาและเรียงลำดับส่วนประกอบ-สามารถเริ่มต้น (เริ่มต้น) หรือมรดก (มรดก) -> <!-Maven 2 จัดทำเค้าโครงเริ่มต้นสำหรับที่เก็บ -> <!-อย่างไรก็ตาม maven1.x มีเลย์เอาต์ที่แตกต่างกัน -> <!-เราสามารถใช้องค์ประกอบนี้เพื่อระบุว่าเค้าโครงเป็นค่าเริ่มต้นหรือดั้งเดิม -> <dayout> ค่าเริ่มต้น </layout> </repository> </repository> </repository> <!-ค้นพบรายการที่เก็บระยะไกลของปลั๊กอินสำหรับการสร้างและการรายงาน-> <pluginRepositories> <!-มีข้อมูลที่ต้องเชื่อมต่อกับที่เก็บปลั๊กอินระยะไกล ดูองค์ประกอบที่เก็บ/ที่เก็บ -> <pluginRepository/> </pluginRepositories>
การกำหนดค่าโปรไฟล์
<!-สร้างโปรไฟล์ในคอลัมน์ หากเปิดใช้งานกระบวนการบิลด์จะถูกแก้ไข-> <files> <!-เปิดใช้งานกระบวนการสร้างตามพารามิเตอร์สภาพแวดล้อมหรือพารามิเตอร์บรรทัดคำสั่ง-> <profile> <!-ตรรกะแบบมีเงื่อนไขของการเรียกโปรไฟล์โดยอัตโนมัติ การเปิดใช้งานเป็นคีย์เปิดของโปรไฟล์ -> <Avative> <!-ข้อมูลประจำตัวว่าโปรไฟล์ถูกเปิดใช้งานโดยค่าเริ่มต้น-> <activeByDefault> FALSE </ActiveByDefault> <!-การเปิดใช้งานมีการตรวจจับเวอร์ชัน Java ในตัว หากตรวจพบเวอร์ชัน JDK ตามที่คาดไว้โปรไฟล์จะถูกเปิดใช้งาน -> <jdk> 1.7 </jdk> <!-เมื่อตรวจพบแอตทริบิวต์ระบบปฏิบัติการที่ตรงกันโปรไฟล์จะถูกเปิดใช้งาน องค์ประกอบ OS สามารถกำหนดแอตทริบิวต์ที่เกี่ยวข้องกับระบบปฏิบัติการบางอย่าง -> <os> <!-ชื่อของระบบปฏิบัติการที่เปิดใช้งานโปรไฟล์-> <name> windows xp </name> <!-ครอบครัวของระบบปฏิบัติการที่เปิดใช้งานโปรไฟล์ (เช่น 'windows')-> <ameamp family> windows </ameam> <! <!-ถ้า Maven ตรวจพบคุณสมบัติบางอย่าง (ค่าของมันสามารถอ้างอิงได้ด้วย $ {name} ใน POM) มันจะมีชื่อและค่าที่สอดคล้องกันและโปรไฟล์จะเปิดใช้งาน -> <!-หากฟิลด์ค่าว่างเปล่าโปรไฟล์จะเปิดใช้งานหากฟิลด์ชื่อคุณสมบัติมีอยู่ มิฉะนั้นฟิลด์ค่าคุณสมบัติจะถูกจับคู่ในลักษณะที่ไวต่อกรณี-> <property> <!-ชื่อของคุณสมบัติที่เปิดใช้งานโปรไฟล์-> <name> mavenversion </name> <!-ค่าของคุณสมบัติที่เปิดใช้งานโปรไฟล์-> <value> 2.0.3 </value> ไม่มีการตรวจสอบว่าไฟล์มีอยู่หรือไม่และเปิดใช้งานโปรไฟล์หากไม่มีอยู่ -> <!-ในทางกลับกันจะมีอยู่จะตรวจสอบว่าไฟล์มีอยู่หรือไม่และเปิดใช้งานโปรไฟล์หากมีอยู่ -> <file> <!-หากไฟล์ที่ระบุมีอยู่ให้เปิดใช้งานโปรไฟล์ -> <มีอยู่>/USR/LOCAL/HUDSON/HUDSON-HOME/JOBS/MAVEN-GUIDE-ZH-TO-PRODUCTION/WORKSPACE/</SIST> <!-หากไฟล์ที่ระบุไม่มีอยู่ให้เปิดใช้งานโปรไฟล์ -> <missing>/usr/local/hudson/hudson-home/jobs/maven-guide-zh-to-production/workspace/</missing> </ive> </file> </activation> <id/> <build/> <modules/> <repositories/> <pluginrepositories/> </profile> รายการการกำหนดค่าโปรไฟล์ยังมีอยู่ใน sett.xml ซึ่งเป็นรุ่นที่ถูกครอบตัดขององค์ประกอบโปรไฟล์ใน pom.xml รวมถึง ID, การเปิดใช้งาน, ที่เก็บ, ปลั๊กอินและองค์ประกอบคุณสมบัติ องค์ประกอบโปรไฟล์ที่นี่มีเพียงองค์ประกอบลูกทั้งห้านี้เท่านั้นเนื่องจากการตั้งค่า xml เพียงแค่ใส่ใจเกี่ยวกับระบบอาคารทั้งหมด (นี่คือการวางตำแหน่งบทบาทของไฟล์ settings.xml) แทนที่จะตั้งค่าโมเดลวัตถุโครงการแยกต่างหาก หากเปิดใช้งานโปรไฟล์ในการตั้งค่าค่าของมันจะเขียนทับโปรไฟล์อื่น ๆ ที่กำหนดไว้ใน POM หรือ profile.xml ด้วย ID เดียวกัน
โปรไฟล์ใน pom.xml ถือได้ว่าเป็นสำเนาของ pom.xml โดยมีองค์ประกอบเด็กและวิธีการกำหนดค่าเดียวกันเป็น pom.xml มันมีการเปิดใช้งานเพิ่มเติม (ทริกเกอร์โปรไฟล์) และชุดของการเปลี่ยนแปลง ตัวอย่างเช่นกระบวนการทดสอบอาจชี้ไปที่ฐานข้อมูลที่แตกต่างกัน (สัมพันธ์กับการปรับใช้ขั้นสุดท้าย) หรือการพึ่งพาที่แตกต่างกันหรือที่เก็บที่แตกต่างกันและมีการเปลี่ยนแปลงตาม JDK ที่แตกต่างกัน มีเพียงหนึ่งในนั้นเท่านั้นที่ถูกจัดตั้งขึ้นเพื่อเปิดใช้งานโปรไฟล์ หากพบเงื่อนไขแรกจะไม่มีการจับคู่ในอนาคต
การกำหนดค่ารายงาน
<!-อธิบายข้อกำหนดสำหรับการสร้างรายงานโดยใช้ปลั๊กอินรายงาน ปลั๊กอิน Maven เฉพาะสามารถส่งออกรายงานที่กำหนดเองและกำหนดค่าที่สอดคล้องกัน -> <!-เมื่อผู้ใช้ดำเนินการ "เว็บไซต์ MVN" รายงานเหล่านี้จะทำงานและคุณสามารถดูลิงก์ไปยังรายงานทั้งหมดในแถบการนำทางหน้า -> <การรายงาน> <!-จริงเว็บไซต์ไม่รวมรายงานเริ่มต้น ซึ่งรวมถึงรายงานในเมนูข้อมูลโครงการ -> <excludedefaults /> <!-รายงานที่สร้างขึ้นทั้งหมดที่เก็บไว้ ค่าเริ่มต้นคือ $ {project.build.directory}/ไซต์ -> <OutputDirectory /> <!-ใช้ปลั๊กอินรายงานที่ใช้และการกำหนดค่า -> <plugins> <plugin> <GroupId/> <ArtIfactId/> <เวอร์ชัน/> <สืบทอด/> <การกำหนดค่า> <links> <link> http://java.sun.com/j2se/1.5.0/docs/api/ </link> -> <!-ข้อกำหนด (ชุดรายงาน) สอดคล้องกับเป้าหมายการดำเนินการ ตัวอย่างเช่นมี 1, 2, 3, 4, 5, 6, 7, 8, 9 รายงาน -> <!-1, 2, 5 ถือเป็นชุดรายงานที่สอดคล้องกับเป้าหมายการดำเนินการ 2, 5, 8 ประกอบด้วยชุดรายงาน B ซึ่งสอดคล้องกับเป้าหมายการดำเนินการอื่น-> <ssgorceets> <!-หมายถึงชุดรายงานและการกำหนดค่าที่สร้างชุด-> <porgeSet> <!-ตัวระบุที่ไม่ซ้ำกันของชุดรายงานที่ใช้เมื่อการกำหนดค่า-> <id> sunlink </id> <!-การกำหนดค่า <สืบทอด/> <!-รายงานใดที่ใช้ในชุดนี้-> <sessional> <serxert> javadoc </report> </รายงาน> </reportset> </reportset> </plugin> </plugins>การกำหนดค่าสภาพแวดล้อม
<!-ชื่อและ URL ของระบบการจัดการปัญหาของโครงการ (Bugzilla, Jira, Scarab หรือระบบการจัดการปัญหาใด ๆ ที่คุณต้องการ) ในตัวอย่างนี้ jira-> <issuemagement> <!-ชื่อของระบบการจัดการปัญหา (เช่น Jira),-> <system> jira </ระบบ> <!-URL ของระบบการจัดการปัญหาที่ใช้โดยโครงการ-> <url> http://jira.clf.com/ </url> <!-URL ของระบบการรวมอย่างต่อเนื่องที่ใช้โดยโครงการ (หากระบบการรวมอย่างต่อเนื่องมีเว็บอินเตอร์เฟส) -> <url /> <!-รายการการกำหนดค่าของนักพัฒนา /ผู้ใช้ที่ต้องได้รับการแจ้งเตือนเมื่อสร้างเสร็จสิ้น รวมถึงข้อมูลการแจ้งเตือนและเงื่อนไขการแจ้งเตือน (ข้อผิดพลาดความล้มเหลวความสำเร็จการเตือน)-> <ผู้แจ้งเตือน> <!-กำหนดค่าวิธีการแจ้งผู้ใช้ /นักพัฒนาด้วยวิธีนี้เมื่อบิลด์ถูกขัดจังหวะ-> <ผู้แจ้งเตือน> <! <!-มันได้รับการแจ้งเตือนเมื่อมีการสร้างสำเร็จ-> <sendonsuccess /> <!-มันจะได้รับการแจ้งเตือนเมื่อมีการเตือนเกิดขึ้น-> <sendonwarning /> <!-มันจะได้รับการแจ้งเตือนเมื่อมีการเตือนเกิดขึ้น-> <sendonwarning /> <! สถานที่ที่จะส่งการแจ้งเตือน-> <ที่อยู่/> <!-รายการการกำหนดค่าเพิ่มเติม-> <การกำหนดค่า/> </notifier> </notifiers> </cimanagement>
การกำหนดค่าข้อมูลโครงการ
<!-ชื่อของโครงการสำหรับเอกสารที่สร้างโดย Maven-> <name> Banseon-Maven </name> <!-URL ของโฮมเพจโครงการสำหรับเอกสารที่สร้างโดย Maven-> <url> http://www.clf.com/ </url> <! เมื่อองค์ประกอบนี้สามารถอธิบายได้ในรูปแบบ HTML-> <!-(ตัวอย่างเช่นข้อความใน CDATA จะถูกละเว้นโดย parser และสามารถมีแท็ก HTML) คำอธิบายข้อความธรรมดา -> <!-หากคุณต้องการแก้ไขหน้าดัชนีของเว็บไซต์ที่สร้างขึ้นคุณควรแก้ไขไฟล์หน้าดัชนีของคุณเองแทนการปรับเอกสารที่นี่ -> <Scription> โครงการ Maven เพื่อศึกษา Maven </คำอธิบาย> <!-อธิบายข้อกำหนดเบื้องต้นในสภาพแวดล้อมการก่อสร้างของโครงการนี้ -> <ข้อกำหนดเบื้องต้น> <!-Maven เวอร์ชันขั้นต่ำที่จำเป็นในการสร้างโครงการหรือใช้ปลั๊กอิน-> <maven /> </-Rubeates> <!-ปีของการสร้างโครงการ 4 หลัก ค่านี้เป็นสิ่งจำเป็นเมื่อสร้างข้อมูลลิขสิทธิ์ -> <inceptionyear /> <!-ข้อมูลรายชื่อผู้รับจดหมายที่เกี่ยวข้องกับโครงการ-> <mailingLists> <!-องค์ประกอบนี้อธิบายรายการจดหมายทั้งหมดที่เกี่ยวข้องกับโครงการ เว็บไซต์ที่สร้างขึ้นโดยอัตโนมัติอ้างถึงข้อมูลนี้ -> <MailingList> <!-ชื่ออีเมล-> <name> ตัวอย่าง </name> <!-ที่อยู่หรือลิงก์สำหรับการส่งอีเมล หากเป็นที่อยู่อีเมลลิงก์ MailTo: จะถูกสร้างขึ้นโดยอัตโนมัติเมื่อสร้างเอกสาร-> <post> [email protected] </post> <!-ที่อยู่หรือลิงก์สำหรับการสมัครรับอีเมล หากเป็นที่อยู่อีเมลลิงก์ Mailto: จะถูกสร้างขึ้นโดยอัตโนมัติเมื่อสร้างเอกสาร-> <bemcribe> [email protected] </สมัครสมาชิก> <!-ที่อยู่หรือลิงก์สำหรับยกเลิกการสมัครอีเมล หากเป็นที่อยู่อีเมล MailTo: ลิงก์จะถูกสร้างขึ้นโดยอัตโนมัติเมื่อสร้างเอกสาร-> <SubsBribe> [email protected] </unsubbscribe> <!-คุณสามารถเรียกดู URL ของข้อมูลอีเมล-> <rarchive> http:/hi.clf.com/</archive> </mailinglist นักพัฒนา-> <นักพัฒนา> <!-ตัวระบุที่ไม่ซ้ำกันของผู้พัฒนาโครงการใน SCM-> <id> Hello World </id> <!-ชื่อเต็มของผู้พัฒนาโครงการ-> <name> Banseon </name> <! โครงการองค์ประกอบบทบาทอธิบายบทบาทต่าง ๆ-> <roles> <role> ผู้จัดการโครงการ </role> <role> สถาปนิก </role> </loles> <!-องค์กรที่นักพัฒนาโครงการเป็นเจ้าของ-> <ganictes> การสาธิต </ganical> <!-URL ขององค์กรที่พัฒนาโครงการ คุณสมบัติเช่นวิธีจัดการข้อความโต้ตอบแบบโต้ตอบ ฯลฯ-> <properties> <ptt> ไม่ </dept> </premerties> <!-โซนเวลาที่ผู้พัฒนาโครงการตั้งอยู่จำนวนเต็มในช่วง -11 ถึง 12-> <timezone> -5 ดูองค์ประกอบของนักพัฒนา /นักพัฒนา-> <ผู้สนับสนุน> <ชื่อ /> <อีเมล /> <url /> <องค์กร /> <องค์กร URL /> <roles /> <timezone /> <properties /> < /ผู้สนับสนุน> < /ผู้สนับสนุน> <!-องค์ประกอบนี้อธิบายรายการใบอนุญาตทั้งหมดของโครงการ คุณควรแสดงรายการรายการใบอนุญาตสำหรับโครงการเท่านั้นและไม่แสดงรายการรายการใบอนุญาตสำหรับโครงการการพึ่งพา -> <!-หากมีการระบุสิทธิ์การใช้งานหลายใบผู้ใช้สามารถเลือกหนึ่งในนั้นแทนที่จะรับใบอนุญาตทั้งหมด -> <ใบอนุญาต> <!-อธิบายใบอนุญาตของโครงการซึ่งใช้เพื่อสร้างหน้าใบอนุญาตของเว็บไซต์ของโครงการ รายงานและการตรวจสอบอื่น ๆ บางอย่างจะใช้องค์ประกอบนี้ -> <lisions> <!-ใบอนุญาตใช้สำหรับชื่อทางกฎหมาย-> <name> Apache 2 </name> <!-URL ของหน้าบอดี้ใบอนุญาตอย่างเป็นทางการ-> <url> http://www.clf.com/license-2.0.txt </url> <! repo </distribution> <!-ข้อมูลเพิ่มเติมเกี่ยวกับใบอนุญาต-> <ments> ใบอนุญาต OSS ที่เป็นมิตรกับความเป็นมิตร </comments> </socient> </social> <!-แท็ก SCM (การจัดการการควบคุมแหล่งที่มา) ช่วยให้คุณกำหนดค่ารหัสฐานของคุณสำหรับการใช้งานโดย Maven เว็บไซต์และปลั๊กอินอื่น ๆ -> <SCM> <!-SCM URL ซึ่งอธิบายที่เก็บและวิธีการเชื่อมต่อกับที่เก็บ สำหรับข้อมูลเพิ่มเติมโปรดดูรูปแบบ URL และรายการที่จัดทำโดย SCMS การเชื่อมต่อนี้เป็นการอ่านอย่างเดียว -> <การเชื่อมต่อ> SVN: http: //svn.baidu.com/banseon/maven/ </sconnection> <!-สำหรับนักพัฒนาคล้ายกับองค์ประกอบการเชื่อมต่อ นั่นคือการเชื่อมต่อไม่ได้เป็นเพียงการอ่าน-> <evelopererConnection> SCM: SVN: http: //svn.baidu.com/banseon/maven/ </sidearconnection> <! -> <url> http://svn.baidu.com/banseon </url> </scm> <!-อธิบายคุณลักษณะต่าง ๆ ขององค์กรที่โครงการเป็นของ การใช้เอกสารที่สร้างขึ้นโดย Maven-> <ganicalS> <!-ชื่อเต็มขององค์กร-> <name> ตัวอย่าง </name> <!-URL ของโฮมเพจองค์กร-> <url> http://www.clf.com/ </url> </องค์กร>
สรุป
ข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้เกี่ยวกับไฟล์การกำหนดค่า pom.xml ใน Maven ฉันหวังว่ามันจะเป็นประโยชน์กับทุกคน เพื่อนที่สนใจสามารถอ้างถึงหัวข้ออื่น ๆ ที่เกี่ยวข้องในเว็บไซต์นี้ต่อไป หากมีข้อบกพร่องใด ๆ โปรดฝากข้อความไว้เพื่อชี้ให้เห็น