在Maven中,我可以指定当前项目之上的相对路径吗?

时间:2010-01-29 22:35:54

标签: maven-2 build

我正在学习maven,同时在一个有大量项目要构建的项目上工作。

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

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

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

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

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

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

2 个答案:

答案 0 :(得分:32)

使用Maven,相对于包含pom.xml 的目录(由${basedir}属性表示,并称为基本目录)。但是,在某些情况下您可能需要指定相对路径:

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

尽管如此,我不确定你的具体情况是什么,或者你在描述什么。

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

答案 1 :(得分:13)

理想情况下,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>