gradle - 如何使用Gradle build替换xml的内容或关键字(如applicationContext.xml)?

标签 gradle replace ant build.gradle applicationcontext

我的应用程序具有applicationContext.xml,其中EntityManagerFactory bean定义为:

<bean id="entityManagerFactory"
class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="packagesToScan" value="org.xyz" />
**<property name="dataSource" ref="poolDVLDataSource" />**  
<!--<property name="dataSource" ref="poolPRDDataSource" /> -->  
<property name="jpaVendorAdapter">
  <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
    <property name="databasePlatform" 
            value="org.hibernate.dialect.Oracle10gDialect" />
    <property name="database" value="ORACLE" />
    <property name="showSql" value="false" />
  </bean>
</property>
</bean>

和数据源引用为
 <bean id="poolPRDDataSource" class="org.apache.commons.dbcp.BasicDataSource">
 <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"/>
 ....
</bean>


<bean id="poolDVLDataSource" class="org.apache.commons.dbcp.BasicDataSource">
   <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"/>
  ....
 </bean>

我正在使用gradle构建。根据部署环境,是否有办法动态地将dataSource ref替换为“poolDVLDataSource”或“poolPRDDataSource”?

最佳答案

ReplaceRegExp ant任务应该可以解决您的问题。 https://ant.apache.org/manual/Tasks/replaceregexp.html

以下示例代码示例:

ant.replaceregexp(match:'existingName', replace:'newName', byline:true) {
    fileset(dir: 'WebContent/WEB-INF', includes: 'applicationContext.xml')
}

关于gradle - 如何使用Gradle build替换xml的内容或关键字(如applicationContext.xml)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45493080/

相关文章:

c++ - 我可以在 regex_replace 中使用 $1 吗?

java - 使用 hashmap 值替换 String 出现错误

java - 如何在构建时验证 Ibatis XML 格式正确?

java - SpannerOptions 处的 Google Spanner NullPointerException

intellij-idea - Gradle 从不工作

python - 基于替换和不替换规则的子字符串替换

java - 创建 ANT 脚本以在 Tavis-CI 上构建并在提交时运行 JUnit 测试

java - 使用 ant 引用 jar(不是/libs)的外部文件夹

java - 尝试导入项目时,IntelliJ IDE 中未检测到框架

android - 在 Android Studio build.gradle 中打印变量的简单方法?