У меня есть проект под названием Родитель. Его тип - POM. Существует библиотека (ojdbc6.jar
), который не доступен в общедоступном хранилище, поэтому я к нему доступ через <SystemPath>
, как вы можете видеть ниже pom.xml
:Не удается получить доступ к родительской библиотеке проекта (jar) в дочернем модуле - 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>
Теперь имена ребенка проекта являются детей Module1 и детей Module2 использование этого (ojdbc6.jar
) библиотека это POM упоминается ниже:
<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>
Когда я строю с помощью Maven, это дает мне ошибку:
Почему это похоже на локальный репозиторий? Это происходит только тогда, когда родительский проект содержит библиотеку (jar
), которая содержит системный путь. Этого не происходит, когда библиотека путей доступа (jar
) в том же проекте, как и родительская ссылка ojdbc6.jar
, там хорошо.
Где находится баночка относительно детей? Свойство basedir отличается от родительского и дочернего. –
Jar находится в папке lib относительно родительского проекта и maven передает баны зависимостей его модулю. Я предполагаю, что maven преобразует относительно абсолютного пути, когда он включает в себя байт зависимости от дочернего модуля. –