Skip to content

Instantly share code, notes, and snippets.

@froop
Created November 27, 2011 04:49
Show Gist options
  • Select an option

  • Save froop/1396978 to your computer and use it in GitHub Desktop.

Select an option

Save froop/1396978 to your computer and use it in GitHub Desktop.
[Java][Ant] WARファイル内のファイルを環境別に差し替える例
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration>
<project basedir="." default="all" name="sample">
<property name="dest.dir" value="dest"/>
<property name="war.filename" value="${ant.project.name}.war"/>
<property name="src.war.file" value="${dest.dir}/${war.filename}"/>
<property name="dest.release.dir" value="${dest.dir}/release"/>
<property name="dest.unpack.dir" value="${dest.dir}/temp"/>
<target name="all" depends="clean,unpack,war1,war2"/>
<target name="war1">
<antcall target="fork-war">
<param name="env-name" value="env01"/>
<param name="db-url" value="url01"/>
<param name="db-user" value="user01"/>
<param name="db-pass" value="pass01"/>
</antcall>
</target>
<target name="war2">
<antcall target="fork-war">
<param name="env-name" value="env02"/>
<param name="db-url" value="url02"/>
<param name="db-user" value="user02"/>
<param name="db-pass" value="pass02"/>
</antcall>
</target>
<target name="fork-war" depends="replace-db,repack"/>
<target name="unpack">
<delete dir="${dest.unpack.dir}"/>
<unzip src="${src.war.file}" dest="${dest.unpack.dir}">
<patternset>
<include name="/META-INF/context.xml"/>
</patternset>
</unzip>
</target>
<target name="repack">
<property name="release.env.dir" value="${dest.release.dir}/${env-name}"/>
<property name="release.war.file" value="${release.env.dir}/${war.filename}"/>
<delete dir="${release.env.dir}"/>
<mkdir dir="${release.env.dir}"/>
<copy file="${src.war.file}" tofile="${release.war.file}"/>
<zip destfile="${release.war.file}" basedir="${dest.unpack.dir}" update="true"/>
</target>
<target name="replace-db">
<property name="war.context.file" value="${dest.unpack.dir}/META-INF/context.xml"/>
<replaceregexp file="${war.context.file}" encoding="utf-8"
match="url=&quot;[^&quot;]*&quot;"
replace="url=&quot;${db-url}&quot;"/>
<replaceregexp file="${war.context.file}" encoding="utf-8"
match="username=&quot;[^&quot;]*&quot;"
replace="username=&quot;${db-user}&quot;"/>
<replaceregexp file="${war.context.file}" encoding="utf-8"
match="password=&quot;[^&quot;]*&quot;"
replace="password=&quot;${db-pass}&quot;"/>
</target>
<target name="clean">
<delete dir="${dest.release.dir}"/>
<delete dir="${dest.unpack.dir}"/>
</target>
</project>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment