我的项目结构类似:
parent-project
|-pom.xml
|
|-proj-A
| |-pom.xml
|
|-proj-B
| |-pom.xml
|
|-proj-C
| |-pom.xml (1)
| |-lib (2)
| |-proj-C-child-A
| |-pom.xml (3)
| |-proj-C-child-B
| |-pom.xml (3)
proj-A 和 proj-B 都是父项目的独立子模块。
proj-C 有多个子模块,这些子模块依赖于无法从远程存储库中检索的非托管库。
我试图:
将这些JAR(using these instructions)导入上面显示的" lib(2)" 文件夹。
mvn deploy:deploy-file \
-Durl=<path-to-proj-C>/lib \
-Dfile=<path-to-the-external-jar> \
-DgroupId=<groupId-for-jar> \
-DartifactId=<artifactId-for-jar> \
-DrepositoryId=lib \
-Dversion=<version-for-jar>
将<repositories>
部分添加到 proj-C pom.xml(1)
<repositories>
<repository>
<id>lib</id>
<name>local-filesystem-repository</name>
<releases>
<enabled>true</enabled>
<checksumPolicy>ignore</checksumPolicy>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
<url>file://${project.basedir}/lib</url>
</repository>
</repositories>
将依赖项添加到 proj-C pom.xml(1)
中的<dependencyManagement>
部分
<dependencyManagement>
<dependencies>
<dependency>
<groupId>my-shiny-jar</groupId>
<artifactId>shiny-api</artifactId>
<version>1.0</version>
</dependency>
</dependencies>
</dependencyManagement>
在子模块中添加依赖项(3) <dependencies>
部分
<dependencies>
<dependency>
<groupId>my-shiny-jar</groupId>
<artifactId>shiny-api</artifactId>
</dependency>
</dependencies>
这不起作用。它无法获取依赖项,因为它在子模块的lib目录中而不是在定义存储库的父目录中查找它们。
Downloading: file://<path-to-proj-C>/proj-C-child-A/lib/...
...
...Could not find artifact <groupId>:<version> in lib
(file://<path-to-proj-C>/proj-C-child-A/lib) -> [Help 1]
看起来它正在使用正在构建的项目,而不是用于替换file://${project.basedir}/lib
元素中的<repositories>
的项目。
在不使用远程存储库的情况下处理此问题的最佳方法是什么?