我想很好地认识maven插件是否从maven项目执行时的情况,因为当执行在maven项目之外时我需要不同的默认参数。
我可以将@Component MavenProject project
注入插件Mojo,但是当没有pom.xml时,这会被设置为test:test:jar:1
。
我可以注入基础目录@Parameter(defaultValue = "${basedir}") File baseDir
并检查pom.xml
文件,但这闻起来(多语言maven不再有pom.xml)。
如何检查项目是否在maven项目内部或外部执行?
我有特定的目标,我希望在这两种情况下使用同样的目标。
答案 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()