From: http://weblogs.java.net/blog/2007/02/11/hudson-became-self-executable
Hudson/Jenkins 总是制作成一个“单war”文件发布,然后把它部署到 Tomcat/Jetty 这类 web 服务器中。“我”认为它已经非常容易,但是有人觉得web服务器不容易安装配置。
其实有个叫 Winstone 的servlet容器可以很方便的作为内嵌使用,它只有1个jar文件。
1. 下载 winstone.jar
2. 下载 jenkins.war
3. 运行 java -jar winstone-0.9.6.jar --warfile=jenkins.war --httpPort=8081
4. 用浏览器访问http://localhost:8081
但是,“我”想既然 war 和 jar 格式一样,那么在 jenkins.war 中放置一个引导程序,然后执行 java -jar jenkins.war 不是更方便?winstone.jar 只有320K,我很容易的将它放入了jenkins.war,当执行 java -jar jenkins.war 的时候,Main.class将接管控制权,然后它去调用 jenkins.war 里的 winstone.jar。
这段引导代码在:https://github.com/jenkinsci/extras-executable-war
executable-war.jar 文件可以在 http://maven.jenkins-ci.org/content/repositories/releases/org/jenkins-ci/executable-war/ 找到。
jenkins 作者维护的 winstone.jar 可以在 http://maven.jenkins-ci.org/content/repositories/releases/org/jenkins-ci/winstone/ 找到。
maven 安装的过程大致是:先将 executable-war.jar 解开,再连同 winstone.jar 和 jenkins 的 class 封装成 jenkins.war。这些动作细节可以参看:https://github.com/jenkinsci/jenkins/blob/master/war/pom.xml