Ho un progetto chiamato Parent. Il suo tipo è POM. C'è una biblioteca (ojdbc6.jar
) che non è disponibile nel repository pubblico così io sono l'accesso via <SystemPath>
come si può vedere in seguito pom.xml
:Impossibile accedere alla libreria di progetto padre (jar) nel modulo figlio - Maven
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>com.Parent</groupId>
<artifactId>Parent</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>pom</packaging>
<modules>
<module>childModule</module>
</modules>
<dependencies>
<dependency>
<groupId>com.oracle</groupId>
<artifactId>ojdbc</artifactId>
<version>6</version>
<scope>system</scope>
<systemPath>${basedir}/lib/ojdbc6.jar</systemPath>
</dependency>
</dependencies>
<repositories>
<repository>
<id>in-project</id>
<name>In Project Repo</name>
<url>file://${basedir}/lib</url>
</repository>
</repositories>
Ora i nomi di progetto bambino sono Child-Module1 e Child-Module2 uso questo (ojdbc6.jar
) biblioteca e 'POM è menzionato qui di seguito:
<project>
<modelVersion>4.0.0</modelVersion>
<artifactId>testApp</artifactId>
<version>1.14.5.1-SNAPSHOT</version>
<packaging>war</packaging>
<name>APP1</name>
<description>Application</description>
<parent>
<groupId>com.Parent</groupId>
<artifactId>Parent</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
</project>
Quando creo usando Maven mi dà errore:
Description Resource Path Location Type
The container 'Maven Dependencies' references non existing library
'C:\Users\ABCCOMPUTER_NAME\.m2\repository\com\oracle\ojdbc\6\ojdbc-6.jar'
testApp Build path Problem.
Perché appare nel repository locale? Accade solo quando il progetto principale contiene una libreria (jar
) che contiene il percorso di sistema. Non succede quando la libreria dei percorsi del sistema di accesso (jar
) nello stesso progetto, come genitore che fa riferimento a ojdbc6.jar
, va bene lì.
Dove si trova il barattolo rispetto ai bambini? La proprietà basedir è un valore diverso in genitore e figli. –
Jar si trova nella cartella lib relativa al progetto padre e maven trasferisce i gess della dipendenza al suo modulo. Presumo che maven converta relativo al percorso assoluto quando include il vaso di dipendenza al modulo figlio. –