Могу ли я указать в Maven относительный путь над моим текущим проектом? - PullRequest
30 голосов
/ 30 января 2010

Я учу maven на лету, выполняя работу над проектом с большим набором проектов для сборки.

В настоящее время строка в основной сборке использует абсолютный путь для указания каталога, который является частью хранилища subversion, но «выше» его каталога.

как в: "C: / work / project / eclipse", где "project" - это проверенный каталог, а файл pom.xml находится в "C: /work/project/src/subproject/pom.xml".

Я бы хотел вместо этой строки сделать относительный адрес.

Я попытался указать "../../ Eclipse ....", но это не сработало.

Это также может быть связано с тем, что эта же переменная используется файлом pom подпроекта.

Какой-нибудь совет (кроме переписывания всего беспорядка, который я пока недостаточно знаю о maven)?

Ответы [ 2 ]

35 голосов
/ 30 января 2010

В Maven все равно относительно каталога, содержащего pom.xml (который представлен свойством ${basedir} и называется базовым каталогом).Однако в некоторых ситуациях вам может потребоваться указать относительный путь:

  • , если пометка <parent> не находится непосредственно над данным модулем с использованием элемента <relativePath> (см. в этом примере)
  • , если модули не являются вложенными (то есть, если вы используете плоский макет), используя относительный путь в различных элементах <module> (как в в этом примере ).

Учитывая все сказанное, я не уверен, что понимаю, в чем конкретно заключается ваша ситуация или что вы описываете.

Возможно, вам следует показать соответствующие части вашего POM, если это возможно.

13 голосов
/ 30 января 2010

В идеале 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>
...