所在的公司,现在想要利用jenkins实现自动化的部署,目标是,在eclipse上修改,将代码提交到团队的github*仓库上,之后,利用jenkins连接github,在jenkins上里面将项目打包成一个ear包(实际上里面包含两个war用于前后端的发布)之后上传到nexus,成功后,利用部署工具G3来完成部署。
首先面对的困难是,因为项目都是老掉牙的java项目,不是maven项目,不过也可以选择用freestyle pipeline来完成,但是如果这样子的话,由于种种权限不及像小公司那样用tomcat那么简单,所以如果用freestyle pipeline 的话,怎么实现利用部署工具是个问题。
最终选择了,公司自定义的标准pipeline,但是该pipeline只针对maven,因此,我接下来要解决的问题有如下:
(1)不熟悉maven毕竟我是菜鸟战斗机
(2)怎么利用maven来实现打包和上传,这里由于我们上传到私服和部署都只是利用ear包,因此,我的思路是这样,不要改变以前的工程,新建一个maven工程,来包含ear里面需要的两个war包,并且通过这个mvn 命令打包这个项目成ear,这样处理的话,相对毕竟简单而且无风险,失败了就用回以前手动部署就行。
关于问题(2),
首先项目工程结构类似如下:因为公司电脑不能连外网所以这个是我模仿大概创建的。
在部署的时候,会将CBRCentralEAR export出来,直接扔上去,因为CBRCentralEAR 关联了CBRapp和 CBRBEapp,而这两个jave ee工程,因此最终exprot的CBRCentralEAR 里面包含两个包CBRapp.war和CBRBEapp.war.
好,到此的话,那么我就新建一个maven工程,名字叫GenerateEAR,作用是模仿CBRCentralEAR 这个工程的作用,生成ear包,那么问题就解决了。
然而不懂maven的我蠢蠢的针扎了好久,过程就忽略了,主要在这里我遇到了一个问题:
我要将两个war打包在我的maven工程里,这个maven只要用dependency就可以实现了,但是但是!
这两个包是我自己的,不是真的需要依赖,不需要下载的。。
因此查了各种资料,最终我整合成一个四不像办法,仅供参考。
适合那些想要利用maven打包本地文件的人:
首先将你要的东西,直接放到你的本地仓库,这样就可以实现了,这种办法适合在本地机玩玩,
比如我直接将我的CBRBEapp.war放到C:\Users\Administrator.m2\repository\CBRBEapp\1.0\CBRBEapp.war
这样dependency就会直接在本地仓库找到,接着用cmd mvn clean install 即可
但是我利用jenkins就是要部署到远程机器上啊,所以此路不通,因此我又新建了一个maven工程,叫InstallWARS 作用是将我要的war包安装到远程机器上的本地仓库,
其实很简单,pom文件如下:这样我就能把我本地的war安装到远程的本地仓库
接下来,GenerateEAR 的pom如下,实现打包ear并且上传到nexus。因为上面的InstallWARS工程已经把war安装到本地仓库了,所以这里的pom文件的dependcy就不会报错了。
虽然这样处理了,但是到现在还没有完成这个task因为,这个过程不容易啊,而且要等,不过我的这种做法还是不够简单,以后有机会在提高。