-f
Maven は、任意のファイルを指定できるオプションで呼び出すことができpom.xml
ます。
カスタム Maven プラグイン mojo 内から、Maven がこの方法で呼び出されたかpom.xml
、現在の作業ディレクトリからデフォルトを使用して呼び出されたかを判断することは可能ですか?
次のようなものを探しています:
this.project.isInvokedWithNonDefaultPom()
-f
Maven は、任意のファイルを指定できるオプションで呼び出すことができpom.xml
ます。
カスタム Maven プラグイン mojo 内から、Maven がこの方法で呼び出されたかpom.xml
、現在の作業ディレクトリからデフォルトを使用して呼び出されたかを判断することは可能ですか?
次のようなものを探しています:
this.project.isInvokedWithNonDefaultPom()
このオプションに関連する 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 を介して同じことを行う方法があるかもしれません
gerrytan の回答に加えて、MavenExecutionRequest
によってコマンドライン情報が取り込まれorg.apache.maven.cli.MavenCli
、を介してプラグイン Mojo 内で使用できるというオブジェクトがMavenSession.getRequest()
あります。
ただし、内部の次のコード スニペットがorg.apache.maven.cli.MavenCli
示すように-f
、MavenExecutionRequest
.
答えは次のとおりです。いいえ、Maven プラグイン mojo 内から、pom.xml がどのように指定されたかを知ることはできません。
private MavenExecutionRequest populateRequest( CliRequest cliRequest )
{
MavenExecutionRequest request = cliRequest.request;
.....
String alternatePomFile = null;
if ( commandLine.hasOption( CLIManager.ALTERNATE_POM_FILE ) )
{
alternatePomFile = commandLine.getOptionValue( CLIManager.ALTERNATE_POM_FILE );
}
.....
if ( alternatePomFile != null )
{
File pom = resolveFile( new File( alternatePomFile ), workingDirectory );
request.setPom( pom );
}
else
{
File pom = modelProcessor.locatePom( baseDirectory );
if ( pom.isFile() )
{
request.setPom( pom );
}
}
.....
}
バージョンはmaven-embedder 3.0.xです