簡體   English   中英

在gradle中定義變量以在persistence.xml中填充數據

[英]Define variables in gradle to fill data in persistence.xml

我可以在gradle中定義變量,這些變量在persistence.xml中占位符嗎?

gradle.properties:

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

persistence.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中有更多的持久性單元,它們都需要相同的類。 當前,這些類在所有持久性單元中都是“硬編碼的”。 如果我只能定義一次,那就更好了。

當然可以,將//value in gradle.properties//value in gradle.propertiesproject.'dev.classes' ,或者如果您的屬性不包含點,則dev_classes也可以。

如果是我,我會將xml模板放在src/template/resources

src / template / resources / 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>\
        ...

build.gradle

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM