maven - 如何将父 POM 指定给项目的子模块?
问题描述
有一个包含模块的 Spring 项目:
该pom.xml
项目有一个父级:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.bni.wfcredit</groupId>
<artifactId>bni-wfcredit-root</artifactId>
<version>1.0-SNAPSHOT</version>
<relativePath>bni-wfcredit-root</relativePath>
</parent>
<artifactId>bni-wfcredit</artifactId>
<packaging>pom</packaging>
<name>Bni wfcredit</name>
<url>http://maven.apache.org</url>
<modules>
<module>bni-wfcredit-root</module>
</modules>
</project>
如您所见,父标签指向模块 bni-wfcredit-root。
bni-wfcredit-root 模块的 pom.xml :
<?xml version="1.0"?>
<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>com.bni.wfcredit</groupId>
<artifactId>bni-wfcredit-root</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>pom</packaging>
<name>Bni wfcredit root</name>
<url>http://maven.apache.org</url>
<properties>
...
</properties>
<dependencyManagement>
<dependencies>
...
</dependencies>
</dependencyManagement>
<dependencies>
...
</dependencies>
<modules>
<module>../bni-wfcredit-common</module>
<module>../bni-wfcredit-applogging</module>
<module>../bni-wfcredit-checklist</module>
<module>../bni-wfcredit-instruction</module>
<module>../bni-wfcredit-messaging</module>
<module>../bni-wfcredit-organisation</module>
<module>../bni-wfcredit-security</module>
<module>../bni-wfcredit-workflow</module>
<module>../bni-wfcredit-mainapp</module>
</modules>
<!-- Build -->
<build>
...
</build>
</project>
当我执行:mvn -X clean install
在目录 D:\Projets\bni-wfcredit 时,我得到错误:
[ERROR] The build could not read 8 projects -> [Help 1]
org.apache.maven.project.ProjectBuildingException: Some problems were encountered while processing the POMs:
[WARNING] 'parent.relativePath' points at com.bni.wfcredit:bni-wfcredit instead of com.bni.wfcredit:bni-wfcredit-root, please verify your project structure @ line 6, column 13
[FATAL] Non-resolvable parent POM: Could not find artifact com.bni.wfcredit:bni-wfcredit-root:pom:1.0-SNAPSHOT and 'parent.relativePath' points at wrong local POM @ line 6, column 13
[WARNING] 'parent.relativePath' points at com.bni.wfcredit:bni-wfcredit instead of com.bni.wfcredit:bni-wfcredit-root, please verify your project structure @ line 6, column 13
[FATAL] Non-resolvable parent POM: Could not find artifact com.bni.wfcredit:bni-wfcredit-root:pom:1.0-SNAPSHOT and 'parent.relativePath' points at wrong local POM @ line 6, column 13
[WARNING] 'parent.relativePath' points at com.bni.wfcredit:bni-wfcredit instead of com.bni.wfcredit:bni-wfcredit-root, please verify your project structure @ line 6, column 13
[FATAL] Non-resolvable parent POM: Could not find artifact com.bni.wfcredit:bni-wfcredit-root:pom:1.0-SNAPSHOT and 'parent.relativePath' points at wrong local POM @ line 6, column 13
[WARNING] 'parent.relativePath' points at com.bni.wfcredit:bni-wfcredit instead of com.bni.wfcredit:bni-wfcredit-root, please verify your project structure @ line 5, column 13
[FATAL] Non-resolvable parent POM: Could not find artifact com.bni.wfcredit:bni-wfcredit-root:pom:1.0-SNAPSHOT in JasperReports (http://jaspersoft.artifactoryonline.com/jaspersoft/third -party-ce-artifacts/) and 'parent.relativePath' points at wrong local POM @ line 5, column 13
[WARNING] 'parent.relativePath' points at com.bni.wfcredit:bni-wfcredit instead of com.bni.wfcredit:bni-wfcredit-root, please verify your project structure @ line 7, column 10
[FATAL] Non-resolvable parent POM: Could not find artifact com.bni.wfcredit:bni-wfcredit-root:pom:1.0-SNAPSHOT and 'parent.relativePath' points at wrong local POM @ line 7, column 10
[WARNING] 'parent.relativePath' points at com.bni.wfcredit:bni-wfcredit instead of com.bni.wfcredit:bni-wfcredit-root, please verify your project structure @ line 6, column 13
[FATAL] Non-resolvable parent POM: Could not find artifact com.bni.wfcredit:bni-wfcredit-root:pom:1.0-SNAPSHOT and 'parent.relativePath' points at wrong local POM @ line 6, column 13
[WARNING] 'parent.relativePath' points at com.bni.wfcredit:bni-wfcredit instead of com.bni.wfcredit:bni-wfcredit-root, please verify your project structure @ line 7, column 10
[FATAL] Non-resolvable parent POM: Could not find artifact com.bni.wfcredit:bni-wfcredit-root:pom:1.0-SNAPSHOT and 'parent.relativePath' points at wrong local POM @ line 7, column 10
[WARNING] 'parent.relativePath' points at com.bni.wfcredit:bni-wfcredit instead of com.bni.wfcredit:bni-wfcredit-root, please verify your project structure @ line 7, column 10
[FATAL] Non-resolvable parent POM: Could not find artifact com.bni.wfcredit:bni-wfcredit-root:pom:1.0-SNAPSHOT and 'parent.relativePath' points at wrong local POM @ line 7, column 10
at org.apache.maven.project.DefaultProjectBuilder.build(DefaultProjectBuilder.java:364)
at org.apache.maven.DefaultMaven.collectProjects(DefaultMaven.java:637)
at org.apache.maven.DefaultMaven.getProjectsForMavenReactor(DefaultMaven.java:586)
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:229)
at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:152)
at org.apache.maven.cli.MavenCli.execute(MavenCli.java:555)
at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:214)
at org.apache.maven.cli.MavenCli.main(MavenCli.java:158)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289)
at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229)
at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415)
at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356)
[ERROR]
[ERROR] The project com.bni.wfcredit:bni-wfcredit-common:1.0-SNAPSHOT (D:\Projets\bni-wfcredit\bni-wfcredit-common\pom.xml) has 1 error
[ERROR] Non-resolvable parent POM: Could not find artifact com.bni.wfcredit:bni-wfcredit-root:pom:1.0-SNAPSHOT and 'parent.relativePath' points at wrong local POM @ line 6, column 1 3 -> [Help 2]
org.apache.maven.model.resolution.UnresolvableModelException: Could not find artifact com.bni.wfcredit:bni-wfcredit-root:pom:1.0-SNAPSHOT
at org.apache.maven.project.ProjectModelResolver.resolveModel(ProjectModelResolver.java:159)
at org.apache.maven.model.building.DefaultModelBuilder.readParentExternally(DefaultModelBuilder.java:817)
at org.apache.maven.model.building.DefaultModelBuilder.readParent(DefaultModelBuilder.java:669)
at org.apache.maven.model.building.DefaultModelBuilder.build(DefaultModelBuilder.java:307)
at org.apache.maven.project.DefaultProjectBuilder.build(DefaultProjectBuilder.java:411)
at org.apache.maven.project.DefaultProjectBuilder.build(DefaultProjectBuilder.java:380)
at org.apache.maven.project.DefaultProjectBuilder.build(DefaultProjectBuilder.java:496)
at org.apache.maven.project.DefaultProjectBuilder.build(DefaultProjectBuilder.java:380)
at org.apache.maven.project.DefaultProjectBuilder.build(DefaultProjectBuilder.java:496)
at org.apache.maven.project.DefaultProjectBuilder.build(DefaultProjectBuilder.java:380)
at org.apache.maven.project.DefaultProjectBuilder.build(DefaultProjectBuilder.java:344)
at org.apache.maven.DefaultMaven.collectProjects(DefaultMaven.java:637)
at org.apache.maven.DefaultMaven.getProjectsForMavenReactor(DefaultMaven.java:586)
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:229)
at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:152)
at org.apache.maven.cli.MavenCli.execute(MavenCli.java:555)
at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:214)
at org.apache.maven.cli.MavenCli.main(MavenCli.java:158)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289)
at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229)
at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415)
at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356)
Caused by: org.eclipse.aether.resolution.ArtifactResolutionException: Could not find artifact com.bni.wfcredit:bni-wfcredit-root:pom:1.0-SNAPSHOT
at org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolve(DefaultArtifactResolver.java:459)
at org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolveArtifacts(DefaultArtifactResolver.java:262)
at org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolveArtifact(DefaultArtifactResolver.java:239)
at org.eclipse.aether.internal.impl.DefaultRepositorySystem.resolveArtifact(DefaultRepositorySystem.java:295)
at org.apache.maven.project.ProjectModelResolver.resolveModel(ProjectModelResolver.java:155)
... 25 more
Caused by: org.eclipse.aether.transfer.ArtifactNotFoundException: Could not find artifact com.bni.wfcredit:bni-wfcredit-root:pom:1.0-SNAPSHOT
at org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolve(DefaultArtifactResolver.java:449)
... 29 more
那么如何指定父级呢?
解决方案
多模块结构应该是这样的——
parent
├── pom.xml
├── module
├── pom.xml
首先,检查您的本地存储库中的父项目吗?如果没有,那么您需要检查它并自己构建它。
您需要添加一个空<relativePath>
的,<parent>
以便它从存储库中解析父 pom。
<parent>
<groupId>com.bni.wfcredit</groupId>
<artifactId>bni-wfcredit-root</artifactId>
<version>1.0-SNAPSHOT</version>
<relativePath></relativePath>
</parent>
您可以在此处阅读更多详细信息 。
推荐阅读
- angular - 使用 InAppBrowser 获取当前 URL
- mongodb - 如何更新嵌套数组对象mongodb
- vue.js - 在组件中定义子路由
- python - Python Turtle setworldcoordinates 负值
- python - 方位角归一化
- python - PyNaCl 更改随机数大小
- c - 如何从可变长度函数创建宏?其中宏值是另一个可变长度函数
- ios - 没有互联网连接时,`DeviceCheck` API 可以生成令牌吗?
- python-3.x - python请求中的多处理
- php - 无法访问 Microsoft Dynamics 365 Business Central 的 APIS