【问题标题】:maven dependency.systemPath must specify an absolute pathmaven dependency.systemPath 必须指定绝对路径
【发布时间】:2014-02-28 02:52:44
【问题描述】:

maven 出现以下错误

[警告] com.something:dependency_module:jar:103 的 POM 无效,传递依赖项(如果有)将不可用:在为某事构建有效模型时遇到 2 个问题:dependency_module:103
[错误] org.jacorb:jacorb:jar 的 'dependencies.dependency.systemPath' 必须指定绝对路径,但 ${jacorb2.3.1.home}/lib/jacorb.jar @
[错误] org.jacorb:jacorb:jar 的 'dependencyManagement.dependencies.dependency.systemPath' 必须指定绝对路径,但为 ${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 中添加属性似乎可以解决此问题,但我不想在项目设置中硬编码路径)

【问题讨论】:

    标签: maven


    【解决方案1】:

    通常您只将 systemPath 用于 javahome 中的工具 jar 之类的东西。

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

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

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

    【讨论】:

    • 另外,mvn help:active-profiles、help:effective-settings 和 help:effective-pom 非常适合调试
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-01-14
      • 2016-03-16
      • 2016-09-29
      • 2022-12-15
      • 2020-03-06
      • 2018-02-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多