我遇到了一个我之前从未遇到的奇怪的Maven配置问题,并且对我的解决方案感到困惑。
我有一个本地Nexus服务器,我用它作为镜像的一切。到目前为止,我在settings.xml文件中只有以下镜像:
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:controls="clr-namespace:CarouselView.FormsPlugin.Abstractions;assembly=CarouselView.FormsPlugin.Abstractions"
xmlns:local="clr-namespace:Xama_Test"
x:Class="Xama_Test.Xama_Test"
Title="MainPage">
<ScrollView x:Name="_LargeScroll" Orientation="Vertical">
<StackLayout Orientation = "Vertical" x:Name="SLO" >
<local:FlipPage1 x:Name="FlipMenu" />
</StackLayout>
</ScrollView>
</ContentPage>
但是,我最近想创建自己的自定义父pom,我已部署到我的Nexus repo。在我的项目中,我指出了我的父母:
<mirrors>
<mirror>
<id>nexus</id>
<mirrorOf>*</mirrorOf>
<name>WADA Nexus</name>
<url>https://nexus.domain.org/repository/Public/</url>
</mirror>
</mirrors>
但是,当我现在尝试运行我的构建时,它会失败并显示以下内容:
<parent>
<groupId>org.domain</groupId>
<artifactId>root-pom</artifactId>
<version>1.0.0-SNAPSHOT</version>
</parent>
出于某种原因,maven并没有试图在我的Nexus回购中查找父pom。
我唯一的解决方法是在settings.xml文件中定义一个随机存储库值:
ERROR: Failed to parse POMs
org.apache.maven.project.ProjectBuildingException: Some problems were encountered while processing the POMs:
[FATAL] Non-resolvable parent POM: Could not find artifact org.domain:root-pom:pom:1.0.0-SNAPSHOT and 'parent.relativePath' points at wrong local POM @ line 9, column 10
由于我已经镜像了所有Repos / URL,我可以将该url设置为任何值,maven现在将获取我的父pom。
那么,为什么我甚至需要指定存储库呢?不应该maven自动尝试解决mamp中心或其他一些默认存储库的父pom?
答案 0 :(得分:1)
这不是一个奇怪的配置问题,而只是你身边的误解。您所做的就是在您的父POM中填充par(mar = c(10,3,3,3))
plot(1, 1, type = 'l', ann = F, xlim = c(0, 1), xaxt = "n")
axis(1, at = round(seq(0, 1, len = 9), 2), font = 2, cex.axis = 1.2 ) #First axis
axis(1, at = round(seq(0, 1, len = 9), 2),
labels = paste(100* round(seq(0, 1, len = 9), 2),"%",sep=""),
pos = par("usr")[3] - 1 * 0.1 * (par("usr")[4] - par("usr")[3]),
tick = FALSE, font = 2, cex.axis = 1.2) #2nd axis labels
,并在<distributionManagement/>
中添加一个包含本地Nexus实例的全能镜像,并期望它能够正常运行。
你真的知道你在镜像吗?没有! Maven中默认的硬编码仓库是Maven Central。它是一个不包含任何快照的发布仓库。因此,您会看到settings.xml
。伪造的仓库是使Maven从您的Nexus实例请求快照所必需的,否则它只会请求发布。 Nexus又有一个包含Central的repo组以及托管版本和快照回收站。
只要您不在POM中定义任何快照回购(您不应该这样做),Maven将永远无法下载任何快照。