2017-12-06 21 views
0

変数をgradleで定義することができます。これはpersistence.xmlのプレースホルダを埋めますか?persistence.xmlのデータを埋めるためにgradleの変数を定義する

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には、すべて同じクラスが必要なpersistence-unitsがあるため、必要です。現在のところ、クラスはすべての永続性ユニット「ハードコード化」されています。私がそれを一度だけ定義することができれば、それはより良いでしょう。

答えて

0

することは、私は

のsrc /テンプレート/リソース/ persistence.xmlの

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

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

src/template/resources

下XMLテンプレートを置くところgradle.properties

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

ビルド。グラデル

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

確かに//value in gradle.propertiesproject.'dev.classes'で置き換えることもできます。また、プロパティにドットが含まれていない場合は、単にdev_classesでもかまいません。それは私だったら

関連する問題