背景:有一个 JavaWeb 的老项目,即是非 Maven 的老项目希望通过流程化的方式使用 Docker 运行。

文章目录

  • 涉及的问题
  • javac 编译项目并打包
  • 最后

涉及的问题

接到一个任务,肯定首先是要先明白需要完成什么样功能。再次是思考完成功能具体的步骤。下面是我的想法

  • 使用原生的 javac 命令编译项目,并打包成 .war 文件
  • 将 war 配合 tomcat 使用 Docker 方式运行

完成上面的两大步骤就可完成任务,不过继续细分就有很多的细节可以做,毕竟原生 javac 编译项目不太会,Docker 也不是很熟练。

javac 编译项目并打包

可能很多人想用 IDEA 配置方式,帮助我们打包,然后将 war 包直接在 Docker 中使用,这样是能完成任务:可以跑起来,但是整个发布过程并不能流程化,需要自己先去 IDEA 打包,然后再手动打镜像。

所以只能选择命令行的方式直接通过项目打包。

「涉及到 war 包的目录结构,建议先根据 IDEA 打的 war 包在 tomcat/webapps/ 下能够成功运行,此时可以进去查看你 war 解压后的目录结构」。

我这里 tomcat 自动解压后的目录:

yourProjectMETA-INF (我这里这个文件没啥用)WEB-INFclassescom/--/*.java.properties 等项目配置文件libweb.xml 等系统配置文件

所有的项目 war 包都包括:

  • 编译后的 classes 文件

    • 所有的 .Java 文件
    • .Java 文件需要的依赖 jar 包
  • 项目里面的配置文件
    • web.xml 、dispatcher.xml
    • .properties
# find + > 将 src 下所有的 .java 文件 写到一个文件当中
find ../src/ -name *.java > ./sources.list
# 将原来的 .class 文件删除
rm -rf ./WEB-INF/classes/com/*
# -d:编译后的 .class 文件存放位置 -encoding 指定字符编码 -cp:指定要搜索类的路径 -extdirs:引用外部的依赖包(这里需要注意,引用依赖包的时候不用在 / 后面加 *.jar @:@加上文件名,就是对这个文件里的内容全部编译)
javac -d ./WEB-INF/classes -encoding utf-8 -cp ../lib/ -extdirs ./WEB-INF/lib/ @sources.list
# 最后使用 jar 命令 将所有准备好的东西全部打包(需要准备的内容:参考自己项目 tomcat 中解压后的结构,然后将对应文件放到对应位置即可) 这一步执行只是将文件打包而已,所以需要自己提前将文件准备好
jar -cvf CBHbase.war ./WEB-INF/*# 最后就能使用了

最后

本文主要记录 javac 原生编译打包项目,所以 Docker 部分就跳过了

最后将 Dockerfile 写好即可。

现在有了脚本,就可以实现流程化发布应用,而不用每次去 IDEA 里面打包

javac 编译JavaWeb项目相关推荐

  1. 使用javac编译Java项目

    在缺乏eclipse和idea等IDE的工具的情况下,使用jdk自带的javac命令编译Java项目 当项目只有一个Java文件的时候,可以直接使用 javac 文件名.java 但是如果有多个源文件 ...

  2. java编译时为什么总找不到文件,javac编译时找不到文件的问题和运行项目找不到指定类问题...

    问题描述: 刚刚安装完JDK,打开Eclipse创建一个新项目,写了一个测试类进行输出打印语句时,报无法找到相应类. 然后,我跑到CMD中进行javac Test.java运行测试时,报找不到对应文件 ...

  3. 搭建javaweb环境并运行javaweb项目

    文章目录 jdk安装与配置 一.下载jdk 二.安装jdk步骤 三.配置jdk环境变量 tomcat下载与运行 运行tomcat服务器 关闭tomcat服务器 tomcat服务器目录结构 idea运行 ...

  4. eclipse 将javaWeb项目转化成maven项目

    eclipse 将javaWeb项目转化成maven项目 CreateTime--2018年4月18日16:04:18 Author:Marydon 1.首先,maven项目的标准目录 2.web项目 ...

  5. 新建JavaWeb项目

    新建JavaWeb项目 说明:通过Tomcat和部署了Tomcat的IDEA两种方式新建JavaWeb项目 仅由Tomcat创建JavaWeb项目 新建项目文件 在webapps文件夹下,新建一个项目 ...

  6. java搭建阿里云服务器环境(java环境+mysql+tomcat)和部署 JavaWeb 项目到云服务器(十分详细)

    文章有不当之处,欢迎指正,如果喜欢微信阅读,你也可以关注我的微信公众号:好好学java,获取优质学习资源. 购买一系列的东西 其实就是花钱买块区域,服务器,域名,云解析,花了好多money... 一. ...

  7. 【Web】JavaWeb项目为什么我们要放弃jsp?为什么要前后端解耦?为什么要前后端分离?2.0版,为分布式架构打基础。 - CSDN博客

    前戏 前后端分离已成为互联网项目开发的业界标准使用方式,通过nginx+tomcat的方式(也可以中间加一个nodejs)有效的进行解耦, 并且前后端分离会为以后的大型分布式架构.弹性计算架构.微服务 ...

  8. 不借助idea开发工具构建一个Javaweb项目

    不借助idea开发工具构建一个Javaweb项目 目录结构 webappsroot|----------WEB-INF|----------classes(存放字节码)|----------lib(存 ...

  9. 如何创建一个javaWeb项目

    一.使用IDEA创建一个javaweb项目 截图中文可以直接按照截图查看,未汉化可以根据提示来进行创建 1.File->New Project选择Web Application 然后填写好路径和 ...

  10. eclipse新建javaweb项目——javaweb系列(一)

    eclipse新建javaweb项目--javaweb系列(一) 系列文章 eclipse新建javaweb项目--javaweb系列(一) eclipse下javaweb简单servlet调用--j ...

最新文章

  1. The Innovation | Volume 2 Issue 4 正式出版
  2. 基于并联SVM支持向量机训练HOG特征提取的人员目标提取
  3. 3.列表(一个打了激素的数组)
  4. 正则表达式基础知识及应用(用于个人学习以及回顾)
  5. python中自带的三个装饰器_python三个自带装饰器的功能与使用(@property、@staticmethod、@classmethod)...
  6. 消防荷载楼板按弹性还是塑性计算_现浇楼板裂缝处理办法全总结!
  7. 流式计算storm应用场景简介
  8. 随机数生成器python_Python中的随机数生成器
  9. python与中文的那点事
  10. datagrid数据导出到excel文件给客户端下载的几种方法(转)
  11. mate50 鸿蒙,华为Mate50Pro概念机:瀑布环绕屏+鸿蒙系统,就算涨价我也劝你买...
  12. 飞凌linux ip修改,linux下面建立GPRS无线MODEM拨号的方法
  13. 分段函数求导数,为什么分段点处一般用导数的定义求导
  14. 美式英语口语中连读、略读,音变的技巧
  15. 关于图片的多标签分类(1)
  16. C++ 设置桌面壁纸
  17. 013-zabbix trapper方式监控
  18. 手柄摇杆控制角色移动
  19. mysql5.1.35_在Windows上安装MySql 5.1.35 Noinstall版
  20. 漏洞与木马:如何保护您的网络安全

热门文章

  1. 使用PMBus总线监控电源管理芯片UCD90120
  2. minst 手写数字识别实战
  3. 企业微信直播有哪些优势呢?
  4. PCB封装下载方法(亲测有效)
  5. 3)Allegro PCB Router Tutorial自动布线入门
  6. FunCode太空战机C++实现
  7. UUID 生成器有多快
  8. AI产品--AlphaGo、AlphaGo Zero和master
  9. CSDN免登录复制方式
  10. JavaScript黑魔法:不可阻止的“自动下载”