Guice 依赖注入在 Maven 插件中不起作用

问题描述 投票:0回答:2

我正在使用

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 maven-plugin
2个回答
3
投票

我切换到maven 3.2.1,依赖注入按预期工作。


0
投票

这是一个旧的问题和答案,所以我会给出更新的问题和答案。

正如您在评论中所述,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>
© www.soinside.com 2019 - 2024. All rights reserved.