【问题标题】:Using external dependency in Java bean annotation在 Java bean 注解中使用外部依赖
【发布时间】:2020-09-04 10:38:22
【问题描述】:

假设我想使用 opencsv。我在external-dependencies.xml 中添加了依赖项,要求通过说usemaven='true' 下载依赖项。 jar文件被下载并存储在扩展的lib文件夹中

现在如果我想使用这个依赖来生成包含注释示例的 Java bean。

<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;

}

【问题讨论】:

    标签: hybris sap-commerce-cloud


    【解决方案1】:

    从问题本身看来,问题不在于库依赖关系,而在于 bean XML 定义。 此外,用这样的注释定义 bean 也是不可读的。最好直接添加为Java类。

    【讨论】:

      【解决方案2】:

      有一种方法可以在构建类路径中插入依赖项。我们可以为此使用buildcallbacks.xml。我所做的是将外部依赖项移至platform/core/lib,因为我希望它在生成模型类期间可用。

      代码 sn-ps:

      <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>
      

      【讨论】:

      • 对我来说 _before_build 不起作用。我不得不使用_after_clean
      猜你喜欢
      • 2011-09-15
      • 2014-06-28
      • 1970-01-01
      • 2011-11-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多