我正在尝试创建我的第一个Maven插件,为此,我需要在Mojos中访问MavenSession。我在很多地方都发现下面的代码片段就足够了,但是我总是以mavenSession对象为空,尽管在Maven日志(使用我的插件的POM.xml)中,似乎已经传递了maven session ,或者至少已填充-但不会注入(inject)到MavenSession对象中。

谁能告诉我我想念的东西吗?

谢谢!

/**
 * The Maven Session
 *
 * @required
 * @readonly
 * @parameter
 * expression="${session}"
 */
private MavenSession mavenSession;

我还将以下内容添加到了插件的POM.xml中(基于我在某处找到的评论):

<dependency>
    <groupId>org.apache.maven</groupId>
    <artifactId>maven-core</artifactId>
    <version>3.2.5</version>
</dependency>

并且来自日志:
[DEBUG] Configuring mojo 'com.ofernicus.helpers:resource-helper:1.0-SNAPSHOT:iterate' with basic configurator -->
[DEBUG]   (f) session = org.apache.maven.execution.MavenSession@1a785a79
[DEBUG]   (f) mavenProject = MavenProject: com.ofernicus.consumers:resource-helper-consumer:1.0-SNAPSHOT @ C:\Users\oferlan\workspaces\Maven\PluginConsumer\resource-helper-consumer\pom.xml

最佳答案

多亏了这里的回复,我终于找到了问题所在:

我正在尝试从execute()方法中名为的方法访问mavenSession和mavenProject。我以为一旦注入(inject),这些成员就可以在我的Mojo范围内的任何地方访问和填充-这是错误的。我将代码本身移到了execute()方法中,此问题已解决。

谢谢大家!

10-06 07:08