ฉันต้องการให้ขวดอยู่ใน lib ของบุคคลที่สามในการควบคุมแหล่งที่มาและเชื่อมโยงไปยังมันโดยเส้นทางสัมพัทธ์จากไฟล์ pom.xml
หากคุณต้องการสิ่งนี้จริงๆ (เข้าใจถ้าคุณไม่สามารถใช้ที่เก็บข้อมูลขององค์กร) คำแนะนำของฉันคือการใช้ "ที่เก็บไฟล์" ในเครื่องของโครงการและไม่ใช้การsystem
พึ่งพาขอบเขต system
ควรหลีกเลี่ยงการกำหนดขอบเขตการพึ่งพาดังกล่าวทำงานได้ไม่ดีในหลาย ๆ สถานการณ์ (เช่นในชุดประกอบ) ทำให้เกิดปัญหามากกว่าผลประโยชน์
ดังนั้นให้ประกาศที่เก็บโลคัลให้กับโปรเจ็กต์แทน:
<repositories>
<repository>
<id>my-local-repo</id>
<url>file://${project.basedir}/my-repo</url>
</repository>
</repositories>
ติดตั้ง lib บุคคลที่สามของคุณโดยใช้install:install-file
กับlocalRepositoryPath
พารามิเตอร์:
mvn install:install-file -Dfile=<path-to-file> -DgroupId=<myGroup> \
-DartifactId=<myArtifactId> -Dversion=<myVersion> \
-Dpackaging=<myPackaging> -DlocalRepositoryPath=<path>
อัปเดต:ดูเหมือนว่าinstall:install-file
จะไม่สนใจlocalRepositoryPath
เมื่อใช้ปลั๊กอินเวอร์ชัน 2.2 อย่างไรก็ตามมันใช้งานได้กับเวอร์ชั่น 2.3 และใหม่กว่าของปลั๊กอิน ดังนั้นใช้ชื่อเต็มของปลั๊กอินเพื่อระบุรุ่น:
mvn org.apache.maven.plugins:maven-install-plugin:2.3.1:install-file \
-Dfile=<path-to-file> -DgroupId=<myGroup> \
-DartifactId=<myArtifactId> -Dversion=<myVersion> \
-Dpackaging=<myPackaging> -DlocalRepositoryPath=<path>
maven-install-plugin เอกสาร
ในที่สุดประกาศว่ามันเหมือนการพึ่งพาอื่น ๆ (แต่ไม่มีsystem
ขอบเขต):
<dependency>
<groupId>your.group.id</groupId>
<artifactId>3rdparty</artifactId>
<version>X.Y.Z</version>
</dependency>
นี่คือ IMHO ทางออกที่ดีกว่าการใช้system
ขอบเขตเนื่องจากการพึ่งพาของคุณจะได้รับการปฏิบัติเหมือนพลเมืองดี (เช่นจะรวมอยู่ในการประชุมและอื่น ๆ )
ตอนนี้ฉันต้องพูดถึงว่า "วิธีที่ถูกต้อง" เพื่อจัดการกับสถานการณ์นี้ในสภาพแวดล้อมขององค์กร (อาจไม่ใช่กรณีที่นี่) จะใช้พื้นที่เก็บข้อมูลขององค์กร
localRepositoryPath
...