背景:基于assembly,svn安装参考上篇
准备
apache-maven-2.2.1-bin.zip(可从附件中下载)
1、安装svn
参照上篇
2、解压mvn
Unzip apache-maven-2.2.1-bin.zip /usr/maven
3、打包shell
#!/bin/bash
cd /usr/package/build002000
svn co --username XXX --password XXX https://192.168.1.165/svn/********
M2_HOME=/usr/maven/
export M2_HOME
PATH="$PATH":/usr/svn/bin:/usr/maven/bin
export PATH
cd XXX
bash -x mvn clean package -Dmaven.test.skip=true
mv target/*.war ../
mv DB ../DB
cd ..
rm -rf XXX
md5sum *.war>>XXX.md5
cd ..
tar czvf XXXX_build002000_20110712.tar.gz build002000
遇到问题
Exception in thread "main" java.lang.NoClassDefFoundError: org/codehaus/classworlds/Launcher
解决一(来源网上)
A search on the internet suggested other people had a similar problem which may or may not be solved by setting M2_HOME and/or JAVA_HOME correctly. For me, this didn't help. I worked out the problem by editing /usr/share/bin/mvn and seeing the command it was trying to run:
exec "$JAVACMD" \
$MAVEN_OPTS \
-classpath "${M2_HOME}"/boot/classworlds*.jar \
"-Dclassworlds.conf=${M2_HOME}/bin/m2.conf" \
"-Dmaven.home=${M2_HOME}" \
${CLASSWORLDS_LAUNCHER} $QUOTED_ARGS
From this I learned, that it was looking in /usr/share/maven/boot for a jar but this folder was empty on my system. Next, I used "locate classworlds.jar" to find out if this file existed and sure enough it did. In the end the solution was this:
su - root
cd /usr/share/maven2/boot
ln -s /usr/share/java/classworlds.jar
解决二
在shell中指定M2_HOME
M2_HOME=/usr/maven/
export M2_HOME