วัตถุ Maven คืออะไร


342

อะไรคือสิ่งประดิษฐ์และทำไม Maven จึงต้องการมัน?


3
เพิ่มเติมเกี่ยวกับแนวคิด Maven ได้ที่นี่: tshikatshikaaa.blogspot.nl/2012/05/…
Jérôme Verstrynge

1
btw คุณสามารถดูอภิธานศัพท์ Apache Maven อย่างเป็นทางการสำหรับคำจำกัดความของสิ่งประดิษฐ์
informatik01

1
คำตอบเหล่านี้ไม่สมบูรณ์ คุณสามารถดูนี้เพียงแค่การเรียกดูที่เก็บ Maven สิ่งประดิษฐ์คือเห็นได้ชัดไดเรกทอรีที่น่าพอใจข้อ จำกัด บางอย่างเช่นต้องมีไฟล์ที่เรียกว่าและไฟล์ที่เรียกว่าmaven-metadata.xml <artifactId>-<version>.pomไฟล์เหล่านี้ทั้งคู่มีสกีมาและซีแมนทิกส์ที่ไม่มีเอกสาร
jameshfisher

คำตอบ:


303

สิ่งประดิษฐ์คือไฟล์ซึ่งมักจะเป็น JAR ที่ได้รับการปรับใช้กับที่เก็บ Maven

Maven build สร้างสิ่งประดิษฐ์ตั้งแต่หนึ่งรายการขึ้นไปเช่น JAR ที่คอมไพล์แล้วและ "แหล่ง" JAR

แต่ละสิ่งประดิษฐ์มี ID กลุ่ม (โดยปกติคือชื่อโดเมนที่กลับด้านเช่น com.example.foo), ID สิ่งประดิษฐ์ (เพียงแค่ชื่อ) และสตริงรุ่น ทั้งสามร่วมกันระบุสิ่งประดิษฐ์ที่ไม่ซ้ำกัน

การอ้างอิงของโครงการถูกระบุว่าเป็นสิ่งประดิษฐ์


5
สิ่งประดิษฐ์นั้นเป็นไฟล์ JAR หรือไม่? ดังนั้นไฟล์ jar เวลา joda สามารถเรียกสิ่งประดิษฐ์ joda, jar ไฮเบอร์เนตสามารถเรียกสิ่งประดิษฐ์จำศีล ฯลฯ ?
david blaine

47
คิดว่าสิ่งประดิษฐ์คืออะไร ชาวอียิปต์สร้างสิ่งประดิษฐ์ที่ยอดเยี่ยมเช่นเครื่องปั้นดินเผา แต่ถ้าคุณถือชามอียิปต์ไว้ในมือคุณจะไม่เรียกมันว่าเป็น "สิ่งประดิษฐ์" เว้นแต่ว่าคุณกำลังพูดถึงความจริงที่ว่ามันเป็นสิ่งประดิษฐ์ (ความจริง) คุณจะเรียกมันว่าเป็นชาม พวกเขากินข้าวนอกชาม พวกเขาไม่ได้กินข้าวจากสิ่งประดิษฐ์
cbmeeks

3
ฉันคิดว่าสิ่งที่ @cbmeeks ได้รับคือ "สิ่งประดิษฐ์" ไม่ใช่ชื่อสำหรับ "สิ่ง" มันเป็นบทบาทในกระบวนการสร้าง สิ่งใดก็ตามที่สามารถจำแนกได้ว่าเป็น "สิ่งประดิษฐ์" หาก Maven สร้างขึ้นและได้รับพิกัด Maven พิเศษเพื่อระบุ
Garret Wilson

หากฉันมีสิ่งที่เรียกว่า "com.example: mylibrary: 1.0.0" (groupId :ifactId: version) ที่ประกอบด้วย jar, pom และ jar ต้นฉบับซึ่งสิ่งต่อไปนี้เป็นสิ่งประดิษฐ์: 1. แต่ละไฟล์ (pom, jar, source jar) เป็นสิ่งประดิษฐ์แยกต่างหาก 2. ชุดของไฟล์ที่ใช้ร่วมกัน (groupId :ifactId: version) ทำขึ้นสิ่งประดิษฐ์เดียว 3. มีอะไรอีกบ้าง?
Laurence Gonsalves

คุณไม่ได้อธิบายวิธีรับ groupid และ artifactid ตามชื่อของคลาส Downvote
Philip Rego

114

ในแง่ซอฟแวร์โดยทั่วไปเป็น " สิ่งประดิษฐ์ " เป็นสิ่งที่ผลิตโดยกระบวนการพัฒนาซอฟต์แวร์ไม่ว่าจะเป็นซอฟต์แวร์ที่เกี่ยวข้องกับเอกสารหรือแฟ้มที่ปฏิบัติการ

ใน Maven ศัพท์สิ่งประดิษฐ์ที่เป็นผลผลิตที่เกิดจาก Maven สร้างโดยทั่วไปjarหรือwarหรือแฟ้มที่ปฏิบัติการอื่น ๆ Artifacts ใน maven ถูกระบุโดยระบบพิกัดของ groupId, artifactId และเวอร์ชัน Maven ใช้groupId, artifactIdและversionเพื่อระบุการอ้างอิง (ปกติ jar ไฟล์อื่น ๆ ) ที่จำเป็นในการสร้างและเรียกใช้รหัสของคุณ


หนังสือของฉันบอกว่า "สิ่งประดิษฐ์หลักของแอปพลิเคชันออนไลน์นี้จะเป็นคลาส Java ชื่อผู้ใช้ซึ่งจะ" ... นี่เป็นสิ่งเดียวกับสิ่งประดิษฐ์ที่คุณพูดถึงหรือไม่
david blaine

@davidblaine - ไม่แน่นอนประโยคนั้นใช้คำที่มีความหมายกว้างกว่า
Ken Liu

27

ฉันรู้ว่านี่เป็นด้ายโบราณ แต่ฉันต้องการเพิ่มความแตกต่างเล็กน้อย

มีสิ่งประดิษฐ์ Maven สิ่งประดิษฐ์เครื่องมือจัดการพื้นที่เก็บข้อมูลแล้วมี Maven Artifacts

สิ่งประดิษฐ์ Maven นั้นเหมือนกับที่ผู้แสดงความเห็น / ผู้ตอบโต้คนอื่นพูดว่า: มันเป็นสิ่งที่ทะลักออกมาจากการสร้างโครงการ Maven นั่นอาจเป็น.jarไฟล์หรือ.warไฟล์หรือ.zipไฟล์.dllหรืออะไรก็ได้

สิ่งประดิษฐ์ผู้จัดการพื้นที่เก็บข้อมูลเป็นสิ่งที่ดีจัดการโดยผู้จัดการพื้นที่เก็บข้อมูล ผู้จัดการพื้นที่เก็บข้อมูลนั้นเป็นบริการการตั้งชื่อที่มีประสิทธิภาพสูงสำหรับซอฟต์แวร์และไลบรารี ผู้จัดการพื้นที่เก็บข้อมูลไม่สนใจว่าวัตถุมาจากไหน (อาจมาจาก Maven build หรือไฟล์ในเครื่องหรือ Ant build หรือการคอมไพล์ด้วยมือ ... )

Maven Artifactเป็นคลาส Java ที่แสดงถึงชนิดของ "ชื่อ" ที่ได้รับการปฏิเสธโดยผู้จัดการพื้นที่เก็บข้อมูลลงในสิ่งประดิษฐ์ผู้จัดการพื้นที่เก็บข้อมูล เมื่อนำมาใช้ในความหมายนี้เป็นArtifactเพียงชื่อสรรเสริญสร้างขึ้นจากชิ้นส่วนเช่นgroupId, artifactId, version, scope, classifierและอื่น ๆ

หากต้องการรวมทั้งหมดเข้าด้วยกัน:

  • โครงการ Maven ของคุณอาจขึ้นอยู่กับหลายArtifacts โดยวิธีการของ<dependency>องค์ประกอบ
  • Maven โต้ตอบกับตัวจัดการพื้นที่เก็บข้อมูลเพื่อแก้ไขปัญหาArtifacts เหล่านั้นลงในไฟล์โดยสั่งให้ผู้จัดการพื้นที่เก็บข้อมูลส่งบางส่วนของเครื่องมือจัดการพื้นที่เก็บข้อมูลที่สอดคล้องกับArtifacts ภายใน
  • ในที่สุดหลังจากการแก้ปัญหา Maven สร้างโครงการของคุณและสร้างสิ่งประดิษฐ์ Maven คุณอาจเลือกที่จะ "เปลี่ยนสิ่งนี้ให้เป็น" สิ่งประดิษฐ์ผู้จัดการพื้นที่เก็บข้อมูลโดยในทางกลับกันใช้เครื่องมืออะไรก็ได้ที่คุณต้องการส่งไปยังผู้จัดการพื้นที่เก็บข้อมูลที่มีข้อมูลการประสานงานมากพอที่คนอื่นจะพบได้เมื่อพวกเขาถามผู้จัดการพื้นที่เก็บข้อมูล

หวังว่าจะช่วย


+1 สำหรับข้อมูลใหม่เกี่ยวกับกระทู้เก่าขอบคุณ! แก้ไขพิมพ์ผิด "repoository" แม้ว่าในช่วงเวลาที่ poo อาจจะเป็นคำที่เหมาะสมฮ่าฮ่า ... ทุกคนจะบอกว่า "สิ่งประดิษฐ์" เป็นขวดที่เกิดขึ้นจริงอาจจะเป็นประโยชน์ในการปรับปรุงคำตอบของคุณจะชี้ให้เห็นว่าเมื่อใช้ตัวอย่างเช่นmvn installผู้คนมีความ พยายามหาว่าจะใส่อะไรในรายการนั้น ดังนั้นชื่อเต็มของโถคือสิ่งที่ต้องใส่-DartifactId=YOUR_ARTIFACT_IDใช่ไหม? ชื่อไฟล์ jar แบบเต็มพร้อมเวอร์ชั่นและ. jar? ดูเหมือนจะเป็นสิ่งที่คุณพูด แต่จะช่วยให้บางอย่างชัดเจนจริงๆ คำตอบอื่น ๆ เข้าใกล้สิ่งนี้ แต่ฉันคิดว่าคุณดีที่สุด
JimLohse

23

Maven จัดระเบียบการสร้างในโครงการ

artifactใน Maven เป็นทรัพยากรที่สร้างขึ้นโดยโครงการ Maven โครงการ Maven แต่ละคนสามารถมีตรงหนึ่งartifactเหมือนjar, war, earฯลฯ
แฟ้มการกำหนดค่าของโครงการนี้"pom.xml"อธิบายถึงวิธีการประดิษฐ์คือการสร้างวิธีการทดสอบหน่วยจะทำงาน ฯลฯ โดยทั่วไปการสร้างโครงการซอฟต์แวร์ที่มีผู้เชี่ยวชาญประกอบด้วยโครงการ Maven จำนวนมากที่สร้างสิ่งประดิษฐ์ (เช่นขวด ) ที่ประกอบขึ้นเป็นผลิตภัณฑ์
เช่น

Root-Project   // produces no artifact, simply triggers the build of the other projects
  App-Project  // The application, that uses the libraries
  Lib1-Project // A project that creates a library (jar)
  Lib2-Project // Another library
  Doc-Project  // A project that generates the user documentation from some resources

Maven Artifact ไม่ได้ จำกัด อยู่ที่ทรัพยากร Java คุณสามารถสร้างทรัพยากรใดก็ได้ที่คุณต้องการ เช่นเอกสาร, ไซต์โครงการ, ไฟล์เก็บถาวร, ห้องสมุดพื้นเมือง ฯลฯ

โครงการ Maven แต่ละคนมีรหัสเฉพาะ consiting [groupId, artifactId, version]ของ เมื่อโครงการ maven ต้องการทรัพยากรของโครงการอื่นการอ้างอิงจะถูกกำหนดค่าpom.xmlโดยใช้ตัวระบุที่กล่าวถึงข้างต้น Maven จะแก้ไขการอ้างอิงโดยอัตโนมัติเมื่อมีการเรียกใช้บิลด์ สิ่งประดิษฐ์ของโครงการต้องมีการโหลดแล้วทั้งจากท้องถิ่นrepositoryซึ่งเป็นไดเรกทอรีที่เรียบง่ายในบ้านของผู้ใช้ของคุณหรือจากคนอื่น ๆ (ระยะไกล) pom.xmlที่เก็บที่ระบุไว้ในตัวคุณ


19

Q. Artifact ใน maven คืออะไร?
ตอบ: สิ่งประดิษฐ์เป็นขวด (WAR หรือ EAR) แต่อาจเป็นอย่างอื่นก็ได้ แต่ละสิ่งมี

  • รหัสกลุ่ม (เช่น com.your.package)
  • รหัสสิ่งประดิษฐ์ (เพียงชื่อ) และ
  • สตริงเวอร์ชัน
    ทั้งสามร่วมกันระบุสิ่งประดิษฐ์ที่ไม่ซ้ำกัน

Q. ทำไม Maven ต้องการพวกเขา?
ตอบ: Maven ใช้เพื่อให้พร้อมใช้งานสำหรับแอปพลิเคชันของเรา


คำตอบที่ดีที่สุดเท่าที่ผมเห็นเกี่ยวกับคำตอบอื่น ๆให้มันชัดเจนสิ่งที่เราควรจะพิมพ์ลงใน-DartifactId=YOUR_ARTIFACT_IDเมื่อทำงาน MVN ติดตั้งเพียงข้อเสนอแนะ :)
JimLohse

@JimLohse ขอบคุณโปรดเพิ่มด้วย "แก้ไข" ชื่อ :)
VdeX

9

สิ่งประดิษฐ์คือ JAR หรือสิ่งที่คุณเก็บไว้ในที่เก็บ Maven นำมันออกมาและสร้างรหัสของคุณ


8

สำหรับ Maven กระบวนการสร้างจะถูกจัดเรียงเป็นชุดของสิ่งประดิษฐ์ สิ่งประดิษฐ์รวมถึง:

  1. ส่วนเสริมที่ทำขึ้น Maven นั้นเอง
  2. ขึ้นอยู่กับว่ารหัสของคุณขึ้นอยู่กับ
  3. ทุกสิ่งที่งานสร้างของคุณสร้างขึ้นนั้นสามารถนำไปใช้อย่างอื่นได้

สิ่งประดิษฐ์อาศัยอยู่ในที่เก็บ


4

โดยปกติแล้วเราจะพูดถึง Maven Terminology เกี่ยวกับ Group Id, Artifact Id และ Snapshot Version

รหัสกลุ่ม: ข้อมูลเฉพาะตัวของกลุ่มของโครงการรหัสสิ่งประดิษฐ์: ข้อมูลประจำตัวของโครงการ Snapshot รุ่น: รุ่นที่ใช้โดยโครงการ

Artifact นั้นมิใช่อื่นใดนอกจากไฟล์บางไฟล์เช่น Jar, War, Ear ....

เพียงแค่พูดว่า Artifacts นั้นไม่ได้มี แต่แพ็คเกจเท่านั้น

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