接上一篇继续,上一篇地址:https://blog.csdn.net/qq_36317804/article/details/104999969
上一篇我们已经安装了ant+maven了,这一篇我们讲讲如何项目里面一键打包;
a)、第一步:我们通过ant在svn上拉取项目,将项目最新的源码拉取到服务器上;
b)、第二步:根据我们配置的参数,将spring项目的数据库配置文件动态替换掉;
c)、第三步:利用maven将spring项目打成war包;
d)、第四步:将war包移动到存储的位置
第一步:通过ant将svn上的代码检出到服务器上
ant与svn直接交互需要通过svnant插件来执行。
svnant下载地址:http://subclipse.tigris.org/files/documents/906/49042/svnant-1.3.1.zip
将下载好的svnant解压,并将svnant里面lib下的所有jar复制到ant主目录下lib文件夹下。
解压成功之后我们可以编写从svn上检出项目的代码了;
首先:配置build.properties文件,这个文件里面存放着我们的一些配置信息
build.properties文件:
ant_home=/opt/apache-ant-1.10.7
ant_lib=${ant.home}/lib
maven_home=/opt/apache-maven-3.6.3
//svn下载的文件存在放以项目名新建的文件夹下
project_space=${ant.project.name}
//项目打包的根路径
project_root=${project_space}/target/quota
//maven-ant-tasks下载maven依赖jar包的存放路径
project_lib=${project_root}/WEB-INF/lib
//javac编译后生成的class文件路径
project_class=${project_root}/WEB-INF/classes
project_name=interfaceinvoke
//svn用户名
svn.username=ceshi
//svn地址
svn.password=ceshi123456
maven.ant.tasks.jar=${ant_lib}/maven-ant-tasks-2.0.9.jar
//移动的war包最终位置
war_space=${ant.project.name}/war
build.xml文件:
<project basedir="." name="quota_project" default="rename" xmlns:artifact="antlib:org.apache.maven.artifact.ant">
<property file="build.properties"/>
<!--指定svn路径-->
<property name="svn.url" value="svn://192.168.1.251/mysqldbinterface"/>
<path id="project.classpath">
<fileset dir="${ant_lib}" includes="***.jar"></fileset>
<fileset dir="${project_lib}" includes="***.jar"></fileset>
</path>
<!-- 定义时间戳,用于从svn上拉取的项目存放在不同的文件夹下-->
<tstamp>
<format property="now" pattern="yyyymmddhhmmss" locale="en"/>
</tstamp>
<!-- 引用svn task文件,使用svn任务可以被ant使用-->
<typedef resource="org/tigris/subversion/svnant/svnantlib.xml"/>
<!--4,svn检出代码 这里使用 export 不是checkout 二者区别 checkout会svn相关信息文件检出,export只是检出最新的文件-->
<svnSetting id="setting" svnkit="true" username="${svn.username}" password="${svn.password}" javahl="false"/>
<target name="checkout">
<echo>export project start..</echo>
<svn refid="setting">
<export srcUrl="${svn.url}" destPath="${project_space}/${project_name}/${now}" force="true"/>
</svn>
<echo>export project finished..</echo>
</target>
</project>
build.xml和build.properties文件我们把放到服务器上的统一路径下。
目录结构如下:
我们进入到automatic_ant_war目录下,执行如下命令,即可打包
##checkout是我们要执行的target名称,-f build.xml是我们要执行的xml文件的地址,若当前文件夹下只有build.xml,可以不用加
ant checkout -f build.xml
执行成功后,服务器上会打印出日志:
Buildfile: /opt/automatic_ant_war/build.xml
checkout:
[echo] export project start..
[echo] export project finished..
BUILD SUCCESSFUL
Total time: 6 seconds
打开/opt/automatic_ant_war/quota_project/interfaceinvoke这个地址,可以看到我们在svn上检出的项目文件;
第二步:根据我们配置的参数,将spring项目的数据库配置文件动态替换掉 是通过java代码实现的,这里不做讲解,后面直接贴上代码;
第三步:通过maven打包项目,第四步:移动war包位置并重命名
首先你的项目需要支持maven打包配置,具体的配置方式可以在网上搜索,网上会有详细的教程,这里不做详解。
build.properties文件
ant_home=/opt/apache-ant-1.10.7
ant_lib=${ant.home}/lib
maven_home=/opt/apache-maven-3.6.3
//svn下载的文件存在放以项目名新建的文件夹下
project_space=${ant.project.name}
//项目打包的根路径
project_root=${project_space}/target/quota
//maven-ant-tasks下载maven依赖jar包的存放路径
project_lib=${project_root}/WEB-INF/lib
//javac编译后生成的class文件路径
project_class=${project_root}/WEB-INF/classes
project_name=interfaceinvoke
//svn用户名
svn.username=ceshi
//svn地址
svn.password=ceshi123456
maven.ant.tasks.jar=${ant_lib}/maven-ant-tasks-2.0.9.jar
//移动的war包最终位置
war_space=${ant.project.name}/war
build.xml文件:
<project basedir="." name="quota_project" default="rename" xmlns:artifact="antlib:org.apache.maven.artifact.ant">
<property file="build.properties"/>
<!--指定svn路径-->
<property name="svn.url" value="svn://192.168.1.251/mysqldbinterface"/>
<path id="project.classpath">
<fileset dir="${ant_lib}" includes="***.jar"></fileset>
<fileset dir="${project_lib}" includes="***.jar"></fileset>
</path>
<!-- 定义时间戳,用于从svn上拉取的项目存放在不同的文件夹下-->
<tstamp>
<format property="now" pattern="yyyymmddhhmmss" locale="en"/>
</tstamp>
<!-- 引用svn task文件,使用svn任务可以被ant使用-->
<typedef resource="org/tigris/subversion/svnant/svnantlib.xml"/>
<!--4,svn检出代码 这里使用 export 不是checkout 二者区别 checkout会svn相关信息文件检出,export只是检出最新的文件-->
<svnSetting id="setting" svnkit="true" username="${svn.username}" password="${svn.password}" javahl="false"/>
<target name="checkout">
<echo>export project start..</echo>
<svn refid="setting">
<export srcUrl="${svn.url}" destPath="${project_space}/${project_name}/${now}" force="true"/>
</svn>
<echo>export project finished..</echo>
</target>
<target name="init_maven" depends="checkout" description="配置 ant 自动下载maven的依赖包 end">
<echo>init mvn start..</echo>
<!-- 下载maven依赖-->
<path id="maven-ant-tasks.classpath" path="${maven.ant.tasks.jar}"/>
<typedef resource="org/apache/maven/artifact/ant/antlib.xml" uri="antlib:org.apache.maven.artifact.ant" classpathref="maven-ant-tasks.classpath" />
<echo>init mvn finished..</echo>
</target>
<target name="install" depends="init_maven" description="mvn install">
<echo>mvn install start..</echo>
<exec executable="/bin/sh">
<arg line="-c " cd ${project_space}/${project_name}/${now} && mvn install "" />
</exec>
<echo>mvn install finished..</echo>
</target>
<target name="rename" depends="install" description="rename war">
<echo>====修改war包名称并移动位置====</echo>
<move file="${project_space}/${project_name}/${now}/target/interfaceinvoke.war" tofile="${war_space}/interfaceinvoke${now}.war"/>
</target>
</project>
执行ant命令
ant rename -f build.xml
截取部分日志截图,可以看到我们已经打包成功了
进入到/opt/automatic_ant_war/quota_project/war文件夹下,
interfaceinvoke20202822022805.war这个文件就是我们此次打的war包,至此我们利用ant+maven打包的任务就完成了。
[root@tlxyxx-web1 automatic_ant_war]# cd /opt/automatic_ant_war/quota_project/war
[root@tlxyxx-web1 war]# ls
interfaceinvoke20202822022805.war
[root@tlxyxx-web1 war]#
下一篇地址:https://blog.csdn.net/qq_36317804/article/details/105029359