OSDN Git Service

OSX用Java7(Oracle)を実行するアプリケーションバンドルに対応した。
[charactermanaj/CharacterManaJ.git] / build.xml
1 <?xml version="1.0" encoding="UTF-8"?>
2 <project name="CharacterManaJ" default="default">
3     <description>CharacterManaJ</description>
4
5         <!-- 出力するファイル名 -->
6         <property name="appName" value="CharacterManaJ.app"/>
7         <property name="jarName" value="CharacterManaJ.jar"/>
8
9         <!-- ビルド日時とバージョン、ベンダー -->
10         <property file="resources/version.properties"/>
11         <tstamp prefix="build-info">
12                 <format property="current-date" pattern="yyyy-MM-dd" locale="en" />
13                 <format property="current-time" pattern="hh:mm:ss a z" locale="en" />
14         </tstamp>
15
16         <!-- Mac環境でのビルドか? -->
17         <condition property="isMacOSX">
18                 <and>
19                         <os family="mac"/>
20                         <os family="unix"/>
21                 </and>
22         </condition>
23         
24         <!-- 埋め込みリソースを生成する -->
25         <target name="makeEmbeddedResource" description="埋め込みリソースを生成する.">
26                 <java classname="charactermanaj.model.util.MakeEmbeddedResource">
27                         <arg line="resources/schema/character.xml.ser resources/resource_list.txt"/>
28                 <classpath>
29                         <pathelement path="bin"/>
30                         <pathelement path="resources"/>
31                         <fileset dir="extlib">
32                                 <include name="**/*.jar"/>
33                         </fileset>
34                 </classpath>
35                 </java>
36         </target>
37
38         <!-- デフォルトのターゲット、JARファイルを作成する -->
39         <target name="default" description="make jar">
40         <delete dir="work"/>
41                 <mkdir dir="work"/>
42                 <!-- J2SE5以降をターゲットにコンパイルする。(Tiger/Leopard on PPCのため)
43                      JDK6のAppleExtentionsでは非推奨になっているものがあるため警告がでます。
44                  -->
45         <javac
46                 target="1.5"
47                 destdir="work"
48                 srcdir="src"
49                 encoding="UTF-8"
50                 debug="on"
51                 includeantruntime="false">
52                 <classpath>
53                         <fileset dir="extlib">
54                                 <include name="**/*.jar"/>
55                         </fileset>
56                 </classpath>
57         </javac>
58
59                 <!-- リソースをコピーする -->
60                 <copy todir="work">
61                 <fileset dir="resources">
62                         <exclude name="**/*.java"/>
63                 </fileset>
64         </copy>
65
66                 <!-- 埋め込みリソースを生成する -->
67                 <java classpath="work" classname="charactermanaj.model.util.MakeEmbeddedResource">
68                         <arg line="work/schema/character.xml.ser work/resource_list.txt"/>
69                 </java>
70
71                 <!-- JARを作成する -->
72                 <jar jarfile="CharacterManaJ.jar" basedir="work">
73                 <manifest>
74                         <attribute name="Main-Class" value="charactermanaj.CharacterManaJ" />
75                         <!-- スプラッシュ画像 -->
76                         <attribute name="Splashscreen-Image" value="splash.png"/>
77                         <!-- バージョン情報とか -->
78                                 <attribute name="Built-By" value="${vendor}" />
79                                 <attribute name="Built-On" value="${build-info.current-date}" />
80                                 <attribute name="Built-At" value="${build-info.current-time}" />
81                                 <attribute name="Specification-Title" value="CharacterManaJ" />
82                                 <attribute name="Specification-Version" value="${specification_version}" />
83                                 <attribute name="Specification-Vendor" value="${vendor}" />
84                                 <attribute name="Implementation-Title" value="CharacterManaJ ${specification_version} (${implements_version})" />
85                                 <attribute name="Implementation-Version" value="${implements_version} ${build-info.current-date}" /> 
86                                 <attribute name="Implementation-Vendor" value="${vendor}" />
87                 </manifest>
88         </jar>
89         <delete dir="work"/>
90     </target>
91
92         <!--
93          Mac OS Xのアプリケーションバンドル構造のフォルダを更新する。
94          バンドルファイルの作り方は公式ページに記述されている。
95          http://developer.apple.com/mac/library/documentation/Java/Conceptual/Java14Development/03-JavaDeployment/JavaDeployment.html
96          -->
97         <target name="makeAppBundle" if="isMacOSX" depends="default">
98                 <!-- JARファイルをアプリケーションバンドル内にコピー -->
99         <exec dir="." executable="/bin/ln">
100                 <arg line='-f "${jarName}" "${appName}/Contents/Resources/Java/${jarName}"'/>
101                 </exec>
102                 <!-- JAVA起動スタブをコピー -->
103                 <copy file="/System/Library/Frameworks/JavaVM.framework/Versions/Current/Resources/MacOS/JavaApplicationStub"
104                           toDir="${appName}/Contents/MacOS/"/>
105                 <!-- ルートフォルダにアプリケーションバンドルの属性をセット -->
106                 <exec dir="." executable="/bin/sh">
107                         <arg line='-c "/usr/bin/setFile -a B ${appName}"'/>
108                 </exec>
109                 <!-- JAVA起動スタブに実行パーミッション再設定 -->
110                 <exec dir="." executable="/bin/sh">
111                         <arg line='-c "chmod 755 ${appName}/Contents/MacOS/JavaApplicationStub"'/>
112                 </exec>
113                 <!-- リソースディレクトリのパーミッション再設定 -->
114                 <exec dir="." executable="/bin/sh">
115                         <arg line='-c "chmod -R 774 ${appName}/Contents/Resources/"'/>
116                 </exec>
117         </target>
118
119         <!--
120          OracleのJava7 on OSX用のアプリケーションバンドル構造のフォルダを更新する。
121          基本構造は、appbundler.jarを用いて作成したもの。ただし、環境変数LC_CTYPE=UTF8の設定と、
122          スプラッシュ画面、および、ローカライズの設定をinfo.plist, InfoPlist.stringsに加えている.
123          -->
124         <target name="makeAppBundleJava7" if="isMacOSX" depends="default">
125                 <!-- JARファイルをアプリケーションバンドル内にコピー -->
126         <exec dir="." executable="/bin/ln">
127                 <arg line='-f "${jarName}" "java7mac/${appName}/Contents/Java/${jarName}"'/>
128                 </exec>
129                 <!-- ルートフォルダにアプリケーションバンドルの属性をセット -->
130                 <exec dir="java7mac" executable="/bin/sh">
131                         <arg line='-c "/usr/bin/setFile -a B ${appName}"'/>
132                 </exec>
133                 <!-- JAVA起動スタブに実行パーミッション再設定 -->
134                 <exec dir="java7mac" executable="/bin/sh">
135                         <arg line='-c "chmod 755 ${appName}/Contents/MacOS/JavaAppLauncher"'/>
136                 </exec>
137                 <!-- リソースディレクトリのパーミッション再設定 -->
138                 <exec dir="java7mac" executable="/bin/sh">
139                         <arg line='-c "chmod -R 774 ${appName}/Contents/Resources/"'/>
140                 </exec>
141         </target>
142
143 </project>