Использование внешней зависимости в аннотации 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>