Quarkus проверяет точку внедрения bean-компонента на этапе пакета maven, вызывая неудовлетворенную зависимость для типаJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Quarkus проверяет точку внедрения bean-компонента на этапе пакета maven, вызывая неудовлетворенную зависимость для типа

Сообщение Anonymous »

Я разрабатываю расширение, которое предоставляет Injectable bean-компонент с Synthetic BeanBuilt Item.Этот bean-компонент используется посредством внедрения конструктора в другом проекте, использующем это расширение.

Код: Выделить всё

/**
* Bean to inject
*/
@ApplicationScoped
public class FooConfig {

private String url;
private String port;

// Only for CDI injection
@SuppressWarnings("unused")
private FooConfig() {}

public FooConfig(String url, String port) {
this.url = url;
this.port = port;
}

public String getUrl() {
return url;
}

public void setUrl(String url) {
this.url = url;
}

public String getPort() {
return port;
}

public void setPort(String port) {
this.port = port;
}
}

Код: Выделить всё

@Path("")
public class Foo {

private final FooService fooService;
private final FooConfig fooConfig;

public Foo(FooService fooService, FooConfig fooConfig) {
this.fooService = fooService;
this.myConfig = fooConfig;
}

@CheckedTemplate
public static class Templates {
public static native TemplateInstance index();
public static native TemplateInstance list(Uni bars, FooConfig fooConfig);
}

@GET
@Produces(MediaType.TEXT_HTML)
public TemplateInstance list() {
return Templates.list(fooService.fetchAsync(), this.fooConfig);
}
}
А вот код расширения, предоставляющий компонент FooConfig:

Код: Выделить всё

@Record(ExecutionTime.RUNTIME_INIT)
@BuildStep
public void createConfigBean(List devServicesResultBuildItem, FooRecorder recorder, BuildProducer syntheticBeanBuildItemBuildProducer) {
// Retrieve config set Inside FooExtensionProcessor
String apiUrl = devServicesResultBuildItem.stream().filter(devService -> devService.getName().equals(FooServiceContainer.CONTAINER_NAME))
.findFirst()
.orElseThrow(() -> new IllegalStateException("Can't find foo-service url"))
.getConfig().get("url");
syntheticBeanBuildItemBuildProducer.produce(SyntheticBeanBuildItem.configure(FooConfig.class)
.unremovable()
.setRuntimeInit()
.runtimeValue(recorder.createConfig("http://"+apiUrl))
.done());
}
И диктофон:

Код: Выделить всё

@Recorder
public class FooServiceRecorder {

public RuntimeValue createConfig(String url) {
return new RuntimeValue(new FooConfig(url, url.split(":")[1]));
}
}
Если я запускаю Quarkus dev внутри проекта, все работает как положено. Боб правильно найден и введен. Если я запускаю компиляцию mvn из родительского проекта, снова все в порядке.
Но если я запускаю пакет mvn, плагин Quarkus maven проверяет наличие bean-компонента доступности, поэтому я получил эту ошибку:

Код: Выделить всё

Suppressed: jakarta.enterprise.inject.UnsatisfiedResolutionException: Unsatisfied dependency for type org.baz.foo.extension.runtime.FooConfig and qualifiers [@Default]
Для меня плагин Quarkus не должен либо пытаться проверять внедрение на этапе пакета, либо учитывать создание bean-компонентов с помощью SyntheticBeanBuildItem.
Я что-то пропустил , или это ошибка в плагине?

Подробнее здесь: https://stackoverflow.com/questions/786 ... ing-unsati
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»