Java 如何确保Maven从父lib文件夹获取jar并忽略子模块?
我的项目结构如下:Java 如何确保Maven从父lib文件夹获取jar并忽略子模块?,java,maven,jenkins,pom.xml,parent-pom,Java,Maven,Jenkins,Pom.xml,Parent Pom,我的项目结构如下: - app - app-repo - app-service - app-controller - lib (custom jar placed here) - pom.xml (parent pom) <repositories> <repository> <id>in-project</id> <name>In Proj
- app
- app-repo
- app-service
- app-controller
- lib (custom jar placed here)
- pom.xml (parent pom)
<repositories>
<repository>
<id>in-project</id>
<name>In Project Repo</name>
<url>file://${project.parent.basedir}/lib</url>
</repository>
</repositories>
我的父pom包括子模块和从lib文件夹获取jar的存储库位置
<repositories>
<repository>
<id>in-project</id>
<name>In Project Repo</name>
<url>file://${main.basedir}/lib</url>
</repository>
</repositories>
<modules>
<module>app-repo</module>
<module>app-service</module>
<module>app-controller</module>
</modules>
<properties>
<main.basedir>${project.basedir}</main.basedir>
<jar.version>1.7</jar.version>
<release.version>1.0-SNAPSHOT</release.version>
</properties>
<dependencies>
<dependency> <!-- jar file located in lib folder -->
<groupId>com.custom</groupId>
<artifactId>custom-core</artifactId>
<version>${jar.version}</version>
<scope>compile</scope>
</dependency>
</dependencies>
在构建app repo时失败,出现错误:
Failure to find com.custom:custom-core:jar:1.7 in
file://C:\Windows\System32\config\systemprofile\AppData\Local\Jenkins\.jenkins\workspace\My_APP\app-repo/lib was cached in the local repository
我发现maven在子模块构建期间从父pom继承了
,因此文件:/${main.basedir}/lib
导致maven查找app repo/lib并出错
所以我想知道处理这种情况的最佳实践是什么
文件://${project.parent.basedir}/lib
添加到app repo中的子pom.xml中,如下所示:
- app
- app-repo
- app-service
- app-controller
- lib (custom jar placed here)
- pom.xml (parent pom)
<repositories>
<repository>
<id>in-project</id>
<name>In Project Repo</name>
<url>file://${project.parent.basedir}/lib</url>
</repository>
</repositories>
在从J·土拨鼠那里得到提示后,我能够从中找到答案 从3.0.4开始,
${parent.basedir}
不再可用,因此child中的pom.xml需要如下,以便能够引用父项目目录:
<main.basedir>${project.basedir}${file.separator}..</main.basedir>
${project.basedir}${file.separator}。。
您的子回购协议是否有自己的pom.xml?也许您可以在其中指定文件://${project.parent.basedir}/lib。另外,为了澄清,您的意思是“app repo/lib”(不是app repo/lib)?是的,每个子模块都有自己的pom.xml。让我试试这个。开始使用存储库管理器,将所需的jar放在那里,而不是放在lib目录中。。。在与Maven的关系中,它违背了Maven的基础。
<main.basedir>${project.basedir}${file.separator}..</main.basedir>