Maven Systempath ไม่ทำงานตามที่คาดไว้

ฉันได้ระบุการพึ่งพาต่อไปนี้ (ตัวอย่างที่กล่าวถึงที่นี่) ใน pom.xml ซึ่งจะค้นหา saaj.jar ภายใต้ระบบที่ระบุและ Maven เคยเลือกมันจากเส้นทางเดียวกันและทำงานได้ดี

<dependency>
<groupId>saaj</groupId>
<artifactId>saaj</artifactId>
<version>1.0</version>
<scope>system</scope>
<systemPath>${basedir}/src/main/webapp/WEB-INF/lib/saaj.jar</systemPath>
</dependency>

ตอนนี้ฉันได้ย้ายไปที่ windows 7 และ Spring Tool suite เวอร์ชัน 2.7.1 แล้ว (ก่อนหน้านี้ Win XP และ Spring รุ่นเก่ากว่า) ในการตั้งค่าใหม่นี้ฉันได้รับข้อผิดพลาดด้านล่าง

Missing artifact saaj:saaj:jar:1.0:system 

ตอนนี้มันกำลังมองหา saaj-1.0.jar แทนที่จะเป็น saaj.jar และอยู่ใต้โฟลเดอร์ ${basedir}/src/main/webapp/WEB-INF/lib/saaj/saaj/1.0/ แทนที่จะเป็น ${basedir}/ src/main/webapp/WEB-INF/lib/.

ทำไมจึงเป็นเช่นนั้น? โปรดระบุวิธีแก้ปัญหาที่การตั้งค่าก่อนหน้านี้ของฉันควรจะทำงานได้ดี


person Raghavendra Aithal    schedule 18.08.2011    source แหล่งที่มา


คำตอบ (2)


อย่าใช้ขอบเขต system มันมีไว้สำหรับไลบรารีที่ ระบบ จัดเตรียมไว้ ด้วยเส้นทางที่คุณให้มา แสดงว่าคุณกำลังสร้างเว็บแอปพลิเคชันอย่างชัดเจน

ใช้โปรเจ็กต์สงครามและระบุการขึ้นต่อกันของคุณด้วยขอบเขต provided หากมีอยู่แล้ว (เช่น เนื่องจากแอปพลิเคชันเซิร์ฟเวอร์ของคุณจัดเตรียมไว้ให้) หรือไม่มีข้อกำหนดขอบเขตเป็นอย่างอื่น Maven จะดูแลการบรรจุการพึ่งพาโปรเจ็กต์ของคุณในวิธีที่ถูกต้อง ทั้งสำหรับการพัฒนา Eclipse และสำหรับการปรับใช้ในแอปพลิเคชันเซิร์ฟเวอร์ของคุณ

person Nicola Musatti    schedule 18.08.2011

หลีกเลี่ยง systemPath คุณต้องสร้างพื้นที่เก็บข้อมูลในเครื่องเช่น:

นี่คือไฟล์ pom ของคุณ:

<repositories>
    <repository>
        <id>local-repo</id>
        <url>file://${basedir}/lib</url>
    </repository>
</repositories>


    <dependency>
      <groupId>tiago.medici</groupId>
      <artifactId>eureka</artifactId>
      <version>0.0.1</version>
    </dependency> 

ในโปรเจ็กต์ คุณสร้างโฟลเดอร์ lib เพื่อใส่ไฟล์ jar และ maven pom ที่สร้างขึ้น

mvn install:install-file -Dfile=c:\tiago.medici-0.0.1.jar -DgroupId=tiago.medici -DartifactId=eureka -Dversion=0.0.1 -Dpackaging=jar

tiago.medici-0.0.1.pom

<?xml version="1.0" encoding="UTF-8"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <modelVersion>4.0.0</modelVersion>
  <groupId>tiago.medici</groupId>
  <artifactId>eureka</artifactId>
  <version>0.0.1</version>
  <description>POM was created from install:install-file</description>
</project>
person Tiago Medici    schedule 25.06.2019