构建基于ORAN代码的ONAP Honolulu版本A1策略管理服务容器时出现错误
解决Maven构建A1-Policy-Management时的父POM解析失败问题
先帮你拆解问题:你遇到的构建失败核心原因是ONAP专属父POM org.onap.ccsdk.parent:spring-boot-starter-parent:pom:2.1.7 不在默认的Maven中央仓库中,导致Maven无法找到它;至于那些非法反射访问警告,属于Guice与Java版本兼容的小问题,不影响构建成功,后面再讲怎么处理。
下面是具体的解决步骤:
1. 配置ONAP专属Maven仓库
ONAP所有组件的依赖都托管在自己的Nexus仓库里,你需要将这个仓库添加到Maven配置中,有两种方式可选:
方式一:修改项目的pom.xml
打开/root/oran/a1-policy-management/pom.xml,在<project>标签内添加以下仓库配置:
<repositories> <repository> <id>onap-releases</id> <name>ONAP Releases Repository</name> <url>https://nexus.onap.org/content/repositories/releases/</url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>false</enabled> </snapshots> </repository> <repository> <id>onap-snapshots</id> <name>ONAP Snapshots Repository</name> <url>https://nexus.onap.org/content/repositories/snapshots/</url> <releases> <enabled>false</enabled> </releases> <snapshots> <enabled>true</enabled> </snapshots> </repository> </repositories> <pluginRepositories> <pluginRepository> <id>onap-releases</id> <name>ONAP Releases Repository</name> <url>https://nexus.onap.org/content/repositories/releases/</url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>false</enabled> </snapshots> </pluginRepository> <pluginRepository> <id>onap-snapshots</id> <name>ONAP Snapshots Repository</name> <url>https://nexus.onap.org/content/repositories/snapshots/</url> <releases> <enabled>false</enabled> </releases> <snapshots> <enabled>true</enabled> </snapshots> </pluginRepository> </pluginRepositories>
方式二:修改Maven全局settings.xml(推荐,一次配置所有项目可用)
编辑你的Maven全局配置文件(通常路径是~/.m2/settings.xml,如果没有就新建一个),添加以下profile配置:
<profiles> <profile> <id>onap-repos</id> <activation> <activeByDefault>true</activeByDefault> </activation> <repositories> <repository> <id>onap-releases</id> <url>https://nexus.onap.org/content/repositories/releases/</url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>false</enabled> </snapshots> </repository> <repository> <id>onap-snapshots</id> <url>https://nexus.onap.org/content/repositories/snapshots/</url> <releases> <enabled>false</enabled> </releases> <snapshots> <enabled>true</enabled> </snapshots> </repository> </repositories> <pluginRepositories> <pluginRepository> <id>onap-releases</id> <url>https://nexus.onap.org/content/repositories/releases/</url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>false</enabled> </snapshots> </pluginRepository> <pluginRepository> <id>onap-snapshots</id> <url>https://nexus.onap.org/content/repositories/snapshots/</url> <releases> <enabled>false</enabled> </releases> <snapshots> <enabled>true</enabled> </snapshots> </pluginRepository> </pluginRepositories> </profile> </profiles>
2. 强制更新Maven缓存并重新构建
因为Maven已经缓存了"找不到该父POM"的结果,所以需要用-U参数强制刷新缓存,重新拉取依赖:
mvn clean install -Dmaven.test.skip=true -U
执行这个命令后,Maven会从ONAP的仓库拉取需要的父POM,构建应该就能成功了。
3. 消除非法反射访问警告(可选)
那些关于Guice的反射警告是因为Java 9+限制了某些反射API的使用,不影响构建结果,但如果看着不舒服,可以在Maven命令中添加JVM参数来消除:
mvn clean install -Dmaven.test.skip=true -U --add-opens java.base/java.lang=ALL-UNNAMED
或者你也可以设置环境变量,让所有Maven命令都自动带上这个参数:
export MAVEN_OPTS="--add-opens java.base/java.lang=ALL-UNNAMED"
内容的提问来源于stack exchange,提问作者Pawan
相关产品推荐
相关产品推荐

