可以使用-f
选项调用Maven,允许您指定任意pom.xml
文件。
在自定义Maven插件mojo中,是否可以确定是以这种方式调用Maven还是使用当前工作目录中的默认pom.xml
?
我正在寻找以下内容:
this.project.isInvokedWithNonDefaultPom()
答案 0 :(得分:1)
与此选项相关的Maven源代码为:
./maven-embedder/src/main/java/org/apache/maven/cli/CLIManager.java
./maven-embedder/src/main/java/org/apache/maven/cli/MavenCli.java
(寻找关键字ALTERNATE_POM_FILE)
源代码可以通过git获得:
git clone https://git-wip-us.apache.org/repos/asf/maven.git
代码的一部分使用以下
if (commandLine.hasOption(CLIManager.ALTERNATE_POM_FILE))
之前没试过,但也许有一种方法可以通过插件Mojo做同样的事情
答案 1 :(得分:0)
除了gerrytan的答案之外,还有一个名为MavenExecutionRequest
的对象,其中org.apache.maven.cli.MavenCli
填充了命令行信息,而 在插件Mojo中可用,通过{{ 1}}。
但是,正如MavenSession.getRequest()
内部的以下代码段所示,使用“org.apache.maven.cli.MavenCli
”调用的事实将丢失,因为Pom文件在填充{的过程中完全解析{1}}。
所以答案是:不,不可能从Maven插件mojo中知道如何指定pom.xml。
-f
版本是maven-embedder 3.0.x