In trying to automate our DB development, we decided to use ant and Jenkins to run our SQL scripts for a deploy. We had a hard time getting ant to work and after much trial and error (and cussing and fussing) we finally got it to work. The key really was the addsourcefile=”false” attribute and the redirector. Since mysql can run sql from a file using redirection (< ) you have to use a redirector (which is poorly documented). The ant apply task can apply an executable to every file in a fileset, so this will use the mysql executable to exec every *.sql file it finds.
<target name="test"> <apply executable="mysql" dir="." output="antlog.txt" error="anterr.txt" append="true" verbose="true" addsourcefile="false"> <arg value="-h${host}"></arg> <arg value="-u${user}"></arg> <arg value="-p${pass}"></arg> <arg value="${dbname}"></arg> <fileset dir="."> <include name="src/production/**/*.sql"></include> </fileset> <redirector> <inputmapper type="glob" from="*" to="*"></inputmapper> </redirector> </apply> </target> |