一、为什么使用Maven这样的构建工具【why】
二、maven是什么【what】
清理clean:将以前编译得到的旧文件class字节码文件删除 编译compile:将java源程序编译成class字节码文件 测试test:自动测试,自动调用junit程序 报告report:测试程序执行的结果 打包package:动态Web工程打War包,java工程打jar包 安装install:Maven特定的概念-----将打包得到的文件复制到“仓库”中的指定位置 部署deploy:将动态Web工程生成的war包复制到Servlet容器下,使其可以运行
三、安装maven
在环境变量增加M2_HOME,路径是maven解压后的根目录 在环境变量里的path中增加maven/bin的目录
四、个maven
“ 根目录:工程名 |---src:源码 |---|---main:存放主程序 |---|---|---java:java源码文件 |---|---|---resource:存放框架的配置文件 |---|---test:存放测试程序 |---pop.xml:maven的核心配置文件
文件内容如下
package com.hzg.maven;
public class Hello {
public String sayHello(String name){
return "Hello "+name+"!";
}
}
<?xml version="1.0" ?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.hzg.maven</groupId>
<artifactId>Hello</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>Hello</name>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.0</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
mvn clean:清理 mvn compile:编译主程序 mvn test-compile:编译测试程序 mvn test:执行测试 mvn package:打包 mvn install:安装
五、仓库和坐标
私服:搭建在局域网中,一般公司都会有私服,私服一般使用nexus来搭建。具体搭建过程可以查询其他资料 中央仓库:架设在Internet上,像刚才的springframework就是在中央仓库上
六、依赖
对于本地仓库中没有的会去中央仓库去查找maven坐标来获取jar包,获取到jar之后会下载到本地仓库 对于中央仓库也找不到依赖的jar包的时候,就会编译失败了
七、生命周期
pre-clean 执行一些需要在clean之前完成的工作 clean 移除所有上一次构建生成的文件 post-clean 执行一些需要在clean之后立刻完成的工作
validate generate-sources process-sources generate-resources process-resources 复制并处理资源文件,至目标目录,准备打包 compile 编译项目的源代码 process-classes generate-test-sources process-test-sources generate-test-resources process-test-resources 复制并处理资源文件,至目标测试目录 test-compile 编译测试源代码 process-test-classes test 使用合适的单元测试框架运行测试。这些测试代码不会被打包或部署 prepare-package package 接受编译好的代码,打包成可发布的格式,如 JAR pre-integration-test integration-test post-integration-test verify install 将包安装至本地仓库,以让其它项目依赖。 deploy 将终的包复制到远程的仓库,以让其它开发人员与项目共享
pre-site 执行一些需要在生成站点文档之前完成的工作 site 生成项目的站点文档 post-site 执行一些需要在生成站点文档之后完成的工作,并且为部署做准备 site-deploy 将生成的站点文档部署到特定的服务器上
八、Eclipse中使用maven
<localRepository>C:\Program Files\Java\repository</localRepository>
九、maven工程的依赖特性
WebMavenDemo的pom.xml文件想能编译通过,JavaMavenService1必须mvn install JavaMavenService的pom.xml文件想能编译通过,JavaMavenService2必须mvn install
“ 注意:非compile范围的依赖是不能传递的。
十、build配置
<build>
<!-- 项目的名字 -->
<finalName>WebMavenDemo</finalName>
<!-- 描述项目中资源的位置 -->
<resources>
<!-- 自定义资源1 -->
<resource>
<!-- 资源目录 -->
<directory>src/main/java</directory>
<!-- 包括哪些文件参与打包 -->
<includes>
<include>**/*.xml</include>
</includes>
<!-- 排除哪些文件不参与打包 -->
<excludes>
<exclude>**/*.txt</exclude>
<exclude>**/*.doc</exclude>
</excludes>
</resource>
</resources>
<!-- 设置构建时候的插件 -->
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.1</version>
<configuration>
<!-- 源代码编译版本 -->
<source>1.8</source>
<!-- 目标平台编译版本 -->
<target>1.8</target>
</configuration>
</plugin>
<!-- 资源插件(资源的插件) -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>2.1</version>
<executions>
<execution>
<phase>compile</phase>
</execution>
</executions>
<configuration>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
<!-- war插件(将项目打成war包) -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.1</version>
<configuration>
<!-- war包名字 -->
<warName>WebMavenDemo1</warName>
</configuration>
</plugin>
</plugins>
</build>
“ http://mvnrepository.com/