在 Maven 中,我可以在当前项目上方指定相对路径吗?
Posted
技术标签:
【中文标题】在 Maven 中,我可以在当前项目上方指定相对路径吗?【英文标题】:In Maven, can I specify a relative path above my current project? 【发布时间】: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 的了解还不够多)?
【问题讨论】:
【参考方案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 你能提供一个答案吗?
理想情况下,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>
【讨论】:
以上是关于在 Maven 中,我可以在当前项目上方指定相对路径吗?的主要内容,如果未能解决你的问题,请参考以下文章