เพิ่มการพึ่งพาใน Maven


134

ฉันจะนำไฟล์ jar ที่ฉันมีและเพิ่มไปยังระบบการพึ่งพาใน maven 2 ได้อย่างไร ฉันจะเป็นผู้ดูแลการพึ่งพานี้และรหัสของฉันต้องการ jar นี้ในพา ธ คลาสเพื่อที่จะคอมไพล์

คำตอบ:


139

คุณจะต้องทำในสองขั้นตอน:

1. ให้ groupId, artifactId และเวอร์ชัน JAR ของคุณแล้วเพิ่มลงในที่เก็บของคุณ

หากคุณไม่มีที่เก็บภายในและคุณแค่พยายามเพิ่ม JAR ของคุณไปยังที่เก็บในเครื่องของคุณคุณสามารถติดตั้งได้ดังต่อไปนี้โดยใช้ groupId / artifactIds โดยพลการ:

mvn install:install-file -DgroupId=com.stackoverflow... -DartifactId=yourartifactid... -Dversion=1.0 -Dpackaging=jar -Dfile=/path/to/jarfile

คุณยังสามารถปรับใช้กับที่เก็บภายในของคุณได้หากคุณมีและต้องการให้ผู้พัฒนารายอื่นในองค์กรของคุณใช้งานได้ ฉันแค่ใช้อินเทอร์เฟซบนเว็บของที่เก็บของฉันเพื่อเพิ่มอาร์ติแฟกต์ แต่คุณควรจะทำสิ่งเดียวกันได้โดยใช้mvn deploy:deploy-file ....

2. อัปเดตโครงการที่อ้างอิงเพื่ออ้างอิง JAR นี้

จากนั้นอัพเดตการอ้างอิงใน pom.xml ของโปรเจ็กต์ที่ใช้ JAR โดยเพิ่มสิ่งต่อไปนี้ในองค์ประกอบ:

<dependencies>
    ...
    <dependency>
        <groupId>com.stackoverflow...</groupId>
        <artifactId>artifactId...</artifactId>
        <version>1.0</version>
    </dependency>
    ...
</dependencies>

3
คุณสามารถเพิ่มรายละเอียดเกี่ยวกับการปรับใช้ได้หรือไม่? เรามีที่เก็บภายในและฉันต้องการปรับใช้ไฟล์ที่ติดตั้ง jar ในเครื่องของฉันกับที่เก็บนั้นเพื่อให้นักพัฒนารายอื่นและบิลด์เซิร์ฟเวอร์ของเราได้รับ jar ด้วย
Kieveli

คำตอบนี้ควรได้รับทุกไลค์! ฉันใช้สิ่งนี้เพื่อเพิ่มการอ้างอิงสำหรับโครงการ maven ของฉันทั้งบน Google App Engine และ Heroku สำเร็จแล้ว
Leo C Han

93

คุณยังสามารถระบุการอ้างอิงที่ไม่ได้อยู่ในที่เก็บ maven อาจเป็นประโยชน์เมื่อไม่มีที่เก็บ maven กลางสำหรับทีมของคุณหรือถ้าคุณมีเซิร์ฟเวอร์CI

    <dependency>
        <groupId>com.stackoverflow</groupId>
        <artifactId>commons-utils</artifactId>
        <version>1.3</version>
        <scope>system</scope>
        <systemPath>${basedir}/lib/commons-utils.jar</systemPath>
    </dependency>

4
ฉันสามารถใช้ไฟล์ pom อื่นแทน jar ได้หรือไม่?
Jayen

45

อันที่จริงในการตรวจสอบสิ่งนี้ฉันคิดว่าคำตอบทั้งหมดนี้ไม่ถูกต้อง คำถามของคุณทำให้เข้าใจผิดเนื่องจากระดับความเข้าใจของmavenเรา mavenและผมบอกว่าของเราเพราะฉันแค่ได้รับการแนะนำให้รู้จักกับ

ในEclipseเมื่อคุณต้องการเพิ่มไฟล์ไหในโครงการของคุณตามปกติที่คุณดาวน์โหลดขวดด้วยตนเองแล้ววางลงในlibไดเรกทอรี ด้วย maven คุณจะไม่ทำแบบนี้ นี่คือสิ่งที่คุณทำ:

  • ไปที่mvnrepository
  • ค้นหาไลบรารีที่คุณต้องการเพิ่ม
  • คัดลอกdependencyคำสั่งลงในไฟล์pom.xml
  • สร้างใหม่ผ่าน mvn

ตอนนี้mavenจะเชื่อมต่อและดาวน์โหลดjarพร้อมกับรายการการอ้างอิงและแก้ไขการอ้างอิงเพิ่มเติมที่jarอาจมีโดยอัตโนมัติ ดังนั้นหากjarจำเป็นต้องมีการบันทึกคอมมอนด้วยก็จะถูกดาวน์โหลดเช่นกัน


5
ฉันใช้ Spring Tool Suite (สร้างขึ้นจาก Eclipse) หลังจากขั้นตอนที่ 1 & 2 ในโซลูชันข้างต้น: 1. เปิด pom.xml ในตัวแก้ไข STS คลิกแท็บ "การอ้างอิง" ที่ด้านล่าง 2. คลิก "เพิ่ม" ในกลุ่มการอ้างอิง 3. คัดลอก / วางข้อมูลการพึ่งพาแท็บ "Maven" จากหน้าต่างเบราว์เซอร์ ( groupId, artifactId, version) ลงในช่องที่เกี่ยวข้องในป๊อปอัป "Select Dependency" ใน STS 4 คลิกตกลง 5. บันทึก pom.xml เมื่อบันทึกแล้วไดเร็กทอรี maven ของฉันบนฮาร์ดไดรฟ์และการตั้งค่าการพึ่งพา maven ใน STS จะอัปเดตภายในไม่กี่วินาที คุณสามารถแก้ไข. xml ได้โดยตรง แต่การใช้เครื่องมืออาจช่วยหลีกเลี่ยงปัญหารูปแบบ xml
Chris R

2
นี่เป็นวิธีที่ดีที่สุดในการทำสิ่งต่างๆ แต่มีสถานการณ์ที่คุณไม่สามารถทำเช่นนั้นได้ (เช่น jar ที่เป็นกรรมสิทธิ์ไม่ได้อยู่ใน mvnrepository) ในกรณีนี้คุณจะต้องมีวิธีเพิ่ม "ด้วยตนเอง" ซึ่งในกรณีนี้คำตอบอื่นจะมีวิธีแก้ปัญหา
Thunderforge

อาจเป็นไปได้ว่าคำถามที่ถามนั้นไม่ใช่คำถามสำหรับมือใหม่ ฉันใส่ไว้สำหรับคนที่ต้องการทำอะไรบางอย่างโดยไม่มีวลีที่เหมาะสมซึ่งมาจากการใช้เวลาทำงานกับมาเวน (ขณะที่ฉันเป็นในเวลานั้น)
Kieveli

KISS ขอบคุณฉันอ่านแล้วว่านี่คือ C # Nuget ที่เทียบเท่าใน Java แต่ฉันพยายามหาว่าจะคลิกปุ่มใดหรือ cmd เพื่อเรียกใช้ ไม่ใช่ 1: 1 แต่ได้ผล
Terrance

จะสร้างโครงการใหม่ใน maven ใน intelleJ ได้อย่างไร?
Irfan Nasim

14

ฉันจะทำสิ่งนี้:

  1. เพิ่มการอ้างอิงตามที่คุณต้องการใน pom ของคุณ:

    <dependency>
            <groupId>com.stackoverflow...</groupId>
            <artifactId>artifactId...</artifactId>
            <version>1.0</version>
    </dependency>
    

  2. รันmvn installมันจะพยายามดาวน์โหลด jar และล้มเหลว ในกระบวนการนี้จะให้คำสั่งทั้งหมดในการติดตั้ง jar พร้อมข้อความแสดงข้อผิดพลาด คัดลอกคำสั่งนั้นและเรียกใช้! ง่ายเหรอ?!


3

ฉันจะถือว่าคุณกำลังถามถึงวิธีการส่งการอ้างอิงไปยัง "ที่เก็บที่รู้จักกันดี" และไม่เพียงแค่ถามวิธีอัปเดต POM ของคุณ

ถ้าใช่นี่คือสิ่งที่คุณต้องการอ่าน

และสำหรับใครก็ตามที่ต้องการตั้งค่าเซิร์ฟเวอร์ที่เก็บข้อมูลภายในให้ดูที่นี่ (ปัญหาครึ่งหนึ่งในการใช้ Maven 2 คือการค้นหาเอกสาร)


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