2009年10月28日水曜日

mavenでappengine-web.xmlを開発者別に生成する方法

共同で開発してると、appengine-web.xmlがAppIdとVersionの書き換えをする度に、コンフリクトしたり、デプロイ先を間違えたりと全くいいことがない。かといって、大事な設定項目もあるんで、各開発者でデプロイ先情報以外は統一しておきたい。そんな訳で、maven-replacer-pluginを使ってプロファイルを元に自動生成するようにしてみた。

構成はこんな感じで。
project
|-src/main/java
| :
+-template
| |-appengine-web-template.xml
|-pom.xml


appengine-web-template.xml
<?xml version="1.0" encoding="utf-8"?>
<appengine-web-app xmlns="http://appengine.google.com/ns/1.0">
<!-- will be replaced by maven-replacer-plugin. see the pom file. -->
$DEPLOY_SETTING$

<sessions-enabled>true</sessions-enabled>
<ssl-enabled>true</ssl-enabled>

<system-properties>
<property name="java.util.logging.config.file" value="WEB-INF/logging.properties" />
</system-properties>
</appengine-web-app>


pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
:
:
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<appId>development</appId>
<appVersion>default</appVersion>
</properties>
:
<!-- 開発者別などにあわせて用意 -->
<profiles>
<profile>
<id>product</id>
<properties>
<appId>production</appId>
<appVersion>default</appVersion>
</properties>
</profile>
<profile>
<id>preview</id>
<properties>
<appId>development</appId>
<appVersion>preview</appVersion>
</properties>
</profile>
<profile>
<id>someone</id>
<properties>
<appId>development</appId>
<appVersion>someone</appVersion>
</properties>
</profile>
</profiles>
<build>
<plugins>
<plugin>
<groupId>bakersoftware</groupId>
<artifactId>maven-replacer-plugin</artifactId>
<version>1.0.1</version>
<executions>
<execution>
<phase>process-resources</phase>
<goals>
<goal>replace</goal>
</goals>
<configuration>
<ignoreMissingFile>true</ignoreMissingFile>
<file>${basedir}/template/appengine-web-template.xml</file>
<outputFile>${basedir}/war/WEB-INF/appengine-web.xml</outputFile>
<regex>false</regex>
<token>$DEPLOY_SETTING$</token>
<value><![CDATA[<application>${appId}</application>
<version>${appVersion}</version>
]]></value>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
:
:
</project>


あとは、mvn process-resources -Psomeoneとプロファイルを指定して実行すれば、間違いのないファイルが生成される。

それにしてもblogger使いにくいな@@

0 件のコメント:

コメントを投稿