2011-07-01 52 views
5

我正在一个错误如下:误差在pom.xml中

对于依赖依赖 {的groupId = WebLogic中, 的artifactId = web服务,版本= 9.2Hz, 类型=罐子}:系统 - 范围依赖 必须指定一个绝对路径系统 路径

不知道什么是错的。我已经配置环境变量。我正在使用的pom.xml

回答

11

当使用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上测试。

+0

感谢您的快速回复,我的系统路径配置与上面类似。但我现在认为的问题是,不知何故,环境可变是无法解决的。我有这样的:$ {env.BEA_HOME} /lib/xyz.jar,并且我将BEA_HOME配置为一个环境变量。但仍然出现错误。如果有帮助,我正在开发一个Windows 7的包装盒。 – sab

+0

看我的编辑,也许它会帮助你。 –

+3

这一切都很好,除非你想使用类似于JDK/lib目录下的tools.jar而不是JDK/jre/lib的东西。因此,一方面,Maven文档中提到“$ {java.home}指定当前JRE_HOME环境使用相对路径的路径,例如: $ {java.home} ../ bin/java.exe“,另一方面,当你为系统路径做这件事时,它会抱怨。当然,最好将java.home属性等同于环境变量,然后调用类似$ {jre.home}的JRE子目录的路径。 – RCross

1

你可以发布你的'Dependency'元素吗?

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

Maven需要一个绝对路径。

请注意,您可能想要为非公共共享罐创建本地共享存储库并转向远离“系统”范围。当在其他环境中完成构建时,系统范围可能会让你后退。

0

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