我在maven 2中央存储库中找到了这个神器pom:
http://search.maven.org/remotecontent?filepath=javax/servlet/jsp/jsp-api/2.1.2/jsp-api-2.1.2.pom
它包括:
...
<parent>
<groupId>org.glassfish.web</groupId>
<artifactId>jsp</artifactId>
<version>2.2</version>
<relativePath>../pom.xml</relativePath>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<packaging>jar</packaging>
<version>${jsp-api.version}</version>
<name>JavaServer Pages(TM) API v${jsp-api.version}</name>
....
当我尝试使用Ivy解决依赖时遇到了问题:
<dependency org="javax.servlet.jsp" name="jsp-api" rev="2.1.2" />
Ivy无法解决依赖关系并打印出此错误:
[ivy:resolve] nexus: bad revision found in http://XXX/nexus/content/groups/public/javax/servlet/jsp/jsp-api/2.1.2/jsp-api-2.1.2.pom: expected='2.1.2 found='${jsp-api.version}'
现在想知道存储库中的pom文件是否可以相对于父pom引用?
答案 0 :(得分:3)
来自POM Reference:“注意relativePath元素。它不是必需的,但在搜索本地和远程存储库之前,可以用作Maven的指示符来首先搜索为该项目的父级提供的路径。“
这实际上意味着只有在找到它时才使用relativePath,然后Maven回退到正常的存储库查找。在这种情况下,存储库查找应该可以正常工作,因为引用的工件是available in central。您使用的是本地仓库还是代理?可能是您的代理设置阻止Ivy找到父pom。
答案 1 :(得分:0)
是的,这是合法的。
http://maven.apache.org/guides/introduction/introduction-to-the-pom.html#Project_Inheritance
从错误中看,它似乎没有为您解析${jsp-api.version}
。