Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Maven:不可解析的父POM_Maven_Module_Build Automation_Parent Child - Fatal编程技术网

Maven:不可解析的父POM

Maven:不可解析的父POM,maven,module,build-automation,parent-child,Maven,Module,Build Automation,Parent Child,我将maven项目设置为1个shell项目和4个子模块。当我尝试构建外壳时。我得到: [INFO] Scanning for projects... [ERROR] The build could not read 1 project -> [Help 1] [ERROR] [ERROR] The project module1:1.0_A0 (C:\module1\pom.xml) has 1 error [ERROR] Non-resolvable parent POM: Fai

我将maven项目设置为1个shell项目和4个子模块。当我尝试构建外壳时。我得到:

[INFO] Scanning for projects...
[ERROR] The build could not read 1 project -> [Help 1]
[ERROR]   
[ERROR] The project module1:1.0_A0 (C:\module1\pom.xml) has 1 error
[ERROR] Non-resolvable parent POM: Failure to find shell:pom:1.0_A0 in http://nyhub1.ny.ssmb.com:8081/nexus/content/repositories/JBoss/ was cached in the local repository, resolution will not be reattempted until the update interval of jboss has elapsed or updates are forced and 'parent.relativePath' points at wrong local POM @ line 5, column 11 -> [Help 2]
如果我尝试构建一个单独的模块,我会得到同样的错误,只会用它是什么模块替换模块1

让他们都在POM中引用父对象

<parent>
    <artifactId>shell</artifactId>
    <groupId>converter</groupId>
    <version>1.0_A0</version>
</parent>

壳
转换器
1.0_A0
以下是壳牌pom的相关部分:

<groupId>converter</groupId>
<artifactId>shell</artifactId>
<version>1.0_A0</version>
<packaging>pom</packaging>
<name>shell</name>


<modules>
    <module>module1</module>
    <module>module2</module>
    <module>module3</module>
    <module>module4</module>
</modules>
转换器
壳
1.0_A0
聚甲醛
壳
模块1
模2
模块3
模块4
仅供参考

马文的快乐

将模块的相对路径放到../pom.xml解决了这个问题


parent
元素有一个
relativePath
元素,您需要指向父元素的目录。它默认为

另一个原因也可能是父工件来自存储库,无法从
pom.xml
访问,通常是私有存储库。解决方案是在
pom.xml
中提供该存储库:

<repositories>
    <repository>
        <id>internal-repo</id>
        <name>internal repository</name>
        <url>https://my/private/repo</url>
        <layout>default</layout>
        <releases>
            <enabled>true</enabled>
        </releases>
        <snapshots>
            <enabled>true</enabled>
        </snapshots>
    </repository>
</repositories>

内部回购
内部存储库
https://my/private/repo
违约
真的
真的
在我的例子中,由于Eclipse的原因,问题更加复杂:存储库仅在特殊配置文件(
activate private repo…
)中处于活动状态,Eclipse中的Maven GUI不允许通过
Ctrl+Alt+p
快捷方式设置此配置文件


解决方案是在概要文件外部临时声明存储库(无条件),启动
Alt+F5
Maven更新项目,激活概要文件并将存储库声明放回概要文件。这是Eclipse错误,而不是Maven错误。

也可以通过将正确的
设置.xml
文件放入
~/.m2/
目录来修复它。

验证子POM中的值是否正确

GroupId
ArtefactId
Version
例如,在Eclipse中,您可以搜索它:

更换1.0_A0 具有 ${project.version}


运行mvn一次。这将下载所有必需的存储库。完成此步骤后,您可以切换回1.0_A0。

我在工作中遇到类似问题

在没有依赖项的情况下生成父项目在.m2文件夹中创建了parent_project.pom文件

然后在父POM中添加子模块并运行Maven build

<modules>
    <module>module1</module>
    <module>module2</module>
    <module>module3</module>
    <module>module4</module>
</modules>

模块1
模2
模块3
模块4

我有一个问题,两个reactor build pom.xml文件具有相同的artefactId。

只需添加
,pom中的父级应该如下所示:

<parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.4.RELEASE</version>
        <relativePath />
    </parent>

org.springframework.boot
spring启动程序父级
2.0.4.1发布
不可解析的父POM: 这意味着您无法解析父回购

调试模式下的Trun:

[DEBUG] Reading global settings from **/usr/local/Cellar/maven/3.5.4/libexec/conf/settings.xml**
[DEBUG] **Reading user settings from /Users/username/.m2/settings.xml**
[DEBUG] Reading global toolchains from /usr/local/Cellar/maven/3.5.4/libexec/conf/toolchains.xml
[DEBUG] Reading user toolchains from /Users/username/.m2/toolchains.xml
[DEBUG] Using local repository at /Users/username/.m2/repository
[DEBUG] Using manager EnhancedLocalRepositoryManager with priority 10.0 for /Users/username/.m2/repository
[INFO] Scanning for projects...
[ERROR] [ERROR] Some problems were encountered while processing the POMs:
因为母公司回购协议不是maven central的一部分。 解决方案是在~m2/中指定setting.xml,以帮助生成父POM/Users/username/.m2/settings.xml

在该XML中,可能需要指定存储库信息

如果在子项目下生成,则
可以帮助您解析父pom

安装父pom 但是,如果从其文件夹中构建子项目,
将不起作用。您可以
首先将父pom安装到本地存储库中,然后构建子项目。

在中添加依赖项

pom.xml:

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.1.8.RELEASE</version>
    <relativePath/> <!-- lookup parent from repository -->
</parent>
<dependency>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-resources-plugin</artifactId>
        <version>2.4.3</version>
</dependency>

org.springframework.boot
spring启动程序父级
2.1.8.1发布
org.apache.maven.plugins
maven资源插件
2.4.3

经过长时间的尝试,我解决了这个问题,我在本地的子模块文件目录中创建了另一个名为“parent_pom.xml”的文件,并将位于远程的parent_pom.xml的内容粘贴到新创建的“parent_pom.xml”中。
它对我起了作用,错误信息已经消失。

在相对路径标记中,执行以下操作

<relative>{project_name}/pom.xml</relative>
{project_name}/pom.xml
然后RunAs->Maven build


它对我很有效。

当我从.m2文件夹中删除
settings.xml
时,它被修复。

我在父pom中有以下配置:

  <properties>
    <revision>1.0-SNAPSHOT</revision>
  </properties>

  <groupId>com.company.org</groupId>
  <artifactId>api-reactor-pom</artifactId>
  <version>$revision</version>
  <packaging>pom</packaging>

1.0-快照
com.company.org
api反应器聚甲醛
$revision
聚甲醛
我得到了“无法解决的家长POM”错误。我将版本更改为
1.0-SNAPSHOT
,但它不见了


Apache Maven 3.6.3.

是。使用Maven要求您知道自己在做什么,反复试验不会让您走得很远。另一方面,有一些很好的参考资料。这是。所以你在
下添加了这个
?谢谢,我试了一会儿来解决这个问题。我采用了从
。/pom.xml
。//pom.xml
的相对路径。如果您指向的是私有存储库,则不必放置该路径即可解决问题。下面是TomášZáluskýresponse的详细解释。我正在尝试将我的主pom文件扩展到同一目录(同一项目)中的另一个(用于测试)。但这并不能解决这个错误。知道怎么解决吗?正是这个解决了我的问题,谢谢!!!但不是把它放到某个目录中,而是在Preferences-Maven-User设置中将Eclipse指向它。也解决了我的问题。只需确保设置也正确配置为
maven.repo
。我删除了stting.xml文件并修复了。同样的情况!私有回购未添加到pom。仅当所需的父pom与子模块的pom版本相同时,此操作才有效。情况并非总是如此。在我的情况下,此父模块不在父文件夹中,我必须添加子模块../parent module dirAwesome!在设置xml中添加我的回购详细信息有效。但是为什么它没有从pom xml(其中添加了相同的repo)中获取呢?什么样的细节?你能描述一下吗?如果有人感兴趣,在
下添加
对我来说很有效。运行此
mvn安装-N&mvn安装
相对路径是