如何从另一个目录运行Maven(没有cd到项目目录)?

Ali*_*iba 225 maven

假设我的maven项目位于/some/location/project并且我当前的位置是/another/location/如何在不更改项目位置的情况下运行maven构建cd /some/location/project

dun*_*nni 394

您可以使用该参数-f并指定pom文件的路径,例如mvn -f /path/to/pom.xml

这运行maven"好像"它在/path/to工作目录中.

  • 不,-f用特定的pom启动Maven,根据定义,pom所在的目录是Maven的工作目录.我在我的CI-Server中使用它来在子目录中构建特定的模块,我可以向你保证它是有效的. (37认同)
  • 对相对路径使用点.例如`./ path/pom.xml` (13认同)
  • 正如邓尼所说,这不起作用.目前的目录就在你身边.你只是在另一个目录中使用pom.Maven不支持这一点. (3认同)
  • 适用于我的大多数项目。不幸的是,某些使用 exec 插件的项目无法以这种方式构建,因为即使配置了工作目录,插件也找不到可执行文件。 (3认同)

Kyl*_*ton 14

我不认为maven支持这个.如果您使用的是Unix,并且不想离开当前目录,则可以使用小型shell脚本,shell函数或仅使用子shell:

user@host ~/project$ (cd ~/some/location; mvn install)
[ ... mvn build ... ]
user@host ~/project$
Run Code Online (Sandbox Code Playgroud)

作为bash函数(可以添加到〜/ .bashrc中):

function mvn-there() {
  DIR="$1"
  shift
  (cd $DIR; mvn "$@")     
} 

user@host ~/project$ mvn-there ~/some/location install)
[ ... mvn build ... ]
user@host ~/project$
Run Code Online (Sandbox Code Playgroud)

我意识到这并没有回答具体问题,但可能会为您提供您所追求的内容.我不熟悉Windows shell,但你也应该能够在那里找到类似的解决方案.

问候

  • 优秀.mvn -f param不能与使用相对路径引用子poms的多模块项目一起使用.谢谢,这就是我在寻找的东西. (4认同)

小智 11

对我来说,这样工作: mvn -f /path/to/pom.xml [goals]