mvn ติดตั้งใน maven ทำอะไรกันแน่


165

ฉันเพิ่งเริ่มใช้ Maven และฉันได้รับคำสั่งให้ทำmvn installในไดเรกทอรีเฉพาะ

สิ่งที่ไม่mvn installทำว่า?

ฉันคิดว่ามันค้นหาpom.xmlในโฟลเดอร์ปัจจุบันและเริ่มทำตามคำแนะนำที่ระบุในไฟล์นั้น ถูกต้องไหม


คำตอบ:


124

ดังที่คุณอาจทราบ Maven เป็นเครื่องมือสร้างอัตโนมัติที่ Apache จัดทำซึ่งทำหน้าที่มากกว่าการจัดการการพึ่งพา เราสามารถทำให้มันเป็นเพียร์ของ Ant และ Makefile ซึ่งดาวน์โหลดการอ้างอิงทั้งหมดที่จำเป็น

ในmvn installมันเฟรมต้นไม้พึ่งพาขึ้นอยู่กับการกำหนดค่าโครงการpom.xmlในโครงการย่อยทั้งหมดภายใต้ super pom.xml(รูท POM) และดาวน์โหลด / รวบรวมส่วนประกอบที่จำเป็นทั้งหมดในไดเรกทอรีที่เรียกว่า.m2ภายใต้โฟลเดอร์ของผู้ใช้ การอ้างอิงเหล่านี้จะต้องได้รับการแก้ไขสำหรับโครงการที่จะสร้างโดยไม่มีข้อผิดพลาดและmvn installเป็นยูทิลิตี้หนึ่งที่สามารถดาวน์โหลดการพึ่งพาส่วนใหญ่ได้

นอกจากนี้ยังมีสิ่งอำนวยความสะดวกอื่น ๆ ภายใน Maven dependency:resolveซึ่งสามารถใช้แยกต่างหากในกรณีเฉพาะใด ๆ วงจรชีวิตการสร้างของ mvn มีดังนี้: LifeCycle Bindings

  1. process-resources
  2. compile
  3. process-test-resources
  4. test-compile
  5. test
  6. package
  7. install
  8. deploy

ขั้นตอนการทดสอบของ mvn นี้สามารถละเว้นได้โดยใช้แฟล็-DskipTests=true


9
เพียงบันทึกด้านข้างหากคุณต้องการข้ามเป้าหมายการทดสอบทั้งหมดที่เกี่ยวข้องให้ใช้: -Dmaven.test.skip = true (แทน -DskipTests = true)
Manoj Shrestha

คำตอบนี้ล้มเหลวในการชี้แจงว่าคำสั่งติดตั้งในที่สุดจะติดตั้งสิ่งประดิษฐ์ในพื้นที่นั่นคือในพื้นที่เก็บข้อมูลท้องถิ่น
PeriChandra

34

คุณเคยดูเอกสาร Maven ใด ๆ ตัวอย่างเช่นเอกสารติดตั้ง mavenหรือไม่

รุ่น Nutshell: มันจะสร้างโครงการและติดตั้งในพื้นที่เก็บข้อมูลท้องถิ่นของคุณ


สมมติว่าคุณเรียกใช้ "mvn install" บนไลบรารีโอเพ่นซอร์ส จากนั้นคุณเรียกใช้ "mvn ติดตั้ง" ในโครงการที่ใช้ไลบรารีโอเพ่นซอร์สที่เรารวบรวมเป็นครั้งแรก เมื่อรัน "mvn install" JAR จะถูกค้นหาใน repo ภายในเครื่องก่อนหรือไม่ หรือมันขึ้นอยู่กับไฟล์ POM?
เควินเมเรดิ ธ

1
@ เควินมันควรจะเป็นคนท้องถิ่นก่อนเพราะมันเป็นประเด็น หากไม่ได้อยู่ในที่เก็บข้อมูลในเครื่องมันจะตรวจสอบว่ามีที่เก็บข้อมูลใดที่คุณได้กำหนดค่าไว้ (หรือค่าเริ่มต้น) และติดตั้งลงใน repo ท้องถิ่นของคุณหากพบ ฉันสงสัยว่าคุณสามารถกำหนดค่าให้ข้าม repo ในพื้นที่ได้ตลอดเวลาแม้ว่าฉันจะไม่รู้วิธีโดยไม่ต้องมองหามัน
เดฟนิวตัน

17
ได้ที่คุณมองไปที่เอกสารที่ยอมรับสำหรับ Maven? เว็บไซต์ของ Apache อธิบายจุดประสงค์ของการติดตั้ง mvn ดังนี้: "ในกรณีส่วนใหญ่การติดตั้ง: เป้าหมายการติดตั้งไม่ต้องการการกำหนดค่าใด ๆ มันต้องใช้ POM ของโครงการและไฟล์สิ่งประดิษฐ์ที่จะติดตั้งในระหว่างขั้นตอนการติดตั้ง เป็นเพราะ doc ของ Apache ไม่สามารถอธิบายได้ว่า 'mvn install' ทำอะไรได้บ้างที่คนเช่นโปสเตอร์และตัวฉันเองกำลังมองหาคำตอบ คำถามที่เหมาะสมอย่างสมบูรณ์แบบ
bethesdaboys

8

มันจะเรียกใช้เป้าหมายทั้งหมดของปลั๊กอินที่กำหนดค่าทั้งหมดซึ่งเกี่ยวข้องกับขั้นตอนใด ๆ ของวงจรชีวิตเริ่มต้นจนถึงขั้นตอน "ติดตั้ง":

https://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html#Lifecycle_Reference


6

install:installเป้าหมายที่ให้บริการโดย«Apache Maven ติดตั้งปลั๊กอิน»:

Apache Maven ติดตั้งปลั๊กอิน

ติดตั้งปลั๊กอินจะใช้ในระหว่างขั้นตอนการติดตั้งเพื่อเพิ่มสิ่งประดิษฐ์ลงในพื้นที่เก็บข้อมูลท้องถิ่น ติดตั้งปลั๊กอินใช้ข้อมูลใน POM นี้ ( groupId, artifactId,version ) เพื่อตรวจสอบสถานที่ที่เหมาะสมสำหรับสิ่งประดิษฐ์ภายในพื้นที่เก็บข้อมูลท้องถิ่น

ที่เก็บโลคัลคือแคชโลคัลที่เก็บสิ่งประดิษฐ์ทั้งหมดที่จำเป็นสำหรับบิลด์ โดยค่าเริ่มต้นจะอยู่ภายในไดเรกทอรีหลักของผู้ใช้ ( ~/.m2/repository) แต่สามารถกำหนดค่าตำแหน่งในการ~/.m2/settings.xmlใช้<localRepository>องค์ประกอบ

- Apache Maven ติดตั้งปลั๊กอิน - บทนำ

ต้องบอกว่าเป้าหมายที่แน่นอน:

install:install ใช้เพื่อติดตั้งสิ่งประดิษฐ์หลักของโครงการโดยอัตโนมัติ (JAR, WAR หรือ EAR), POM ของมันและสิ่งที่แนบมาใด ๆ (แหล่งที่มา, javadoc, ฯลฯ ) ที่ผลิตโดยโครงการเฉพาะ

- Apache Maven ติดตั้งปลั๊กอิน - บทนำ

สำหรับรายละเอียดเพิ่มเติมเกี่ยวกับเป้าหมายโปรดดูที่Apache Maven Install Plugin - ติดตั้ง:หน้าติดตั้ง

สำหรับรายละเอียดเพิ่มเติมเกี่ยวกับการสร้างวงจรชีวิตทั่วไปและที่สถานที่เป้าหมายที่มีอยู่ในการสร้างวงจรชีวิต, โปรดดูที่Maven - รู้เบื้องต้นเกี่ยวกับการสร้างวงจรชีวิตหน้า


3

คำตอบสั้น ๆ

mvn ติดตั้ง

  • เพิ่มส่วนทั้งหมด (การอ้างอิง) ที่ระบุในpomลงในที่ เก็บโลคัล (จากแหล่งรีโมต)

2

-DskipTests=true เป็นรูปแบบย่อของ -Dmaven.test.skip=true

ทำให้เกิดการเปลี่ยนแปลงในSetting.xmlในของคุณ.m2โฟลเดอร์ คุณสามารถใช้ลิงก์ไปยัง repo ภายในเครื่องเพื่อไม่ให้ดาวน์โหลดครั้งเดียวไม่ควรดาวน์โหลดซ้ำแล้วซ้ำอีก

<url>file://C:/Users/admin/.m2/repository</url>
 </repository>

0

mvn ติดตั้งงานหลักคือ1) ดาวน์โหลดการอ้างอิงและ2) สร้างโครงการ

ในขณะที่งานที่ 1ได้รับการดูแลโดย ID เช่น intellij ในปัจจุบัน (พวกเขาดาวน์โหลดสำหรับการพึ่งพาใด ๆ ที่ POM)

MVN ติดตั้ง majorly ตอนนี้ใช้สำหรับงานที่ 2

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