Java MavenSession未填充

Java MavenSession未填充,java,maven,maven-plugin,Java,Maven,Maven Plugin,我正在尝试创建我的第一个Maven插件,为此我需要在Mojos中访问MavenSession。我在许多地方发现,下面的代码片段应该足够了,但我总是以mavenSession对象为null结束,尽管在Maven日志(使用我的插件的POM.xml)中,似乎Maven会话已经传递,或者至少已经填充了,但没有注入到mavenSession对象中 谁能告诉我我错过了什么 谢谢 我还将以下内容添加到插件的POM.xml中(基于我在某处找到的评论): org.apache.maven 马文堆芯 3.2.5

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

谁能告诉我我错过了什么

谢谢


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


org.apache.maven
马文堆芯
3.2.5
这是日志中的内容:

[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

遗漏的参数注释:

@Parameter(defaultValue = "${session}")
private MavenSession session;

Maven在引擎盖下使用
plexus
将Maven项目/
pom.xml
中的组件/元素注入插件项目,因此必须确保包含相关的依赖项

下面是一个完整的依赖项列表,您可以将其包含到
pom.xml
中,以便将所有必要的依赖项过渡到项目中

而且更喜欢。你可以得到一个完整的图片插件工具涉及阅读


3.3
org.apache.maven.plugin-tools
maven插件工具api
${pluginTools.version}
org.apache.maven.plugin-tools
maven插件注释
${pluginTools.version}
假如

您似乎引用了两个字段:在您的代码中,您将此字段称为
mavenSession
,但在查看Maven的输出时,它指的是
会话。看起来你在质疑一个没有正确注入
MavenSession

的问题。多亏了这里的回答,我最终发现了问题:

我试图从execute()方法调用的方法访问mavenSession和mavenProject。我假设一旦注入,这些成员在我的Mojo范围内的任何地方都可以访问和填充,这是错误的。我将代码移到execute()方法中,问题就解决了


谢谢大家

谢谢,Hersh-我尝试了你的建议,但我仍然将(MavenSession)会话设置为空。@Hersh,不,OP没有错过参数注释,他/她使用了,虽然不推荐,但仍然有效。你是说(单元-)测试时间还是关于运行时?@robertschlote-我想你会称之为运行时-我试图从另一个/单独的Maven项目中调用此插件。它在哪里
null
?就在
execute
方法的开头?其他属性呢?他们注射好吗?你能展示你的完整pom吗?表达:
Maven使用pluxus
不再正确,因为Maven 3.0在引擎盖下使用guice。但它有兼容层(sisu)来支持旧插件(请参阅)。我实际上定义了session和mavenSession,一次是通过@Parameter注入的,另一次是通过JavaDoc标记注入的,但都是空的。无论如何,问题现在已经解决了(正如我在自己的回答中所补充的)。
@Parameter(defaultValue = "${session}")
private MavenSession session;
<properties>
  <pluginTools.version>3.3</pluginTools.version> <!-- be sure to use the latest version in here -->
</properties>

<dependency>
  <groupId>org.apache.maven.plugin-tools</groupId>
  <artifactId>maven-plugin-tools-api</artifactId>
  <version>${pluginTools.version}</version>
</dependency>

<dependency>
  <groupId>org.apache.maven.plugin-tools</groupId>
  <artifactId>maven-plugin-annotations</artifactId>
  <version>${pluginTools.version}</version>
  <scope>provided</scope>
</dependency>