我正在使用
sisu-maven-plugin
为我正在编写的 Maven 插件生成配置文件。 我检查了它在我的 Maven 插件 jar 的 META-INF 文件夹中创建的 javax.inject.Named
文件,该文件包含我用 @Named
和 @Singleton
(每个组件上的两个注释)注释的所有类。 。 这些类是配置文件中列出的唯一内容。 然后,我在 mojo 中使用 @Inject
注释注释了一个构造函数。 当我尝试在小型测试应用程序中使用我的插件时,我收到一个 guice 错误,提示“无法找到合适的构造函数”。
我尝试下载http://svn.apache.org/viewvc/maven/core-integration-testing/trunk/core-it-suite/src/test/resources/mng-5382/提供的示例插件,但是我收到了同样的错误。 所以我的问题是:有没有人成功地在 Maven 插件中使用 guice 依赖注入? 如果是这样,你需要做什么?
另外,我使用的是maven 3.0.3。
我切换到maven 3.2.1,依赖注入按预期工作。
这是一个旧的问题和答案,所以我会给出更新的问题和答案。
正如您在评论中所述,maven 现在可以利用标准 JSR330 注释,而不是 plexus 特定注释。请参阅文档此处
同样从插件依赖项中的 maven-core 3.9.x 版本开始,您不再需要在 pom.xml 中显式定义
sisu-maven-plugin
。
您可以使用来自 sisu 的 APT 处理器。将 maven-core
添加为插件的依赖项,或者仅添加 org.eclipse.sisu.inject
。警告: 从 maven 3.9.8 版本(sisu 版本 0.9.0.M3)开始,默认禁用此 APT 处理器的使用。 在编译过程中明确定义它,如下所示:
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.13.0</version>
<configuration>
<annotationProcessors>
<annotationProcessor>org.eclipse.sisu.space.SisuIndexAPT6</annotationProcessor>
</annotationProcessors>
</configuration>