龙空技术网

linux 编译非mavn的java web项目

万物生的好物 83

前言:

眼前我们对“javalinuxweb”都比较关心,兄弟们都想要了解一些“javalinuxweb”的相关内容。那么小编同时在网上搜集了一些关于“javalinuxweb””的相关知识,希望看官们能喜欢,咱们快快来了解一下吧!

对应java 项目,我们编译最多的就是直接使用ide自动编译,比如eclipse、idea等,这些ide工具进行编译,一般会在项目下面生成一个build文件夹,里面会有class文件和lib、前端文件等等,这些都是编译后的文件。

那么没有idea工具的情况,比如linux服务器直接拉取源码又怎么才能编译呢?

众所周知使用javac编译,只能编译单个的java文件,javac又如何编译整个java项目呢?有些人会说使用maven的mvn命令打包,这个对应maven项目是可以的,如果项目不是maven的呢,是普通的非mavn项目呢?

这个时候就要用到一些组合的命令了。废话不多说,直接上干货吧

比如我有个项目mytestweb,是一个动态的java web项目,但是没有使用maven架构,我想通过linux服务器拉取项目源码后进行编译打包成war,这里步骤如下:

cd   /projects/#先将打包依赖的包,拷贝到项目的lib中,我这两个包预先准备好了这这个目录cp  ./serlevt-api.jar  ./WebRootWEB-INF/lib/cp ./rt.jar   ./WebRootWEB-INF/lib/#进入项目目录cd   /proj#ects/mytestweb#  删除classes下面的文件 rm -rf   WebRoot/WEB-INF/classes#创建classes目录mkdir -p WebRoot/WEB-INF/classes#删除测试相关的类,避免junit不支持rm -rf  ./src/test#找出所有的java文件,并输出到文件中find  ./src/ -name "*.java"  > javaFilelist.txt#javac命令 ,-d是指定编译后的文件存放路径,-cp 是指定编译依赖的路径   . 代表当前路径,:是分割符号,如果有多个路径则有多个冒号,windows下是;  @javafilelist是从这个文件中获取路径清单javac  -parameters  -encoding utf-8 -d ./WebRoot/WEB-INF/classes -cp  .:./WebRoot/WEB-INF/lib/*  @javaFilelist.txtcp  ./src/*.propertis WebRoot/WEB-INF/classescp  ./src/*.propertis WebRoot/WEB-INF/classesfind ./WebRoot/WEB-INF/classes/ -name "*.java"  -exec rm -rf  {} \;#删除额外的jar,如果项目本身就有serlevt-api.jar,可以不删除rm -rf  ./WebRootWEB-INF/lib/serlevt-api.jarrm -rf  ./WebRootWEB-INF/lib/rt.jarcd /projects/mytestweb/WebRoot/jar -cvf mytestweb.war 

这样就打包好了,tomcat会自动解压war,或者手动解压war也可以的

这里用到的关键技术是 编译和打包,javac和jar命令,

服务器一定要先安装后jdk

有些项目,像spring mvc可能会出现兼容性问题,需要在javac 后面添加 -parameters, 这样就可以了

这里可能有很多可以改进的地方,大家可以指教一下

标签: #javalinuxweb #javaweblinux