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}
相关文章推荐
- 【脚本】Shell 获取全路径的目录和文件名*
- linux下编写shell获取指定目录下的文件名
- java 获取文件夹中的全部文件名
- Python获取目录下的全部文件名,并写入文件中
- 获取文件上传路径报错:java.io.FileNotFoundException: (文件名、目录名或卷标语法不正确。)
- 获取某目录下的所有java源码文件名
- C#根据网址获取域名,目录名,文件名函数
- 如何是获取一个文件夹里所有以.java结尾文件的数目,并把符合条件的文件名写到一个目录下。
- 【Java】获取一个目录下的名称符合一定要求的全部文件+目录
- Java 根据某个文件名,获取相对应的文件夹,然后取文件夹中所有文件
- windows下获取文件上传路径报错:java.io.FileNotFoundException: (文件名、目录名或卷标语法不正确。)
- Java-读取某个目录下所有文件、文件夹和3种从文件路径中获取文件名的方法
- java获取系统路径字体、得到某个目录下的所有文件名、获取当前路径
- java学习笔记-获取并打印C盘下多级目录名和文件名, 目录前加"-", 文件名前加两个空格
- shell 获取指定目录下文件名
- Java获取目录下全部文件
- java 使用递归获取指定文件路径目录,删除指定的文件后缀(可扩展,根据具体需要的删除的后缀进行配置)~~
- java 获取文件目录,根据后缀名 读取文件 根据关键字 查找
- Java 根据下载链接获取文件名
- Mark一下.根据文件路径获取文件名的java方法