Linux下springside3快捷脚本(quick-start、generate-project)

1 minute read

一、交代背景

使用Springside(一下简称SS)有段时间了,之前一直都是用windows开发,正好SS提供了很方便一键安装(quick-start)和一键生成(generate-project)脚本(bat格式);前段时间全面切换环境到Ubuntu,因为培训新员工的缘故需要给他们讲解SS(因为我们用SS作为公司的基础架构),所以我在本地需要操作SS,但是脚本仅限于Windows,好在这段时间看了一部分Bash的书籍,所以决定自己根据bat脚本修改一个bash的脚本。

二、quick-start.sh

复制以下脚本保存为quick-start.sh
#!/bin/bash

# 脚本名称:quick-start.sh
# 作者:咖啡兔
# 博客:http://www.wsria.com
# 日期:2011-08-13
# 有更好的建议或写法请联系:yanhonglei[at]gmail.com

echo [INFO] 确保默认JDK版本为JDK6.0及以上版本,已配置JAVA_HOME.
echo [INFO] 如不能连接Maven官方网站, 修改本文件去掉下面一行的注释.

#设置临时变量
MVN=mvn
ANT=ant
MAVEN_OPTS="$MAVEN_OPTS -XX:MaxPermSize=128m"
SS_DIR=$(dirname $(cd ${0%/*} && echo $PWD/${0##*/}))
ANT="$SS_DIR/tools/ant/apache-ant-1.8.1/bin/ant"

#cd $(dirname `which $0`)意思是进入shell所在的目录
cd $SS_DIR
if [ -d "tools/ant/apache-ant-1.8.1/" ]; then
	ANT="$SS_DIR/tools/ant/apache-ant-1.8.1/bin/ant"
fi
echo Maven命令为$MVN
echo Ant命令为$ANT

echo [Step 1] 复制tools/maven/central-repository 到 ~/.m2/repository
cp -r "tools/maven/central-repository" ~/.m2/repository

echo [Step 2] 安装SpringSide3 所有modules, examples项目及mini項目生成模板到本地Maven仓库, 生成Eclipse项目文件.
$MVN clean install -Dmaven.test.skip=true
$MVN eclipse:clean eclipse:eclipse

echo [Step 3] 启动H2数据库.
cd tools/h2
$MVN exec:java &
cd ../../
# 等待5秒钟,因为遇到过问题:启动下面的web应用的时候H2还未启动完成,如果机器性能低请增加等待时间
sleep 5

echo [Step 4] 为Mini-Service 初始化数据库, 启动Jetty.
cd examples/mini-service
$ANT -f bin/build.xml init-db 
$MVN -Djetty.port=8083 jetty:run &
cd ../../

echo [Step 5] 为Mini-Web 初始化数据库, 启动Jetty.
cd examples/mini-web
$ANT -f bin/build.xml init-db 
$MVN -Djetty.port=8084 jetty:run &
cd ../../

echo [Step 6] 为Showcase 生成Eclipse项目文件, 编译, 打包, 初始化数据库, 启动Jetty.
cd examples/showcase
$ANT -f bin/build.xml init-db
$MVN -Djetty.port=8085 jetty:run &
cd ../../

echo [INFO] SpringSide3.0 快速启动完毕.
echo [INFO] 可访问以下演示网址:
echo [INFO] http://localhost:8083/mini-service
echo [INFO] http://localhost:8084/mini-web
echo [INFO] http://localhost:8085/showcase
不要忘记为脚本添加执行权限:
chmod a+x generate-project.sh

脚本不足:
启动数据库和3个演示项目之后按Ctrl+C不能停止进程,因为进程都是在后台运行的,脚本运行完成后使用:
ps -e | grep java
然后结束这些java进程,或者使用:
sudo netstat -tulnp | grep java
根据端口结束进程:
kill -9 xxx
目前能力有限,如果有更好的办法解决上面这个问题欢迎回复完善此文章!

如果出现以下错误信息,请下载maven-ant-tasks.jar,下载地址

Buildfile: /home/kafeitu/work/sources/springside/springside-3.3.4/examples/mini-web/bin/build.xml

BUILD FAILED
/home/kafeitu/work/sources/springside/springside-3.3.4/examples/mini-web/bin/build.xml:4: Problem: failed to create task or type antlib:org.apache.maven.artifact.ant:dependencies
Cause: The name is undefined.
Action: Check the spelling.
Action: Check that any custom tasks/types have been declared.
Action: Check that any / declarations have taken place.
No types or tasks have been defined in this namespace yet

This appears to be an antlib declaration. 
Action: Check that the implementing library exists in one of:
        -/home/kafeitu/work/tools/apache/ant/apache-ant-1.8.2/lib
        -/home/kafeitu/.ant/lib
        -a directory added on the command line with the -lib argument


Total time: 0 seconds
</pre>

三、generate-project.sh

这个比较简单,请复制以下脚本保存到generate-project.sh
echo [INFO] 确保已用mvn install安裝tools/maven/archetype中的mini-web项目模板
gpdir=generated-projects
cd $(dirname `which $0`)
if [ ! -d "$gpdir" ]; then
	mkdir $gpdir
fi
cd $gpdir
mvn archetype:generate -DarchetypeCatalog=local
不要忘记为脚本添加执行权限:
chmod a+x generate-project.sh

四、结束语

好了,两个简单的脚本OK了,希望能帮助你解决问题,期待高手的意见和参与!