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

48 篇文章 0 订阅
45 篇文章 0 订阅

需求

公司每次升级正式环境都是对着项目各个模块进行单独打包。
现在公司希望使用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循环

剩下的就简单啦!直接上全部代码:
下面的代码是写在jenkins中的Execute shell中的脚本:

#!/bin/bash
export PATH=~/play-1.2.7:$PATH
#获得当前目录
cur=$(pwd)
echo "pwd:"${cur}
fileName=${WORKSPACE##*/}
echo "当前工作空间目录名称:"${fileName}
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文件
rm -rf ${output_path}/*

# 编译
tc=`javac -d ${cur}/classes -cp ${libs}:$play_lib:$play_lib_common -encoding utf-8 ${javafiles} ${javautils} 2>&1`
if [[ "x" != "x$tc" ]] && [[ "$tc" =~ "错误" || "$tc" =~ "error" ]]
then
  echo "javac 编译出错"
  echo "$tc"
  exit 1
else
  echo "javac 编译成功"
  echo "$tc"
fi

# 分批打包
#cd /home/jenkins/workspace/ggservice/dataservice/app/ggservice/v1/
cd /home/jenkins/workspace/ggservice-pre-jar/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}

# utils 包进行打包
export utilsclass=`find ./ -path '*/ggframework/utils/common/*.class'`
echo "ggframework-utils_2.10.jar 打包情况":
jar -cvf ${package}/ggframework-utils_2.10.jar ${utilsclass}

# 把项目依赖的jar统一放到一个文件夹中,节省空间
cd ${WORKSPACE%/*}
#mv -f `find . -path "*/lib/*"  -name "*.jar"` ../lib/
#echo ${WORKSPACE}
./mvlib.sh ${WORKSPACE##*/}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

山鬼谣me

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值