Как запустить Maven из другого каталога (без cd для проекта dir)?
249
Предположим, что мой проект maven находится в /some/location/projectмоем текущем местоположении, и /another/location/как я могу запустить maven build, не переходя в местоположение проекта cd /some/location/project?
@khmarbaise - я пытаюсь автоматизировать сборку и развертывание, используя некоторые сценарии оболочки, и не всегда удобно использовать cd для изменения dir.
Али Шакиба
@khmarbaise - вы можете ссылаться на несколько файлов или папок в одном каталоге или рядом с ним, но ваш pom и файлы, на которые он ссылается, находятся в другом.
jyoungdev
Ответы:
433
Вы можете использовать параметр -fи указать путь к файлу POM, например,mvn -f /path/to/pom.xml
Это запускает Maven «как будто» /path/toдля рабочего каталога.
Нет, -f запускает Maven с этим конкретным pom, и по определению каталог, в котором находится pom, является рабочим каталогом для Maven. Я использую это на своем CI-сервере для сборки определенных модулей в подкаталогах, и я могу заверить вас, что это работает.
Данни
15
Используйте точку для относительных путей. напр../path/pom.xml
Снексе
3
Как говорит Данни, это не работает. Текущий каталог там, где вы находитесь. Ты просто используешь пом в другом режиссере. Maven не поддерживает это.
туман
1
java.lang.IllegalArgumentException: параметр 'directory' не является каталогом
Damir Olejar
Работает для большинства моих проектов. К сожалению, некоторые проекты, использующие плагин exec, не могут быть построены таким образом, потому что плагин не находит исполняемый файл, даже если рабочий каталог настроен.
user2043553
15
Я не думаю, что Maven поддерживает это. Если вы работаете в Unix и не хотите покидать текущий каталог, вы можете использовать небольшой сценарий оболочки, функцию оболочки или просто вспомогательную оболочку:
Я понимаю, что это не отвечает на конкретный вопрос, но может дать вам то, что вы ищете. Я не знаком с оболочкой Windows, хотя и там вы сможете найти аналогичное решение.
Превосходно. Параметр mvn -f не работает с многомодульными проектами, использующими относительный путь для ссылки на дочерние poms. Спасибо, это то, что я искал.
редочка
1
Получил это работает на Mac (и я знаю, что это будет работать на Linux). В Windows (или на любой платформе) вы должны быть в состоянии сохранить текущий путь, cd в ваш проект, выполнить там mvn и вернуться обратно в сценарий. Единственная проблема будет, если сценарий остановится на полпути.
Эрк
8
Для меня работает так: mvn -f /path/to/pom.xml [goals]
Ответы:
Вы можете использовать параметр
-f
и указать путь к файлу POM, например,mvn -f /path/to/pom.xml
Это запускает Maven «как будто»
/path/to
для рабочего каталога.источник
./path/pom.xml
Я не думаю, что Maven поддерживает это. Если вы работаете в Unix и не хотите покидать текущий каталог, вы можете использовать небольшой сценарий оболочки, функцию оболочки или просто вспомогательную оболочку:
В качестве функции bash (которую вы можете добавить в ~ / .bashrc):
Я понимаю, что это не отвечает на конкретный вопрос, но может дать вам то, что вы ищете. Я не знаком с оболочкой Windows, хотя и там вы сможете найти аналогичное решение.
С уважением
источник
Для меня работает так:
mvn -f /path/to/pom.xml [goals]
источник
Вы можете попробовать это:
источник