Java 一键构建、打包命令
Intellij IDEA一键构建,一键打包虽好,可是不了解编译,打包的过程也是不合理的。
看了网上好多Java构建,打包的命令,感觉有些臃肿与麻烦。于是想投机取巧,试试能不能简单的一条/尽量简单的命令完成目标。
ENV:
- OS:Linux/Unix
- 项目结构:
- /project
- /src(源代码)
- /META-INF
- MANIFEST.MF(配置文件)
- /com/…
- /META-INF
- /out(编译结果)
- /src(源代码)
- /project
Javac命令
Javac:
1 | ➜ ~ javac |
太多了,下面只讲述我一般需要用的。
-d
指定的输出目录,如果输入有多文件,会自动根据包分文件夹。-classpath
如果有依赖的库,就要加上。@<filename>
从外部文件读取字符,插入命令中。
单文件编译没有什么问题,多文件编译就头大了。网上的教程是说使用一个sourcelist
存放源代码文件的路径,然后javac @sourcelist
编译,可是治标不治本,还得手动写sourcelist
。
于是,打算利用一下shell的便利尝试一条命令完成目标。
1 | javac -d out $(find src -name "*.java") |
Jar命令
jar命令就是Java的打包命令
1 | ➜ ~ jar -h |
命令说明文档还是写的很好的。看文档解决大多问题(不会被CSDN一堆无脑人乱忽悠。
jar -cfvm
-c
创建档案-f
指定输出的档案文件,否则就stdout输出。-m
指定manifest文件-v
显示细节
同样一行命令:
1 | cd out && jar -cfvm ../out.jar ../src/META-INF/MANIFEST.MF com ; cd .. |
如果只想将class文件打包(如果有其他文件混入,并且不想要打包进去):
1 | cd out && jar -cfvm ../out.jar ../src/META-INF/MANIFEST.MF $(find com -name "*.class") ; cd .. |
注:需要cd更换工作目录,不然jar会把out也打包进去。
All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.
Comment