maven`-f`和`-pl`参数之间的主要区别是什么?

时间:2017-08-23 16:58:45

标签: maven

执行mvn test -f file-directorymvn test -pl project时。 两者的内部执行有什么区别?

1 个答案:

答案 0 :(得分:8)

来自mvn -help

 -f,--file <arg>                        Force the use of an alternate POM
                                        file.

 -pl,--projects <arg>                   Comma-delimited list of specified
                                        reactor projects to build instead
                                        of all projects. A project can be
                                        specified by [groupId]:artifactId
                                        or by its relative path.

示例用法:

  • -f
    • 如果要构建Maven项目,但是从包含该项目的pom.xml的目录以外的目录运行Maven。
    • 如果(出于某种原因)您的POM文件未命名为pom.xml
  • -pl
    • 如果您想构建一个专注于父项目子模块的子集的Maven构建
    • 如果要从上一次构建失败的时间点恢复多模块Maven构建

鉴于此项目结构...

+- tools
| |
| +- build
| |
+- projects
| |
| +- parent
|    |
|    +- pom.xml
|  
| +- childA
|    |
|    +- pom.xml
| +- childB
|    |
|    +- pom.xml

你可以......

  • 使用parenttools/build目录构建-f项目,例如
    • cd tools/build; mvn -f ../../projects/parent/pom.xml
  • 使用tools/build-f来构建-pl目录中的childA子模块,例如
    • cd tools/build; mvn -f ../../projects/parent/pom.xml -pl parent:childA
  • 使用parent仅构建-pl目录中的childB子模块,例如
    • cd projects/parent; mvn -pl parent:childB