由于我想要构建jenkis自动化部署,但是原来的项目不是maven的,所以我就想把原来的项目转变成maven项目,可以自动化部署,我就把我如何把普通webapp转成maven项目记录下,中间也是遇到了不少坑。
我的项目环境是tomcat7+jdk7,可以根据自己具体项目情况进行部署。
网上很多人说,可以通过eclipse 有一个convert to maven project功能,我试过,太麻烦,还不入直接自己新建maven项目自己配置来的方便。
所以我就自己来配置。
新建maven项目
##新建项目
创建好项目后,你会看到类似下面这样的结构,里面还少很多目录,接下来我们就要创建目录了
创建maven规则目录结构
maven目录结构
├───src
│ ├───main
│ │ └───java
│ │ └───cnblogs
| | └───resources
│ └───test
│ | └───java
│ | └───cnblogs
| | └───resources
└───target
└───classes
└───cnblogs
一开始,我们会看到,java build path -> source中,很多都是missing状态,这就说明,我们项目中没有此目录,我们创建对应的目录就好了
分别创建
/src/main/java
/src/main/resources
/src/test/java
/src/test/resources
创建好后,就会发现之前的missing就没有了
拷贝原项目中文件到对应目录
我们把之前我们项目中的java文件,全部都拷贝到/src/main/java中
把配置文件放到/src/main/resources中
我比较懒,所以我把配置文件也都放到了/src/main/java中,这个都无所谓,因为后面在配置Deployment Assembly 的时候,都会把下面的文件拷贝过去,只要最后target中生成的目录结构正确就可以
修改pom.xml文件
添加属性 properties
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<maven.compiler.encoding>UTF-8</maven.compiler.encoding>
</properties>
添加依赖库 dependencies
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>2.6</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>3.1.3.RELEASE</version>
</dependency>
<!-- https://mvnrepository.com/artifact/javax.servlet.jsp/javax.servlet.jsp-api -->
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>javax.servlet.jsp-api</artifactId>
<version>2.3.1</version>
</dependency>
</dependencies>
添加构建脚本 build
${project.artifactId}
src/main/java
添加配置文件 resources
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
</resource>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.xml</include>
<include>**/*.properties</include>
</includes>
</resource>
</resources>
添加插件 plugins
由于原来的项目中,下载了很多本地jar库,如果都要转成maven比较麻烦,所以我就配置了org.apache.maven.plugins插件,把原来的库文件都加载进来。
其中compilerArguments下面配置已经下载的jar对应的目录
<compilerArguments>
<extdirs>${basedir}/src/main/webapp/WEB-INF/lib</extdirs>
</compilerArguments>
<plugins>
<plugin>
<!-- 编译插件compiler配置 -->
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.6.0</version>
<configuration>
<source>${java-version}</source>
<target>${java-version}</target>
<encoding>${project.build.sourceEncoding}</encoding>
<compilerArguments>
<extdirs>${basedir}/src/main/webapp/WEB-INF/lib</extdirs>
</compilerArguments>
</configuration>
</plugin>
</plugins>
修改eclipse设置
修改java build path
修改source
这里我们在上面调整maven目录结构的时候已经调整过了,所以这里我们只要检查一下,source中是否已经把上面我们新加的文件都加进来了,如果没有加进来,我们可以用add folder加载进来
加载libraries库,我们在开发的时候,会使用到这里配置的库,所以我们需要把我们开发过程中依赖的库,都在这里配置上
加载tomcat库
加载Web App Libraries
因为我加载了本库jar库,需要把Web App Libraries加载进来,这里加载进来的时候,我们可能会发现下面啥都没有,不要急,一会在修改完Deployment Assembly就会有了
把jdk改成1.7
修改java compiler
改为1.7
修改Deployment Assembly
在最终部署的时候,会生成对应的目录,会把source中的内容拷贝到对应的deploy path
所以我们要把我们最终需要部署的内容都加载进来,
按照这样的目录结构,有可能拷贝的时候,还会残留之前的WebRoot或者WebContent目录,需要把这些目录删除
把test文件夹去除
可能会没有maven库,所以需要add->java build path entries>添加maven依赖库
修改Project Facets
修改Dynamic Web Module 为3.0
修改java 为1.7
tomcat运行项目
最终把项目放到tomcat server中运行
自此,我们就把一个普通web项目变成了一个maven的项目啦。然后我们就可以通过jenkins + docker + git来构建自动化部署啦。