从JOOQ Code Gen Config xml中的属性文件中读取值

时间:2015-09-17 07:05:49

标签: gradle code-generation build.gradle jooq

是否可以在我的代码生成器xml配置文件中读取属性文件(比如数据库属性文件)中的值?

例如,我将所有数据库属性存储在一个单独的文件中,如: -

db.properties

local.datasource.url=jdbc:mysql://localhost:3307
local.datasource.username=testuser
local.datasource.password=testpassword
local.datasource.driver-class-name=com.mysql.jdbc.Driver

我的应用程序正在使用上述连接信息来访问数据库。 我希望我的jooqCodeGen.xml看起来像这样:

jooqCodeGen.xml

   <jdbc>
        <driver>${local.datasource.driver-class-name}</driver>
        <url>${local.datasource.url}</url>
        <user>${local.datasource.username}</user>
        <password>${local.datasource.password}</password>
    </jdbc>
...

因此,我不必复制这些属性。 我正在从build.gradle

触发JOOQ代码生成工具

的build.gradle

task generateJooqDatabaseSource(type: JavaExec) {
    classpath = sourceSets.main.runtimeClasspath
    main = 'org.jooq.util.GenerationTool'
    args = ['/jooqCodeGen.xml']
    standardOutput = System.out
    errorOutput = System.err
}

我们有办法实现这个目标吗?

1 个答案:

答案 0 :(得分:1)

您可以在gradle构建期间生成XML,如手册

中所示

http://www.jooq.org/doc/3.7/manual/code-generation/codegen-gradle/

(这很长,所以我不会在这里复制)

然后您需要做的就是加载db.properties,以便属性可用于gradle构建,例如(来自https://discuss.gradle.org/t/how-to-include-an-external-properties-file/4263/2

ext.dbProps = new Properties()
dbProps.load(file("db.properties"))

然后您可以访问您的属性:

println dbProps['local.datasource.url']