【问题标题】:In Maven, can I specify a relative path above my current project?在 Maven 中,我可以在当前项目上方指定相对路径吗?
【发布时间】:2011-01-11 01:30:06
【问题描述】:

我在处理一个需要构建大量项目的项目时,正在快速学习 maven。

当前主构建中的一行使用绝对路径来指定一个目录,该目录是 subversion 存储库的一部分,但“高于”它的目录。

如:“C:/work/project/eclipse”,其中“project”是签入目录,pom.xml 在“C:/work/project/src/subproject/pom.xml”中

我想将该行改为相对地址。

我尝试指定“../../Eclipse....”,但似乎不起作用。

也可能是因为子项目的 pom 文件正在使用相同的变量。

任何建议(除了重写整个混乱,我对 maven 的了解还不够多)?

【问题讨论】:

    标签: maven-2 build


    【解决方案1】:

    对于 Maven,事物相对于包含 pom.xml 的目录(由 ${basedir} 属性表示,称为基本目录)。然而,在某些情况下,您可能必须指定相对路径:

    • 如果<parent> pom 不直接位于使用<relativePath> 元素的给定模块上方(请参阅this example
    • 如果模块没有嵌套(即,如果您使用平面布局),则在各种 <module> 元素中使用相对路径(如在 this example 中)。

    说了这么多,我不确定你的情况到底是什么或你在描述什么。

    如果可能的话,也许你应该展示你的 POM 的相关部分。

    【讨论】:

    • 你说things are relative to the directory containing the pom.xml,但不应该是things are relative to the directory containing the pom.xml being built吗?因为例如(也许我错了)如果你在父模块的某个地方使用像${project.basedir}这样的变量然后您构建子模块,${project.basedir} 成为子目录,而不是父目录,因此变量的使用实际上与父的 pom.xml 无关
    • 我可以将变量传递给<relativePath> 吗?例如:<relativePath>${parentPath}</relativePath>where 我的parentPath 变量是在properties 标签内定义的?
    • @JaimeHablutzel 你能提供一个答案吗?
    • ../my-module
    【解决方案2】:

    理想情况下,pom.xml 应与您的 src 目录位于同一目录中。例如,假设您已将项目从 svn 检出到文件夹 C:/work/project,然后将主 pom.xml 保留在 C:/work/project 中。 src 也应该在 C:/work/project 中。

    您的其他子项目应位于C:/work/subproject1C:/work/subproject2 等,每个子项目都有自己的pom.xml。然后在主pom.xml可以参考其他项目中的

    <modules>      
        <module>../subproject1<module>
        <module>../subproject2<module>
    </modules>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-03-21
      • 1970-01-01
      • 1970-01-01
      • 2017-06-03
      • 2015-04-30
      • 2010-10-20
      • 1970-01-01
      • 2018-11-18
      相关资源
      最近更新 更多