【问题标题】:Maven - Best way to refer to a directory on the system pathMaven - 引用系统路径上目录的最佳方式
【发布时间】:2011-05-12 17:28:57
【问题描述】:

我正在尝试从我的 Maven 项目构建一个 RPM。我有 5 个不同的模块,每个模块都有自己的 pom.xml,在根目录中我有一个 pom.xml,它构建所有模块(典型的 Maven 设置)。当我构建 RPM 时,我想包含一个不属于 maven 目录的目录。它在一个目录上方[来自包含我的 Maven 模块的根文件夹]。将其包含在我的 RPM 中的最佳方式是什么?或者更确切地说,在不硬编码路径的情况下引用目录的最佳方法是什么?我对 ${baseDir} 及其所指的内容感到困惑?

谢谢。

【问题讨论】:

    标签: maven-2 ant maven maven-plugin


    【解决方案1】:

    ${project.basedir}指的是项目的根,即pom.xml所在的位置,所以你可以在<systemPath>${project.baseDir}/../../dirYouWant</systemPath>中使用它

    不过,一般而言,Maven 最佳实践会因依赖项目周围的相对路径而皱眉。相反,我建议将这些文件作为自己的项目部署到您的 maven 存储库(作为 zip、jar 等),然后将它们作为 rpm 构建的一部分。根据您用于构建 RPM 的插件,您可以自动解压缩这些文件。

    【讨论】:

      【解决方案2】:

      试试这个

      <dependency>
      ...groupid,artifactid etc..
      <scope>system</scope>
      <systemPath>path/to/your/jar</systemPath>
      </dependency>
      

      你的意思是你想在你的 Maven 构建中添加另一个项目吗?

      你可以这样做:

      在你的父 pom 中:

         <modules>
              <module>../projectdirectory</module>
            </modules>
      

      在你的项目目录 pom 中:

      <parent>
              <groupId>...</groupId>
              <artifactId>...parent...</artifactId>
              <version>...</version>
              <relativePath>../parentProject/pom.xml</relativePath>
          </parent>
      

      【讨论】:

      • 它不是罐子。它是一个目录。另外,您提到的系统路径更像是硬编码路径。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-08-10
      • 1970-01-01
      • 2011-11-12
      • 2011-05-02
      • 2021-09-07
      • 2011-05-10
      • 1970-01-01
      相关资源
      最近更新 更多