|
import java.io.ByteArrayInputStream |
|
import sbt._ |
|
import Keys._ |
|
|
|
object Build extends sbt.Build { |
|
|
|
lazy val jooqProject = Project("jooq", file("."), settings = Seq( |
|
jooqSettings(JooqCodegenConfig( |
|
schemata = Seq("___________"), |
|
includes = """(?i)__________\.(%s)""".format(Seq( |
|
"pkg (foobar | xyzzy) bundle", |
|
"foobar_ ( one | two | three | four_ (a|b) )", |
|
"xyzzt_ ( one | two | three | four_ (a|b) )", |
|
).mkString("|").replaceAll("""\s""", "")), |
|
packageName = "__________.____.____________" |
|
)) |
|
)) |
|
|
|
lazy val jooqCodegenTask = TaskKey[Unit]("jooq-codegen") |
|
lazy val jooqCodegenConfig = SettingKey[JooqCodegenConfig]("jooq-codegen-config") |
|
|
|
def jooqSettings(config: JooqCodegenConfig): Seq[Setting[_]] = Seq( |
|
libraryDependencies += Seq( |
|
"com.oracle" % "ojdbc6" % "11.2.0.2.0", |
|
"org.jooq" % "jooq" % "3.0.0-RC1" |
|
), |
|
jooqCodegenConfig := config, |
|
javaSource in Compile <<= (sourceDirectory in Compile)(_/"jooq"), |
|
jooqCodegenTask <<= (streams, baseDirectory, jooqCodegenConfig) map { |
|
(s, bd, jc) => { |
|
if (jc.enable) { |
|
import org.jooq.util.{GenerationTool=>G} |
|
val xml = jc.asXml(bd).buildString(stripComments = false) |
|
s.log.info(xml) |
|
IO.delete(bd/"src"/"main"/"jooq") |
|
G.main(G.load(new ByteArrayInputStream(xml.getBytes("utf-8")))) |
|
} |
|
} |
|
} |
|
) |
|
|
|
case class JooqCodegenConfig(schemata: Seq[String] = Seq(), includes: String = "", |
|
packageName: String = "", enable: Boolean = true) { |
|
|
|
def asXml(baseDirectory: File) = |
|
<configuration> |
|
<jdbc> |
|
<driver>oracle.jdbc.OracleDriver</driver> |
|
<url>jdbc:oracle:thin:____________________________</url> |
|
<user>_____________</user> |
|
<password>___________</password> |
|
</jdbc> |
|
<generator> |
|
<name>org.jooq.util.DefaultGenerator</name> |
|
<database> |
|
<name>org.jooq.util.oracle.OracleDatabase</name> |
|
<includes> |
|
{includes} |
|
</includes> |
|
<schemata>{ |
|
for (schema <- schemata) yield { |
|
<schema> |
|
<inputSchema>{schema}</inputSchema> |
|
</schema> |
|
} |
|
}</schemata> |
|
</database> |
|
<target> |
|
<packageName>{packageName}</packageName> |
|
<directory>{(baseDirectory/"src"/"main"/"jooq").getPath}</directory> |
|
</target> |
|
</generator> |
|
</configuration> |
|
|
|
} |
|
|
|
} |
Fancy giving some support to this user of your plugin? :-)
http://stackoverflow.com/q/18329458/521799