如何检测maven插件是否在maven项目中执行?

时间:2016-03-29 18:00:53

标签: java maven maven-plugin

我想很好地认识maven插件是否从maven项目执行时的情况,因为当执行在maven项目之外时我需要不同的默认参数。

我可以将@Component MavenProject project注入插件Mojo,但是当没有pom.xml时,这会被设置为test:test:jar:1

我可以注入基础目录@Parameter(defaultValue = "${basedir}") File baseDir并检查pom.xml文件,但这闻起来(多语言maven不再有pom.xml)。

如何检查项目是否在maven项目内部或外部执行?

我有特定的目标,我希望在这两种情况下使用同样的目标。

2 个答案:

答案 0 :(得分:1)

重要的是,您明​​确决定哪个目标应仅从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总是... {我感兴趣的是你想​​要写什么样的插件?

答案 1 :(得分:1)

我觉得这个问题没有得到足够的回答。我的建议是:

@Component
private MavenSession mavenSession;

boolean insideMavenProject = mavenSession.getRequest().isProjectPresent()