在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 中有更多的持久性单元,它们都需要相同的 类。当前 类 在所有持久性单元 "hardcoded" 中。如果我只能定义一次就更好了。
当然可以,将 //value in gradle.properties
替换为 project.'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')])
}
}
我可以在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 中有更多的持久性单元,它们都需要相同的 类。当前 类 在所有持久性单元 "hardcoded" 中。如果我只能定义一次就更好了。
当然可以,将 //value in gradle.properties
替换为 project.'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')])
}
}