maven dependency.systemPath必须指定绝对路径

时间:2014-02-04 08:27:48

标签: maven

我用maven

得到以下错误
[WARNING] The POM for com.something:dependency_module:jar:103 is invalid, transitive dependencies (if any) will not be available: 2 problems were encountered while building the effective model for something:dependency_module:103  
[ERROR] 'dependencies.dependency.systemPath' for org.jacorb:jacorb:jar must specify an absolute path but is ${jacorb2.3.1.home}/lib/jacorb.jar @  
[ERROR] 'dependencyManagement.dependencies.dependency.systemPath' for org.jacorb:jacorb:jar must specify an absolute path but is ${jacorb2.3.1.home}/lib/jacorb.jar @

问题似乎是$ {jacorb2.3.1.home}未解决。但是变量实际上是在settings.xml中设置的。

<profile>
    <id>jacorb2.3.1</id>
    <properties>
         <jacorb2.3.1.home>C:\apps\jacorb-2.3.1\</jacorb2.3.1.home>
    </properties>
</profile>

事实上,项目实际编译得很好。它似乎只在读取依赖模块的POM时抛出此错误。

请帮助我理解为什么会这样,以及如何解决它。

(注意:在依赖模块POM中添加属性似乎可以解决此问题,但我不想在项目设置中硬编码路径)

2 个答案:

答案 0 :(得分:2)

通常你只使用systemPath来处理javahome中的工具jar。

为了支持位置透明性和可重复的构建,systemPath中的任何内容都是非常本地的。

通常我会在共享本地存储库(nexus或ar​​tifactory)中添加第三方库,或者只使用mvn install:install在本地安装它们(可能创建一个shell脚本,以便其他人可以在其构建中执行相同操作)。毋庸置疑,第一个是最可持续的解决方案。

http://maven.apache.org/guides/mini/guide-3rd-party-jars-local.html

答案 1 :(得分:1)

JacORB现在的版本是3.4。我建议使用它,因为它有更好的Maven支持。有关JacORB的问题可以在邮件列表http://www.jacorb.org/contact.html

上查询