java - 在gradle中定义变量填充persistence.xml中的数据

标签 java jpa gradle build.gradle persistence.xml

我可以在gradle中定义变量,这些变量填充在persistence.xml中的占位符中吗?

例子

gradle.properties:

dev.classes= <class>my.package.class</class>.....<class>my.package.class</class>

持久性.xml
<persistence>
   <persistence-unit name "a">
     <!--define a variable that will be overwritten by build.gradle-->
       ...
  </persistence-unit>
</persistence>

build.gradle
task replaceTokens {
  from(//persistence.xml path) {
     filter(ReplaceTokens, tokens: [//variable in xml, //value in gradle.properties])
   }
}

我需要它,因为我的 persistence.xml 中有更多的持久性单元,它们都需要相同的类。目前,这些类在所有持久性单元中都是“硬编码”的。如果我只能定义一次,那就更好了。

最佳答案

如果是我,我会把 xml 模板放在 src/template/resources 下。

src/模板/资源/persistence.xml

<persistence>
    <persistence-unit name="a">
        <provider>org.hibernate.ejb.HibernatePersistence</provider>
        <jta-data-source>java:/A</jta-data-source>
@persistence.classes@
    </persistence-unit>

    <persistence-unit name="b">
        <provider>org.hibernate.ejb.HibernatePersistence</provider>
        <jta-data-source>java:/B</jta-data-source>
@persistence.classes@
    </persistence-unit>
</persistence>

gradle.properties
persistence.classes=\
        <class>com.example.Foo</class>\
        <class>com.example.Bar</class>\
        ...

构建.gradle
apply plugin: 'java'
processResources {
    from 'src/template/resources', {
        filter(ReplaceTokens, tokens: ['persistence.classes': property('persistence.classes')])
    }
}

关于java - 在gradle中定义变量填充persistence.xml中的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47673895/

相关文章:

java - (更好的方法)使用 Eclipse 和 XText 在项目中获取文件

java - 为什么我的 ConstraintViolationException 没有被捕获?

android - 如何解决 Android Studio 2.2.3 中的 "unsupported class file version 52.0"错误

android - Cordova :执行任务 ':processDebugManifest'失败。添加共享插件后

java - Spring Profile 包含 yaml 文件的问题

java - 潮人。二级缓存。实体未找到异常

java - 测试使用 JPA 实现的 DAO 类

android - 没有可用于离线模式的缓存版本

java - 为什么在接口(interface)中声明方法时会出现 "VariableDeclaratorId expected"?

maven - 如何创建 Java EE 7 Maven IntelliJ 项目