java命令行构建(三)
来源:互联网 发布:非农数据哪个网站 编辑:程序博客网 时间:2024/06/07 15:04
前面已经说了打jar包,那怎么打成war包呢?
打成war包会把lib中的jar也加进来,虽然导致war文件有点大,但贵在一个文件,比较方便.
打war包命令也是直接用jar即可:
jar -cvf myh.war *
先看工程的结构:
│ build.py│├─build├─conf│ log4j.xml│├─lib│ jsp-api.jar│ log4j.jar│ servlet-api.jar│├─src│ └─com│ └─yp│ └─test│ └─servlet│ MyServlet.java│└─WebContent │ index.jsp │ └─WEB-INF web.xml
只有一个servlet
package com.yp.test.servlet;import java.io.IOException;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.apache.log4j.Logger;/** * Servlet implementation class MyServlet */public class MyServlet extends HttpServlet { private static final long serialVersionUID = 1L; static Logger log = Logger.getLogger(MyServlet.class); /** * Default constructor. */ public MyServlet() { // TODO Auto-generated constructor stub } /** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub log.info("hello!!!!!log4j"); response.sendRedirect("index.jsp"); } /** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub }}
web.xml增加:
<servlet> <description></description> <display-name>MyServlet</display-name> <servlet-name>MyServlet</servlet-name> <servlet-class>com.yp.test.servlet.MyServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>MyServlet</servlet-name> <url-pattern>/MyServlet</url-pattern> </servlet-mapping>
build.py代码:
#!/usr/bin/python#coding:UTF-8import paramiko,datetime,os,loggingimport os,shutilimport sysimport time# 遍历文件侠def getFiles(dir, suffix): res = [] for root, directory, files in os.walk(dir): for filename in files: name, suf = os.path.splitext(filename) if suf == suffix: res.append(os.path.join(root, filename)) return res# 一些变量jarFileName = "myh.jar"webFold = "WebContent"basedir = os.getcwd()# clean,init some pathlogging.error("current workplace:"+os.getcwd()+",clean build")if os.path.exists(basedir+"\\"+"build"): shutil.rmtree(basedir+"\\"+"build")os.mkdir(basedir+"\\"+"build")os.mkdir(basedir+"\\"+"build\\classes")# compilelogging.error("begin compile")# 把文件列表加入到sourcefiles 文件中file=open('sourcefiles','w')for tfile in getFiles(basedir+'/src/', '.java'): file.writelines (tfile+'\n')file.close()# 执行编译os.chdir(basedir)result = os.system("javac -encoding utf8 -sourcepath src @sourcefiles -d build/classes -Djava.ext.dirs=./lib ")# 判断编译结果if result!=0: logging.error('javac error') os.system("pause") sys.exit()# logging.error("开始copy配置文件")os.system("cp conf/* build/classes")# copy lib和classesos.system('cp -r lib '+basedir+'/'+webFold+'/WEB-INF/')os.system("cp -r "+basedir+"/build/classes "+basedir+"/"+webFold+"/WEB-INF/")# waros.system("jar -cvf myh.war -C "+webFold+"/ .")# cleanos.remove(basedir+"/sourcefiles")os.system("pause")
测试:
放到tomcat后,启动tomcat 启动
http://127.0.0.1:8080/myh/MyServlet 就可以看到效果了.
说明:
- WEB-INF是 javaee的标准结构,里面有个web.xml, tocmat等jee容器即认.
- 打war包比打jar包要简单,毕竟不用去管可运行文件和清单文件,只需要把jar扔到 WEB-INF/lib中即可。
- javac命令中,没有用 classpath了,而是用 -Djava.ext.dirs=./lib ,用classpath选项的话,就要生成多个jar包的路径到 -cp后. 用 -Djava.ext.dirs 是有风险的,请参考http://blog.csdn.net/scugxl/article/details/43240991
- 我是先把java文件编译成class文件放到build/classes中,然后把文件夹cp到 WEB-INF下
- 打成war 包下面的清单文件貌似没啥用。
- 需要两个入参:jarFileName,webFold
- 代码:https://github.com/huawumingguo/javacmd/
0 0
- java命令行构建(三)
- java命令行构建(一)
- java命令行构建(二)
- java命令行构建
- Java命令行程序构建工具-airline
- Java命令行程序构建工具airlift使用
- DOS命令行中用MAVEN构建 Java 和 Java Web 项目
- Maven构建Spark Framework Java项目--Linux命令行
- Groovy 构建命令行参数
- Flash Builder 命令行构建
- DOS命令行中用apache-maven-3.3.3 构建Java和Java Web项目
- java基础-构建命令行运行的java程序简要注意
- 命令行编译java程序的三种方法
- gradle命令行快速构建项目
- 构建springboot的命令行模式
- Ajax技术:构建动态的Java应用程序三
- jdk1.4 构建 java多线程,并发设计框架 (三)
- 二叉树的java构建和三种遍历方式
- Java 运算符之 & | ~ ^
- Java生成RSA非对称型加密的公钥和私钥
- JDBC基础知识总结
- 名词解释及知识点
- Reactive Programming with RxJava-Chapter4:Applying Reactive Programming to Existing Application(1)
- java命令行构建(三)
- 新手写html时常犯的错误
- 关于IIC与MPU6050
- spring源码学习--AbstractXmlApplicationContext(三)
- java之集合框架简单实例
- 上海技术型创业公司网络配置
- 求职
- Java基础知识-容量单位及进制转换
- html\css\js-dom在不同主流浏览器的兼容问题