maven


maven是什么

maven是一个项目构建工具

maven如何找到jar包

举例:struts2-core-2.3.24.jar
Apache(公司名称)+ struts2(项目名称)+ 2.3.24(版本信息)

maven的常用命令

  1. clean:将根目录下的target目录清除
  2. compile:编译
  3. test:单元测试
  • 单元测试类名有要求
  • 将项目跟目下src/test/java目录下的单元测试类都会执行
  1. package:打包操作,在target目录下将项目打包成jar包或者war包···
  2. 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概念模型

  1. 依赖管理:对jar包的管理
  2. 通过命令对项目进行构建

通过maven对项目进行拆分、聚合

  1. 拆分思路:将项目各层(dao层,service层,controller层)的代码进行拆分,提取出来到一个表现上独立的工程中
  2. 拆分成如下结构(加入项目名为ssm) :
  • ssm-parent:父工程
  • ssm-dao:(子模块)
  • ssm-service:(子模块)
  • ssm-web:(子模块)
  1. 创建好的父工程目录结构:只有pom.xml,可以推断父工程不进行编码
  • 项目需要的依赖信息在父工程中定义,子模块继承父工程
  1. 子模块都创建好之后,将ssm-dao、和ssm-service两个子模块打包成jar包,将ssm-web子模块打包成war包
  • 如ssm-service模块需要引用ssm-dao的类,则在ssm-service模块的pom文件中添加ssm-daojar包的依赖
  • 其他的模块间的引用方法相同
  1. 当单元测试批量加载spring配置文件时
  • classpath:spring/applicationContent.-*.xml(同时加载所有的符合此命名规范的xml文件)
  • classpath

使用maven的好处

  1. 不在拷贝jar包,项目不需要存放jar包,是的项目源代码变小
  2. 使用maven开的工程,如果环境统一,导入其他的项目不会报错
  3. 代码耦合度进一步降低
  4. 方便项目进行升级
  5. 节省人力成本

配置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入门(修改工程的运行端口)

  1. 修改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>

编写不同环境的配置文件

切换数据库连接配置

  1. 我们在pinyougou-dao工程中src/main/resources下创建filter文件夹
  2. 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
  1. 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
  1. 修改properties下的db.properties
jdbc.driver=${env.jdbc.driver}
jdbc.url=${env.jdbc.url}
jdbc.username=${env.jdbc.username}
jdbc.password=${env.jdbc.password}
  1. 定义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>
  1. 资源过滤与变量替换,修改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对资源文件中的怎么判断一个项目中是用的java那个版本_jar包{key}替换成username=value