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

Bil*_*l K 31 maven-2 build

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

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

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

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

我试着指定"../../ Eclipse ....",把它看起来似乎不起作用.

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

任何建议(除了重写整个混乱,我只是不知道maven还没有)?

Pas*_*ent 37

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

  • 如果<parent>pom不是使用<relativePath>元素直接在给定模块上方(参见本示例)
  • 如果模块没有嵌套(即如果使用平面布局),则使用各种<module>元素中的相对路径(如本例所示).

说了这么多,我不确定你的具体情况是什么,或者你在描述什么.

如果可能,您可能应该显示POM的相关部分.

  • 你说`事情是相对于包含pom.xml`的目录,但不应该是`事情是相对于包含正在构建的pom.xml的目录?',因为例如(也许我错了)如果你在父模块中的某个地方使用像`$ {project.basedir}`这样的变量,然后你构建了子模块,`$ {project.basedir}`就成了子目录,而不是父目录,所以变量用法实际上并不是父亲的pom.xml (4认同)

Thu*_*shy 13

理想情况下,它pom.xml应与目录位于同一目录中src.对于例如假设你已签出您的项目从SVN到一个文件夹C:/work/project,然后继续主要pom.xmlC:/work/project.src也应该在C:/work/project.

您的其他子项目应该在C:/work/subproject1,C:/work/subproject2等等每个子项目都有自己的子项目pom.xml.然后在主要的pom.xml你可以参考其他项目

<modules>      
    <module>../subproject1<module>
    <module>../subproject2<module>
</modules>
Run Code Online (Sandbox Code Playgroud)