今日内容
1. Maven的编译插件
- 可以通过pom.xml配置插件来更改项目编译compile的jdk版本
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
</plugins>
</build>
2. 创建webMaven项目
- 选择使用模板创建(后续步骤与普通javaMaven项目一致)
- 发现用模板创建的webMaven项目少了test测试、resources资源等文件夹,有需要可自行补充,然后标记成对应的文件夹即可
- intellij idea很强大,使用模板创建的webMaven项目,在src和main下补齐文件夹时会提示你,点击即可
3. Maven中配置tomcat插件跑web项目
tomcat:run
- 直接在运行配置中配置一个tomcat:run,默认跑的是tomcat 6.0
- Tomcat6与jdk1.8不兼容,改成1.7即可
tomcat7:run
- 需要先在pom.xml配置tomcat7的插件,然后运行配置中配置tomcat7:run
- pom.xml中配置
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
<configuration>
<port>8081</port>
<path>/</path>
<uriEncoding>UTF-8</uriEncoding>
<server>tomcat7</server>
</configuration>
</plugin>
本地tomcat运行
- 配置了maven插件 cargo:start,运行前要install,否则报错!
- pom.xml中配置
<plugin>
<groupId>org.codehaus.cargo</groupId>
<artifactId>cargo-maven2-plugin</artifactId>
<version>1.2.4</version>
<configuration>
<container>
<containerId>tomcat7x</containerId>
<home>D:\apache-tomcat-7.0.79</home>
</container>
<configuration>
<type>existing</type>
<home>D:\apache-tomcat-7.0.79</home>
<properties>
<cargo.servlet.port>9234</cargo.servlet.port>
</properties>
</configuration>
</configuration>
</plugin>
- 也可以直接配置本地的Tomcat
4. Maven中配置jetty插件跑web项目
- pom.xml中配置
<plugin>
<groupId>org.mortbay.jetty</groupId>
<artifactId>maven-jetty-plugin</artifactId>
<version>6.1.26</version>
<configuration>
<scanIntervalSeconds>10</scanIntervalSeconds>
<webApp>${basedir}/target/Maven_javaWeb</webApp>
<webAppConfig>
<!--访问路径 根路径访问-->
<contextPath>/</contextPath>
</webAppConfig>
<connectors>
<connector implementation="org.mortbay.jetty.nio.SelectChannelConnector">
<port>8888</port>
<headerBufferSize>16192</headerBufferSize>
</connector>
</connectors>
</configuration>
</plugin>
5. 使用provided防止依赖冲突
- 新建一个servlet
- 在web.xml中添加配置
- 做一个简单的跳转
- 需要在pom.xml中配置servlet-api等gav,如果不配置servlet会报错,但是配置了运行时会报错(Tomcat容器中已经提供),所以要配置provided只让它在编译时有效,最后不进入打包
- 查看war包中确实没有进入打包
- 如果不配置,默认scope就是compile,会进入打包
6. Maven中的继承(父子工程)
- 先使用模板快速创建一个父工程MavenParent
- 然后再在项目中创建子工程MavenChild模块,指定父工程
- 继承是为了消除重复,可以把很多相同的配置提取出来。例如:grouptId,version等
- 配置Parent的GAV,然后在父工程中添加的依赖,子工程可以直接继承使用
- 例如在父工程中配置junit
- 子工程可以直接继承使用,而不需要像之前的依赖传递还要写依赖
父工程中版本号提取
- 当父工程中定义的jar包越来越多,找起来可能会越来越麻烦,所以可以把版本号提取成一个属性集中管理。
- 在父工程的pom.xml中配置一个properties标签,里面的标签自己自定义即可
7. Maven中的聚合项目
- 聚合一般是一个工程拆分成多个模块开发,每个模块是一个独立的工程,但是要是运行时必须把所有模块聚合到一起才是一个完整的工程,此时可以使用maven的聚合工程。
- 例如电商项目中,包括商品模块、订单模块、用户模块等。就可以对不同的模块单独创建工程,最终在打包时,将不同的模块聚合到一起。
- 例如同一个项目中的表现层、业务层、持久层,也可以分层创建不同的工程,最后打包运行时,再聚合到一起。
- 聚合项目与上面的父子工程类似,就直接在父子工程上修改了
0. 父项目(以下模块均为父项目的子模块)
1. 写个model模块,专门存放实体类等
2. 写个dao模块,专门用于操作数据库
- 现在先这样写,以后一般不用dao,用mybatis的mapper更好
3. 写个service模块,专门为业务服务
4. 写个background web模块,模拟一个后台页面开发
- 前面都是普通的模块,这里是web模块,可随意使用前面的模块
5. 打包、安装到本地仓库
- 直接对父项目install即可(它会按照父项目中的模块顺序打包安装到本地)
- model、dao、service中都有对应打包的jar
- 多个后台开发可以使用一套model、dao、service