maven
maven是什么
maven是一个项目构建工具
maven如何找到jar包
举例:struts2-core-2.3.24.jar
Apache(公司名称)+ struts2(项目名称)+ 2.3.24(版本信息)
maven的常用命令
- clean:将根目录下的target目录清除
- compile:编译
- test:单元测试
- 单元测试类名有要求
- 将项目跟目下src/test/java目录下的单元测试类都会执行
- package:打包操作,在target目录下将项目打包成jar包或者war包···
- install:将当前项目打包到maven仓库里
创maven父工程的时候要将项目打包成pom
maven默认使用的jdk为1.5
- 要想改变项目编译的jdk版本,需要在pom.xml文件中添加插件
<!-- 添加项目jdk编译插件 -->
<build>
<plugins>
<!-- 设置编译版本为1.7 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.7</source>
<target>1.7</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
</plugins>
</build>
maven概念模型
- 依赖管理:对jar包的管理
- 通过命令对项目进行构建
通过maven对项目进行拆分、聚合
- 拆分思路:将项目各层(dao层,service层,controller层)的代码进行拆分,提取出来到一个表现上独立的工程中
- 拆分成如下结构(加入项目名为ssm) :
- ssm-parent:父工程
- ssm-dao:(子模块)
- ssm-service:(子模块)
- ssm-web:(子模块)
- 创建好的父工程目录结构:只有pom.xml,可以推断父工程不进行编码
- 项目需要的依赖信息在父工程中定义,子模块继承父工程
- 子模块都创建好之后,将ssm-dao、和ssm-service两个子模块打包成jar包,将ssm-web子模块打包成war包
- 如ssm-service模块需要引用ssm-dao的类,则在ssm-service模块的pom文件中添加ssm-daojar包的依赖
- 其他的模块间的引用方法相同
- 当单元测试批量加载spring配置文件时
- classpath:spring/applicationContent.-*.xml(同时加载所有的符合此命名规范的xml文件)
- classpath
使用maven的好处
- 不在拷贝jar包,项目不需要存放jar包,是的项目源代码变小
- 使用maven开的工程,如果环境统一,导入其他的项目不会报错
- 代码耦合度进一步降低
- 方便项目进行升级
- 节省人力成本
配置maven本地仓库
- 找到maven解压目录下的config中的settings.xml配置文件,搜索localRepository。然后在标签中添加
<localRepository>D:\anzhuangqu\maven_local_repo</localRepository>
Maven Profile
什么是MavenProfile
在我们平常的java开发中,会经常使用到很多配制文件(xxx.properties,xxx.xml),而当我们在本地开发(dev),测试环境测试(test),线上生产使用(product)时,需要不停的去修改这些配制文件,次数一多,相当麻烦。现在,利用maven的filter和profile功能,我们可实现在编译阶段简单的指定一个参数就能切换配制,提高效率,还不容易出错.
profile可以让我们定义一系列的配置信息,然后指定其激活条件。这样我们就可以定义多个profile,然后每个profile对应不同的激活条件和配置信息,从而达到不同环境使用不同配置信息的效果。
Maven Profile入门(修改工程的运行端口)
- 修改pom.xml文件
<properties>
<port>9105</port>
</properties>
<profiles>
<profile>
<id>dev</id>
<properties>
<port>9105</port>
</properties>
</profile>
<profile>
<id>pro</id>
<properties>
<port>9205</port>
</properties>
</profile>
</profiles>
<build>
<plugins>
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
<configuration>
<!-- 指定端口 -->
<port>${port}</port>
<!-- 请求路径 -->
<path>/</path>
</configuration>
</plugin>
</plugins>
</build>
编写不同环境的配置文件
切换数据库连接配置
- 我们在pinyougou-dao工程中src/main/resources下创建filter文件夹
- filter文件夹下创建db_dev.properties ,用于配置开发环境用到的数据库
env.jdbc.driver=com.mysql.jdbc.Driver
env.jdbc.url=jdbc:mysql://localhost:3306/pinyougoudb?characterEncoding=utf-8
env.jdbc.username=root
env.jdbc.password=123456
- filter文件夹下创建db_pro.properties
env.jdbc.driver=com.mysql.jdbc.Driver
env.jdbc.url=jdbc:mysql://localhost:3306/pinyougoudb_pro?characterEncoding=utf-8
env.jdbc.username=root
env.jdbc.password=123456
- 修改properties下的db.properties
jdbc.driver=${env.jdbc.driver}
jdbc.url=${env.jdbc.url}
jdbc.username=${env.jdbc.username}
jdbc.password=${env.jdbc.password}
- 定义Profile
<properties>
<env>dev</env>
</properties>
<profiles>
<profile>
<id>dev</id>
<properties>
<env>dev</env>
</properties>
</profile>
<profile>
<id>pro</id>
<properties>
<env>pro</env>
</properties>
</profile>
</profiles>
- 资源过滤与变量替换,修改pom.xml ,在build节点中添加如下配置
<filters>
<filter>src/main/resources/filters/db_${env}.properties</filter>
</filters>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
- 这里我们利用filter实现对资源文件(resouces) 过滤
maven filter可利用指定的xxx.properties中对应的key=value对资源文件中的{key}替换成username=value