maven-plugin 的 @Mojo 中的 Spring 注入

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

我正在尝试在我正在创建的自定义 Maven 插件中使用 Spring DI。

但是,当使用该插件时,我收到以下错误:

Unable to load the mojo 'cva2sch' (or one of its required components) from the plugin 'dge:preparation-maven-plugin:0.1.0-SNAPSHOT': com.google.inject.ProvisionException: Guice provision errors:
[ERROR]
[ERROR] 1) null returned by binding at org.eclipse.sisu.wire.LocatorWiring

虽然我有一个@Configuration(带有@ComponentScan)类和@Mojo类上的@Component,但我猜maven插件不使用Spring。 是否根本不可能在 @Mojo 中使用 Spring DI,或者是否需要一些特殊设置才能做到这一点?

spring dependency-injection maven-plugin
1个回答
0
投票

我知道这是一个老问题,但由于尚未得到解答,我会回复。

Maven和插件使用基于Google Guice的DI框架,称为Sisu。 要在 spring 和 Sisu 之间建立链接,有多种方法:

您可以创建 Spring 上下文和 beans,然后使用 JSR330 注释将它们自己注入到 Sisu 中(sisu 的一个很酷的事情是,它使用标准的 Jakarta 注释),

或者您使用以下插件/库之一来为您完成这项工作: Spring-Bridge-Maven-Plugin 在编译插件时完成所有这些工作。 Spring-Bridge-Maven-Library 在运行时执行此操作,但需要 Maven 扩展(您可以在 github 上查看文档)

© www.soinside.com 2019 - 2024. All rights reserved.