pom.xml 中的错误

Posted

技术标签:

【中文标题】pom.xml 中的错误【英文标题】:error in pom.xml 【发布时间】:2011-09-26 21:03:55 【问题描述】:

我收到如下错误:

对于依赖依赖 groupId=weblogic, artifactId=webservices,版本=9.2, type=jar:系统范围的依赖 必须指定绝对路径系统 路径

不知道出了什么问题。我配置了我在 pom.xml 中使用的环境变量

【问题讨论】:

【参考方案1】:

使用system 范围时,您必须提供依赖项的绝对路径(与在 Maven 存储库中搜索的任何其他依赖项相反)。请参阅依赖机制简介中的System Dependencies。

例子:

<dependency>
  <groupId>javax.sql</groupId>
  <artifactId>jdbc-stdext</artifactId>
  <version>2.0</version>
  <scope>system</scope>
  <systemPath>$java.home/lib/rt.jar</systemPath>
</dependency>

为什么不直接在本地/公司存储库中安装第三方工件?

编辑:如果您定义了systemPath,但怀疑环境变量未解析,您将收到以下错误(注意路径中存在变量):

The project ... has 1 error
'dependencies.dependency.systemPath' for weblogic:webservices:jar must specify an absolute path but is $env.BEA_HOME/lib/xyz.jar @ line ...

但是如果 Maven 发现变量并正确解析它,上面引用的错误消息将包含已经解析的目录(不是占位符)。在 Ubuntu/Maven 3 上测试。

【讨论】:

感谢您的快速回复,我的系统路径配置与上述类似。但我现在认为的问题是环境变量没有得到解决。我有这样的: $env.BEA_HOME/lib/xyz.jar 并且我将 BEA_HOME 配置为环境变量。但仍然出现错误。如果有帮助,我正在开发 Windows 7 机器。 这一切都很好,除非您想使用类似 tools.jar 的东西,它位于 JDK/lib 目录下,而不是 JDK/jre/lib 下。因此,一方面,Maven 文档说“$java.home 指定当前 JRE_HOME 环境的路径,使用相对路径来获取例如:$java.home../bin/java。 exe”,另一方面,当您为系统路径执行此操作时,它会抱怨。当然,最好将 java.home 属性等同于环境变量,然后调用 JRE 子目录的路径,例如 $jre.home? 如果 $session.executionRootDirectory 等其他 maven 环境变量不起作用,请尝试使用 $project.basedir。【参考方案2】:

你能从 pom 中发布你的“依赖”元素吗?

猜测它的范围是“系统”并且其中有一个路径,并且该路径是一个 相对 路径(例如“../../someJar.jar”)而不是绝对路径(例如 /opt/someDir/someJar.jar)。

Maven 需要一个绝对路径。

附带说明一下,您可能希望考虑为非公共共享 jars 创建一个本地共享存储库,并避开“系统”范围。当构建在其他环境中完成时,系统范围可能会让您陷入困境。

【讨论】:

【参考方案3】:

我在尝试构建 arquillian-was-embedded-8 工件时遇到了类似的问题。我也在使用 Win 7 64 位。使用 Git,我在 NetBeans 中克隆了 Arquillian Embedded WAS 项目,但遇到了同样的错误。我在打开 NetBeans 时更改了我的操作系统环境变量。通常,您必须关闭所有 Windows 资源管理器窗口和命令提示符窗口才能使环境变量生效。我抓住机会也关闭了 NetBeans。再次打开 NetBeans 后,该项目解析了 $env.WAS8_HOME 变量。奇怪……但无论如何。

【讨论】:

以上是关于pom.xml 中的错误的主要内容,如果未能解决你的问题,请参考以下文章

eclipse中的Maven pom.xml错误[重复]

Spring Initializr 生成的 pom.xml 中的错误

pom.xml 中的错误,maven 问题

由于 pom.xml 中的错误,无法使用 Maven 运行构建

具有依赖关系的 pom.xml 中的错误(缺少工件...)

Eclipse (pom.xml) 中的 Maven 错误:传输 org.apache.maven.plugins:maven-surefire-plugin:pom:2.12.4 失败