在自定义Maven插件中,是否可以知道是否使用'-f'调用了Maven?

时间:2013-06-25 00:24:28

标签: java maven maven-plugin

可以使用-f选项调用Maven,允许您指定任意pom.xml文件。

在自定义Maven插件mojo中,是否可以确定是以这种方式调用Maven还是使用当前工作目录中的默认pom.xml

我正在寻找以下内容:

this.project.isInvokedWithNonDefaultPom()

2 个答案:

答案 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