
рдЗрд╕ рдкреЛрд╕реНрдЯ рдореЗрдВ рдореИрдВ рджрд┐рдЦрд╛рдКрдВрдЧрд╛ рдХрд┐ рдЧреНрд░реИрдбрд▓ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реЗ DBDeploy рдХреИрд╕реЗ рд╢реБрд░реВ рдХрд░реЗрдВред

рдпрд╣ рд╕рдм рдХреНрдпрд╛ рд╣реИ?
рдЖрдкрдиреЗ рдкрд╣рд▓реЗ рд╣реА рд╕рдВрд╕реНрдХрд░рдг рдбреЗрдЯрд╛рдмреЗрд╕ рд╕рдВрд░рдЪрдирд╛ рдкреНрд░рд╡рд╛рд╕рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реБрдирд╛ рд╣реЛрдЧрд╛ред рдЙрдиреНрд╣реЛрдВрдиреЗ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рд╣рдм рдкрд░ рд▓рд┐рдЦрд╛ рд╣реИ DBDeploy рд╕рдмрд╕реЗ рд╕рд░рд▓ рдФрд░ рд╕рдмрд╕реЗ рдкреНрд░рд╕рд┐рджреНрдз рдЙрдкрдХрд░рдгреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИ рдЬреЛ рдХрд┐рд╕реА рднреА рдЙрджрд╛рд╣рд░рдг рдФрд░ рдХрд┐рд╕реА рднреА рд╡рд┐рдХрд╛рд╕ рдорд╢реАрди рдкрд░ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рд╕рднреА рдирд╡реАрдирддрдо рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рдЖрд╕рд╛рди рдмрдирд╛рддрд╛ рд╣реИред рдФрд░ рдЧреНрд░реИрдбрд▓ рдЕрдм рдПрдХ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдлреИрд╢рдиреЗрдмрд▓ рдЙрдкрдХрд░рдг рд╣реИ (рдЬреИрд╕реЗ рдЪреАрдВрдЯреА рдФрд░ рдорд╛рд╡реЗрди, рдХреЗрд╡рд▓ рдмреЗрд╣рддрд░)ред рдЙрдиреНрд╣реЛрдВрдиреЗ рдЙрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рднреА рд▓рд┐рдЦрд╛ ред
рдФрд░ рд╕рд╡рд╛рд▓ рдХреНрдпрд╛ рд╣реИ?
рд╕рд╡рд╛рд▓ рдпрд╣ рд╣реИ рдХрд┐ рдЧреНрд░реИрдбрд▓ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реЗ DBDeploy рдХреИрд╕реЗ рдЪрд▓рд╛рдпрд╛ рдЬрд╛рдП? DBDeploy рдХреЗ рдкрд╛рд╕ Ant рдФрд░ Maven рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд▓рдЧрдЗрди рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдп рд╣реИрдВ, рд▓реЗрдХрд┐рди DBdeploy рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдкреНрд▓рдЧрдЗрди рдЕрднреА рддрдХ рдирд╣реАрдВ рд╣реИ (рдЕрдзрд┐рдХ рд╕рдЯреАрдХ рд░реВрдк рд╕реЗ, рдпрд╣ рдЕрдкрдиреА рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдЕрд╡рд╕реНрдерд╛ рдореЗрдВ рд╣реИ)ред рдереЛрдбрд╝рд╛ рдкреНрд░рд╣рд╛рд░ рдХрд░рддреЗ рд╣реБрдП, рдореИрдВ рдЗрд╕ рдирддреАрдЬреЗ рдкрд░ рдкрд╣реБрдВрдЪрд╛ рдХрд┐ рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рдЧреНрд░реИрдбрд▓ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реЗ рдЙрд╕реА рдПрдВрдЯ рдЯрд╛рд╕реНрдХ рдбреАрдмреАрдбрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИ ( рдпрд╣ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЧреНрд░реЗрдб рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реЗ рдХрд┐рд╕реА рднреА рдПрдВрдЯ рдЯрд╛рд╕реНрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рдП)ред рдПрдХ рдЙрджрд╛рд╣рд░рдг рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред
рдХрд╛рд░реНрдп рд╕реНрдкрд╖реНрдЯ рд╣реИ, рд╣рдо рдХрд╣рд╛рдВ рд╕реЗ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ?
рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рд╣рдорд╛рд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рдВрд░рдЪрдирд╛ рд╣реИред Db рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ SQL рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣реЛрддреА рд╣реИ:
- рдбрд╛рдЯрд╛рдмреЗрд╕
- create_changelog_table.sql
- 001_create_customer_table.sql
- 002_create_address_table.sql
- 003_etc ...
- build.gradle
рдлрд┐рд░ рд╣рдо 3 рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдЧреНрд░реЗрдб рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ:
build.gradle
project.ext { dbDriver = 'com.mysql.jdbc.Driver' dbUrl = 'jdbc:mysql:///habrahabr' dbUsername = 'habra' dbPassword = 'habr' }
рдХрд╛рд░реНрдп рдЕрджреНрдпрддрдирдЯреИрдмрдмреЗрд╕
task updateDatabase << { ant.taskdef(name: 'dbdeploy', classname: 'com.dbdeploy.AntTarget', classpath: configurations.compile.asPath) ant.dbdeploy(driver: dbDriver, url: dbUrl, userid: dbUsername, password: dbPassword, dir: 'db', dbms: 'mysql', undooutputfile: 'db/undo_last_change.sql') }
рдХрд╛рд░реНрдп createChangelogTable
<b>task createChangelogTable</b> << { ant.sql(driver: dbDriver, url: dbUrl, userid: dbUsername, password: dbPassword, encoding: 'UTF-8', classpath: configurations.compile.asPath) { fileset(file: 'db/create_changelog_table.sql') } }
рдХрд╛рд░реНрдп рдкреВрд░реНрд╡рд╡рдд рдХрд░реЗрдВ
<b>task undoLastChange</b> << { ant.sql(driver: dbDriver, url: dbUrl, userid: dbUsername, password: dbPassword, encoding: 'UTF-8', classpath: configurations.compile.asPath) { fileset(file: 'db/undo_last_change.sql') } }
рдЗрд╕реЗ рдХреИрд╕реЗ рдЪрд▓рд╛рдПрдВ?
рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ 3 рдХрд╛рд░реНрдп рд╣реИрдВ:
> рдЧреНрд░реЗрдбреЗрд▓ рдХреНрд░реИрдВрдЧреЗрд▓рдЧреЙрдЧрдЯреЗрдмрд▓
: createChangelogTable
рдирд┐рд░реНрдорд╛рдг рд╕рдлрд▓рддрд╛ рд╣реИ
> рдЕрджреНрдпрддрди рдЕрджреНрдпрддрди
[ant: dbdeploy] dbdeploy 3.0M3
[ant: dbdeploy] рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ / tmp / habr / gradle-dbdeploy / db рд╕реЗ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдкрдврд╝рдирд╛
[ant: dbdeploy] рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдбреЗрдЯрд╛рдмреЗрд╕ рдкрд░ рд▓рд╛рдЧреВ рдкрд░рд┐рд╡рд░реНрддрди:
[ant: dbdeploy] 1..61
[рдЪреАрдВрдЯреА: dbdeploy] рд▓рд┐рдкрд┐рдпреЛрдВ рдЙрдкрд▓рдмреНрдз:
[ant: dbdeploy] 62..62
[рдЪреАрдВрдЯреА: dbdeploy] рд▓рд╛рдЧреВ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП:
[ant: dbdeploy] 62..62
[ant: dbdeploy] # 62: 062_migrate_currency_to_eur.sqb.com рд▓рд╛рдЧреВ рдХрд░рдирд╛ ...
[ant: dbdeploy] -> 5 рдореЗрдВ рд╕реЗ 1 рдХрдерди ...
[ant: dbdeploy] -> рдХрдерди реи рдХрд╛ рел ...
[ant: dbdeploy] -> рел рдореЗрдВ рд╕реЗ рей рдХрдерди ...
[ant: dbdeploy] -> рдХрдерди рел рдХрд╛ рек ...
[ant: dbdeploy] -> рдХрдерди рел рдХрд╛ рел ...
[рдЪреАрдВрдЯреА: dbdeploy] рдкреВрд░реНрд╡рд╡рдд рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдмрдирд╛рдирд╛ ...
рдирд┐рд░реНрдорд╛рдг рд╕рдлрд▓рддрд╛ рд╣реИ
> рдЕрдирдбреЙрд▓реЗрд╕реНрдЯрдЪреЗрдВрдЬ рдмрджрд▓реЗрдВ
: рдкреВрд░реНрд╡рд╡рдд рдХрд░реЗрдВ
рдирд┐рд░реНрдорд╛рдг рд╕рдлрд▓рддрд╛ рд╣реИ
рдЕрдм рдЖрдк рдПрдХ рдмрд╛рд░ тАЬgradle createChangelogTableтАЭ рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдкреНрд░рддреНрдпреЗрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдмрджрд▓рдиреЗ рдХреЗ рдмрд╛рдж рднреА рд╣рд░ рдмрд╛рд░ тАЬgradle updateDatabaseтАЭ рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдЕрдВрддрд┐рдо рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рдкреВрд░реНрд╡рд╡рддреН рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП тАЬgradle undoLastChangeтАЭ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рдХрд╣рдирд╛
рдЧреНрд░реИрдб, рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдмрд╣реБрдд рд╣реА рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдФрд░ рдкрдардиреАрдп рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, DBDeploy рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рдЖрдЧреЗ рдмрдврд╝рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд░рд▓ рдФрд░ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рддрд░реАрдХрд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдФрд░ рдЙрдиреНрд╣реЛрдВрдиреЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдПрдХ рд╕рд╛рде рдХрд╛рдо рдХрд┐рдпрд╛ред
рд╕реМрднрд╛рдЧреНрдп!