java代码-编译-打包-实行_云原生时代笔记总结

打印 上一主题 下一主题

主题 538|帖子 538|积分 1614


  • 楔子:大概201几年开发的时候,有个ide,加上打包插件,就可以开发了,测试的时候war包扔到服务器容器里就可以跑起来了。

    • (而且没有做过批处置惩罚的小同伴对jar包实行大概不甚熟悉,只见过web容器的目录结构和lib中的jar包。)
    • 但是2015年之后应该是全面进入,云原生时代。大量操作需要linux命令行和shell脚本。tomcat也内嵌到spring boot中去启动。
    • Java官网去找资料大概就一个helloworld
    • 网上的博客,都是遇到才写一个单一的打包命令。内容分散,治标不治本。
    • 所以我把java编译打包实行整理在一起。,然后和spring-boot打包也比较一下。

  • 编译-打包-实行步调总结如下:

  • 编写Java代码
  • 编译class文件

    • javac -d destination_folder Helloxx.java multisource/*.java source_folder2/*.java -cp imported_neededcompile_neededxx.jar

  • jar包打包大概war包

    • jar包就是class文件的压缩包,然后里面会有一个MANIFEST.MF的元信息文件。可以包罗大概不包罗如main-class的配置。war包多了webapp类似这样名称的文件夹,给web服务器解压了之后使用,存放如web.xml的信息。
    • 3.1 不指定本身的manifest
      jar -cvf buildedfilexx.jar -C classfolder/xx/ . (-C 表示不复制源文件的文件夹目录,class文件都放在一个目录下,文件夹背面都带上/。. 表示当前文件夹下的class文件
    • 3.2 指定本身的manifest文
      jar -cvfm buildedfile.jar my_manifest.mf classfolder/

  • 实行jar包

    • 4.1 java -cp "/xxx/jarfilefolder/filexx.jar;xx/classfolder" XXMainclassname
    • 4.2  有main-class配置,直接实行jar包
      java -jar xx.jar (和-cp不能同时使用。springboot采用这种方式启动)

  • maven平凡打包,通过package指定jar大概war,然后是打包插件和compile插件里面做一些复制和排除的配置
  • springboot比较

    • 一般都会有一个类里面有注解@SpringbootApplication,然后在这个类里面会有main方法,但是这个main方法不是最后打包出来的mainclass,mainclass肯定是springboot本身的类作为入口的main-class。
    • 必须通过springboot的maven插件进行打包,然后看maven依靠中的starter是否带有web-starter,最后打包出来的虽然是jar包,但是jar里内嵌了服务器和打包出来的服务容器的目录。
    • 除了web,也可以有@CommandLineRunner的方法,springboot的maven插件打包的时候扫描代码中的注解,最后打包出来的jar也可以像上面的平凡jar一样实行。



  • 结语 从sre大概运维的角度看开发经验的话,现象和缘故原由不在一起,不能直观的看到的时候,通过多次测试和恒久观察也不能确定真正的缘故原由。

    • 假如不了解原理,也没有实际的经验,只是单纯看别人的笔记大概博客。就算是本身上手试试,也几乎是盲人摸象。所以最好把原理现象操作总结在一起。


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

铁佛

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表