您的位置:首页 > 运维架构 > Shell

shell中获取某个目录下全部的子文件名,java根据包名分批打包

2016-12-07 15:20 489 查看

需求

公司每次升级正式环境都是对着项目各个模块进行单独打包。

现在公司希望使用shell脚本来批量的自动打包,以减少人工出错的情况。



思路

①我会先对整个项目进行
javac
编译,把编译后的
.class
文件放到
classes
文件夹中。

②再
cd
进入到
v1
文件夹中,获得文件夹v1下所有的文件夹名。

因为到时打jar包时,需要模糊匹配相关路径下的.class文件。

并且打jar包格式:
ggservice-文件夹名.jar
的形式。

for
循环得到的文件夹名,进行打
jar
包。

得到某目录下中全部文件夹名的方法

参考链接:

http://blog.csdn.net/sidely/article/details/40426725

方法一

#!/bin/bash

dir=$(ls -l D:/temp/ |awk '/^d/ {print $NF}')
for i in $dir
do
echo $i
done


方法二

for dir in $(ls D:/tmep/)
do
[ -d $dir ] && echo $dir
done


方法三

ls -l D:/temp/ |awk '/^d/ {print $NF}'


其实同方法一,直接就可以显示不用for循环

剩下的就简单啦!直接上全部代码:

#!/bin/bash
export PATH=~/play-1.2.7:$PATH
#获得当前目录
cur=$(pwd)
echo "pwd:"${cur}
rm -rf ggservice-dataservice.jar
output_path=${cur}/classes
package=${cur}/package
echo $output_path
if [ ! -d $output_path ]; then
mkdir $output_path
fi

if [ ! -d $package ]; then
mkdir $package
fi

## 获取依赖库和需要编译的java文件
export libs=`find ./dataservice/lib -name "*.jar" |xargs|sed "s/ /:/g"`
export javafiles=`find ./dataservice/ -name "*.java" |xargs|sed "s/ / /g"`
export javautils=`find ./utils/app/ -name "*.java" |xargs|sed "s/ / /g"`
export play_lib=/opt/play-1.2.7/framework/play-1.2.7.jar
export play_lib_common=`find /opt/play-1.2.7/framework/lib/ -name "*.jar" |xargs|sed "s/ /:/g"`
#echo ${javafiles}
#echo "公共---------"
#echo ${javautils}

# 清除
rm -rf package/*

##编译 把编译后的.class文件放到classes文件夹中
javac -d ${cur}/classes -cp ${libs}:$play_lib:$play_lib_common -encoding utf-8 ${javafiles} ${javautils}
##打包
##进入到v1文件夹中
cd /home/jenkins/workspace/ggservice/dataservice/app/ggservice/v1/
## 获得所有文件夹名
dir=$(ls -l |awk '/^d/ {print $NF}')
## 进入到编译后的文件夹中
cd $output_path
## 循环文件夹名
for i in $dir
do
echo "ggservice-"${i}".jar打包情况":
jar -cvf ${package}/ggservice-${i}.jar */v1/$i/*
done

# 以下是业务需求,又对公共基础包进行单独打包

# 对公共基础包进行打包
export baseclass=`find ./ -path '*/ggservice/common/*.class' -o -path '*/ggservice/constant/*.class'`
echo "ggservice-base.jar 打包情况":
jar -cvf ${package}/ggservice-base.jar ${baseclass}

# 对Model包进行打包
export modelclass=`find ./ -path '*/ggservice/model/*.class'`
echo "ggservice-model.jar 打包情况":
jar -cvf ${package}/ggservice-model.jar ${modelclass}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐