我正在学习maven,同时在一个有大量项目要构建的项目上工作。
目前,主构建中的一行使用绝对路径来指定一个目录,该目录是subversion存储库的一部分,但在其目录的“上方”。
如:“C:/ work / project / eclipse”,其中“project”是签入目录,pom.xml位于“C:/work/project/src/subproject/pom.xml”
我想将该行改为相对地址。
我尝试指定“../../ Eclipse ....”,认为这似乎不起作用。
也可能是因为子子项目的pom文件正在使用相同的变量。
任何建议(除了重写整个混乱,我对maven还不够了解)?
答案 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/subproject1
,C:/work/subproject2
等等,每个子项目都有自己的pom.xml
。然后在主pom.xml
中,您可以参考
<modules>
<module>../subproject1<module>
<module>../subproject2<module>
</modules>