如何检测maven插件在maven项目中执行?
Howto detect that maven plugin is executed inside maven project?
我想很好地识别 maven 插件是否从 maven 项目执行的情况,因为在 maven 项目之外执行时我需要不同的默认参数。
我可以将 @Component MavenProject project
注入到插件 Mojo 中,但是当没有 pom.xml.
时,它被设置为 test:test:jar:1
我可以注入基本目录 @Parameter(defaultValue = "${basedir}") File baseDir
并检查 pom.xml
文件,但这有异味(使用 polyglot maven 就没有 pom.xml 了)。
如何判断项目是在maven项目内执行还是在项目外执行?
我有特定的目标,我想在两种情况下都使用相同的目标。
重要的是你清楚地决定哪些目标应该只从 CLI 使用,哪些应该在 pom 文件中使用...基本的决定可以通过使用以下内容来做出:
@Mojo( name = "xxxx", requiresProject = true,... )
所以 requiresProject
意味着你需要有一个 pom.xml
这意味着不能通过 CLI 调用。
如果省略此选项,您将有机会使用 CLI 中的目标。所以最好使用一个旨在从 CLI 调用的目标和另一个旨在从 pom.xml ..
调用的目标
此外,要注入 MavenProject,您应该这样做:
@Parameter( defaultValue = "${project}", required=true, readonly=true)
private MavenProject project;
因为 MavenProject 不是 @Component
。除此之外,我总是不了解您关于 test:test:jar:1
的信息...我感兴趣的是您要编写哪种插件?
我觉得这个问题回答得还不够。我的建议是:
@Component
private MavenSession mavenSession;
boolean insideMavenProject = mavenSession.getRequest().isProjectPresent()
我想很好地识别 maven 插件是否从 maven 项目执行的情况,因为在 maven 项目之外执行时我需要不同的默认参数。
我可以将 @Component MavenProject project
注入到插件 Mojo 中,但是当没有 pom.xml.
test:test:jar:1
我可以注入基本目录 @Parameter(defaultValue = "${basedir}") File baseDir
并检查 pom.xml
文件,但这有异味(使用 polyglot maven 就没有 pom.xml 了)。
如何判断项目是在maven项目内执行还是在项目外执行?
我有特定的目标,我想在两种情况下都使用相同的目标。
重要的是你清楚地决定哪些目标应该只从 CLI 使用,哪些应该在 pom 文件中使用...基本的决定可以通过使用以下内容来做出:
@Mojo( name = "xxxx", requiresProject = true,... )
所以 requiresProject
意味着你需要有一个 pom.xml
这意味着不能通过 CLI 调用。
如果省略此选项,您将有机会使用 CLI 中的目标。所以最好使用一个旨在从 CLI 调用的目标和另一个旨在从 pom.xml ..
调用的目标此外,要注入 MavenProject,您应该这样做:
@Parameter( defaultValue = "${project}", required=true, readonly=true)
private MavenProject project;
因为 MavenProject 不是 @Component
。除此之外,我总是不了解您关于 test:test:jar:1
的信息...我感兴趣的是您要编写哪种插件?
我觉得这个问题回答得还不够。我的建议是:
@Component
private MavenSession mavenSession;
boolean insideMavenProject = mavenSession.getRequest().isProjectPresent()