【问题标题】:{project.parent.basedir} taking of path sub module rather than Parent module path{project.parent.basedir} 取路径子模块而不是父模块路径
【发布时间】:2018-03-30 22:02:26
【问题描述】:

我在项目中有以下结构

| prj
  | a1_module
     |src
     |pom
  | a2_module
     |src
     |pom     
  | lib 
     xyz.jar
  |pom(parent)

现在我在子模块(a1_module)pom 中注册 xyz.jar,如下所示:

 <dependency>
    <groupId>com.asd.prj</groupId>
    <artifactId>pubsub</artifactId>
    <version>1.0.0.</version>
    <scope>system</scope>
    <systemPath>${project.parent.basedir}/lib/pubsub_2.11-1.0.0-SNAPSHOTjar</systemPath>
</dependency>

我希望${project.parent.basedir}/lib/pubsub_2.11-1.0.0-SNAPSHOTjar 应该给我prj/lib/pubsub_2.11-1.0.0-SNAPSHOTjar,但它给了我这样的路径prj/a1_module/lib/pubsub_2.11-1.0.0-SNAPSHOTjar。

由于这种情况,我收到错误,因为子模块中没有保存 jar,但它保存在主项目的“lib”目录之外。

This question 说project.parent.basedir 应该给出该模块路径的父路径,但在我的情况下,它给了我子模块的路径而不是父模块路径。

任何关于我做错了什么或在子模块中注册我的本地 jar 的其他方法的建议。

【问题讨论】:

  • 删除系统范围依赖,不要使用这样的 lib 目录结构......它们在 Maven 中真的很糟糕。最好开始使用存储库管理器并将这个 jar 部署到存储库管理器中……然后像往常一样使用 jar 依赖项……(我假设 pubsub-1.0.0-SNAPSHOT.jar 是由另一个 Maven 构建创建的?)
  • 你是对的@khmarbaise。我将遵循存储库管理器的方式。这不是好方法。

标签: java maven maven-2 pom.xml parent-pom


【解决方案1】:

你可以用这个:

<systemPath>${basedir}/../lib/pubsub_2.11-1.0.0-SNAPSHOTjar</systemPath>

【讨论】:

  • 试过这个但还是同样的问题。
猜你喜欢
  • 2022-12-11
  • 1970-01-01
  • 2012-11-08
  • 1970-01-01
  • 2020-02-24
  • 2021-09-14
  • 2018-08-24
  • 2018-06-04
  • 2020-12-05
相关资源
最近更新 更多