您的位置:首页 > 编程语言 > Java开发

Jenkins自动编译发布java工程的方法

2015-08-06 21:06 417 查看
用Jenkins 实现java工程自动编译发布的方法如下:

1. 在linux服务器上安装好tomcat 和jdk 。

2. 下载jenkis.war 包 放到 linux服务器上。

linux-04:/home/AutoTest/jenkins # more startjenkins.sh

#!/bin/bash

java -jar jenkins.war –httpPort=9091 &

linux-04:/home/AutoTest/jenkins #

linux-04:/home/AutoTest/jenkins # ll

total 61500

drwxr-xr-x 3 root root 4096 Aug 6 11:41 D:

-rwxr--r-- 1 root root 1193 Aug 6 20:37 deploy.sh

-rwxr--r-- 1 root root 1390 Aug 6 20:36 deploy_bak.sh

drwxr-xr-x 2 root root 4096 Aug 6 17:15 history

drwxr-xr-x 3 root root 4096 Aug 6 11:41 home

-rw-r--r-- 1 root root 62881823 Jul 29 19:01 jenkins.war

-rwxr-xr-x 1 root root 53 Aug 5 19:51 startjenkins.sh

执行 ./startjenkins.sh 启动 jenkins 。

3. 在本机访问 jenkins。 新建一个任务,选择 构建一个自由风格的软件项目。

4. 我用的是SVN代码管理,选择 Subversion:

点击 Repository URL 后面的问号图标,点 this link , 配置SVN的路径和账号。

5. 构建中 使用ant 编译。

注意: 由于MyEclipse 一般是在windows下开发的。 Jenkins 把代码下载到linux 机器上后,用ant 编译,需要在linux机器上安装 ant 。并把 /home/apache-ant-1.7.1/bin 加入到PATH 中。 在 MyEclipse 中生成的 build.xml 需要改如下 4个jar包的路径, 并把这4个jar包放到 linux机器上。

<path id="Java EE 5 Libraries.libraryclasspath">

<pathelement location="/home/AutoTest/autoCompile/jar/javaee.jar"/>

<pathelement location="/home/AutoTest/autoCompile/jar/jsf-impl.jar"/>

<pathelement location="/home/AutoTest/autoCompile/jar/jsf-api.jar"/>

<pathelement location="/home/AutoTest/autoCompile/jar/jstl-1.2.jar"/>

</path>

ant 编译后,执行 shell脚本编译发布。并配置 构建后 E-mail 邮件通知相关的人员。

其中 deploy.sh 的内容如下:(linux编译机器和 发布的机器是同一个)

linux-04:/home/AutoTest/jenkins # more deploy.sh

#!/bin/bash

#defined

TOMCAT_HOME="/home/mobileserver/apache-tomcat-7.0.61"

TOMCAT_PORT=9090

PROJECT="$1"

#param validate

if [ $# -lt 1 ]; then

echo "you must use like this : ./deploy.sh <projectname> [tomcat port] [tomcat home dir]"

exit

fi

if [ "$2" != "" ]; then

TOMCAT_PORT=$2

fi

if [ "$3" != "" ]; then

TOMCAT_HOME="$3"

fi

#shutdown tomcat

"$TOMCAT_HOME"/bin/shutdown.sh

sleep 10

echo "tomcat shutdown"

#check tomcat process

tomcat_pid=`/usr/bin/lsof -n -P -t -i :$TOMCAT_PORT`

#echo "current :" $tomcat_pid

while [ -n "$tomcat_pid" ]

do

sleep 5

tomcat_pid=`/usr/bin/lsof -n -P -t -i :$TOMCAT_PORT`

echo "scan tomcat pid :" $tomcat_pid

done

#publish project

echo "scan no tomcat pid,$PROJECT publishing"


tar -zcvf /home/AutoTest/jenkins/history/mobileserver`date +%Y%m%d%H%M%S`.tar.gz /home/mobileserver/mobileserver2.0

rm -rf /home/mobileserver/mobileserver2.0/WEB-INF

#cp /save/$PROJECT*.war "$TOMCAT_HOME"/webapps/$PROJECT.war

cp -fr /home/AutoTest/jenkinsbuild/jobs/mobileserver/workspace/WebRoot/WEB-INF /home/mobileserver/mobileserver2.0/.


#start tomcat

"$TOMCAT_HOME"/bin/startup.sh

echo "tomcat is starting,please try to access $PROJECT conslone url"

linux-04:/home/AutoTest/jenkins #



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: