Использование внешней зависимости в аннотации Java bean

Допустим, я хочу использовать opencsv. Я добавил зависимость вexternal-dependencies.xmlпопросили загрузить зависимость, сказав usemaven='true'. Файл jar загружается и сохраняется в папке lib расширения.

Теперь, если я хочу использовать эту зависимость для создания Java-бина, который содержит пример аннотации.

<bean class="com.something.dto.IndirectSaleData">
    <import type="com.opencsv.bean.CsvBindByName"/>
    <property name="firstName" type="java.lang.String">
        <annotations>@CsvBindByName(column = "first_name", required = true)</annotations>
    </property>
</bean>

Почему не удается разрешить зависимость?

С другой стороны, если я напрямую создаю класс Java, он отлично работает, например -

import com.opencsv.bean.CsvBindByName;
public class Data {

    @CsvBindByName(column = "first_name", required = true)
    private String name;

}

2 ответа

Из самого вопроса кажется, что проблема не в зависимости библиотеки, а в определении XML bean-компонента. Также непонятно определять bean-компоненты с такими аннотациями. Лучше добавить его напрямую как класс Java.

Есть способ подключить зависимость в пути к классу сборки. Мы можем использоватьbuildcallbacks.xmlдля этого. Я переместил внешнюю зависимость наplatform/core/lib поскольку я хочу, чтобы он был доступен во время генерации классов модели.

фрагменты кода:

<macrodef name="yourExtensionName_before_build">
    <sequential>
        <echo message="Copy external jar to platform core"/>
        <!-- Copy the jar from your extension lib folder to platform core -->
        <copy file="${ext.yourExtensionName.path}/lib/your-dependency.jar"
              todir="${platformhome}/ext/core/lib" failonerror="true"/>
    </sequential>
</macrodef>
Другие вопросы по тегам