命令行打包Java工程

时间:2024-11-16 20:48:45

Java工程打包常用命令

mvn打包

-Dmaven.test.skip=true表示跳过测试

-Dmaven.repo.local可用于指定本地maven仓库路径

例如:

mvn clean package -Dmaven.test.skip=true -Dmaven.repo.local=/my/mvn/repo

非maven工程war打包脚本

WAR包结构分析:

xxx.war
 |-META-INF     //存储war的基础信息,比如构建作者,使用的jdk版本等,主要是MANIFEST.MF
 |-somefile.xx  //war包根目录下的文件就像nginx中的静态资源,可被浏览器直接访问
 |-WEB-INF      // WEB-INF不能像静态资源那样被浏览器直接访问,而是受web.xml的控制
 	|-web.xml   //
 	|-classes   // 所有编译后的.class文件会放在这里面,该目录会加到CLASSPATH中
 	|-lib       // 放各种依赖的jar包,这些jar包会加到CLASSPATH中
 	|-其他目录

下面是一个示例脚本,mywar作为war包的根目录

#!/usr/bin/env bash

set -x

rm -fr mywar/* || exit 1

mkdir mywar/WEB-INF/classes -p || exit 1
find src -name *.java > javaFiles.txt || exit 1
javac -g -d mywar/WEB-INF/classes -classpath .:mywar/WEB-INF/classes:WebContent/WEB-INF/lib/* @javaFiles.txt || exit 1

cp -r src/* mywar/WEB-INF/classes || exit 1
find mywar/WEB-INF/classes -name *.java -exec rm -f {} \; || exit 1
cp -r resources/* mywar/WEB-INF/classes || exit 1

cp -r WebContent/* mywar/ || exit 1

cd mywar || exit 1
zip -r ../MYAPP.war * || exit 1