(refs #96)Add build.xml which makes an executable war file.

This commit is contained in:
takezoe
2013-09-26 20:17:33 +09:00
parent 2be79f6590
commit 38c7e3cdf8
3 changed files with 76 additions and 3 deletions

48
build.xml Normal file
View File

@@ -0,0 +1,48 @@
<?xml version="1.0" encoding="UTF-8" ?>
<project name="example" default="rename" basedir=".">
<property name="boot.classes.dir" value="boot_classes"/>
<property name="target.dir" value="target"/>
<property name="scala.version" value="2.10"/>
<property name="gitbucket.version" value="0.0.1"/>
<property name="jetty.version" value="8.1.8.v20121106"/>
<property name="servlet.version" value="3.0.0.v201112011016"/>
<target name="clean">
<delete dir="${boot.classes.dir}"/>
</target>
<target name="war" depends="clean">
<exec command="sbt.bat clean package"/>
</target>
<target name="embed" depends="war">
<mkdir dir="${boot.classes.dir}"/>
<unzip dest="${boot.classes.dir}" src="${target.dir}/webapp/WEB-INF/lib/javax.servlet-${servlet.version}.jar" />
<unzip dest="${boot.classes.dir}" src="${target.dir}/webapp/WEB-INF/lib/jetty-continuation-${jetty.version}.jar" />
<unzip dest="${boot.classes.dir}" src="${target.dir}/webapp/WEB-INF/lib/jetty-http-${jetty.version}.jar" />
<unzip dest="${boot.classes.dir}" src="${target.dir}/webapp/WEB-INF/lib/jetty-io-${jetty.version}.jar" />
<unzip dest="${boot.classes.dir}" src="${target.dir}/webapp/WEB-INF/lib/jetty-security-${jetty.version}.jar" />
<unzip dest="${boot.classes.dir}" src="${target.dir}/webapp/WEB-INF/lib/jetty-server-${jetty.version}.jar" />
<unzip dest="${boot.classes.dir}" src="${target.dir}/webapp/WEB-INF/lib/jetty-servlet-${jetty.version}.jar" />
<unzip dest="${boot.classes.dir}" src="${target.dir}/webapp/WEB-INF/lib/jetty-util-${jetty.version}.jar" />
<unzip dest="${boot.classes.dir}" src="${target.dir}/webapp/WEB-INF/lib/jetty-webapp-${jetty.version}.jar" />
<unzip dest="${boot.classes.dir}" src="${target.dir}/webapp/WEB-INF/lib/jetty-xml-${jetty.version}.jar" />
<zip destfile="${target.dir}/scala-${scala.version}/gitbucket_${scala.version}-${gitbucket.version}.war"
basedir="${boot.classes.dir}"
update = "true"
includes="javax/**,org/**"/>
<zip destfile="${target.dir}/scala-${scala.version}/gitbucket_${scala.version}-${gitbucket.version}.war"
basedir="${target.dir}/scala-${scala.version}/classes"
update = "true"
includes="JettyLauncher.class"/>
</target>
<target name="rename" depends="embed">
<rename src="${target.dir}/scala-${scala.version}/gitbucket_${scala.version}-${gitbucket.version}.war"
dest="${target.dir}/scala-${scala.version}/gitbucket.war"/>
</target>
</project>

View File

@@ -41,10 +41,11 @@ object MyBuild extends Build {
"com.novell.ldap" % "jldap" % "2009-10-07",
"com.h2database" % "h2" % "1.3.171",
"ch.qos.logback" % "logback-classic" % "1.0.6" % "runtime",
"org.eclipse.jetty" % "jetty-webapp" % "8.1.8.v20121106" % "container",
"org.eclipse.jetty.orbit" % "javax.servlet" % "3.0.0.v201112011016" % "container;provided;test" artifacts (Artifact("javax.servlet", "jar", "jar"))
"org.eclipse.jetty" % "jetty-webapp" % "8.1.8.v20121106" % "compile;container",
"org.eclipse.jetty.orbit" % "javax.servlet" % "3.0.0.v201112011016" % "compile;container;provided;test" artifacts (Artifact("javax.servlet", "jar", "jar"))
),
EclipseKeys.withSource := true
EclipseKeys.withSource := true,
packageOptions += Package.MainClass("JettyLauncher")
) ++ seq(Twirl.settings: _*)
)
}

View File

@@ -0,0 +1,24 @@
import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.webapp.WebAppContext;
import java.net.URL;
import java.security.ProtectionDomain;
public class JettyLauncher {
public static void main(String[] args) throws Exception {
int port = System.getenv("PORT") != null ? Integer.parseInt(System.getenv("PORT")) : 8080;
Server server = new Server(port);
WebAppContext context = new WebAppContext();
ProtectionDomain domain = JettyLauncher.class.getProtectionDomain();
URL location = domain.getCodeSource().getLocation();
context.setContextPath("/");
context.setDescriptor(location.toExternalForm() + "/WEB-INF/web.xml");
context.setServer(server);
context.setWar(location.toExternalForm());
server.setHandler(context);
server.start();
server.join();
}
}