
Maven 是纯 java 开发的开源项目管理工具。进行依赖管理 (jar 包依赖管理) 和项目构建 (项目编译、打包、测试、部署)。此外还能分块开发,提高开发效率。
Maven 下载。
http://apache.org/,Project List 找到 Maven,左列表 Download -> Binary zip archive。
解压 -> 改名 Maven -> 拖到 /library 目录下。
Maven 环境变量。
$ vim ~/.bash_profile,按 i 编辑。
export MAVEN_HOME=/Library/Mavenexport PATH=$PATH:$MAVEN_HOME/bin
esc 退出编辑 -> :wq,保存并推出 vim。
source ~/.bash_profile,使配置生效。
$ mvn -v,测试配置生效。
Maven 配置。打开 /Library/Maven/conf/settings.xml。
<!-- 本地仓库目录 --><localRepository>/Users/mac/Desktop/java/maven/repository</localRepository><!-- 阿里提供的公共仓库 --><mirrors><mirror><id>aliyun</id><!-- 中心仓库的 mirror(镜像) --><mirrorOf>central</mirrorOf><name>Nexus aliyun</name><!-- aliyun仓库地址 以后所有要指向中心仓库的请求,都会指向aliyun仓库--><url>http://maven.aliyun.com/nexus/content/groups/public</url></mirror></mirrors><!-- 配置 java jdk --><profiles><profile><id>myjdk</id><activation><activeByDefault>true</activeByDefault><jdk>1.8</jdk></activation><properties><maven.compiler.source>1.8</maven.compiler.source><maven.compiler.target>1.8</maven.compiler.target><maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion></properties></profile></profiles><!-- 让增加的 profile生效 --><activeProfiles><activeProfile>myjdk</activeProfile></activeProfiles>
Maven 找依赖的顺序为本地仓库 -> 私服 -> 公共仓库 -> 中央仓库。
https://mvnrepository.com,查找依赖信息。
在 Idea 中关联 Maven。
在 Preperences 和 File -> Other Setting -> Preferences For New Projects 里设置。

Maven -> Importing -> 勾选Importing Maven Projects automatically,自动添加所依赖的包到项目。
Maven 常用命令。
$ mvn compile,编译。
$ mvn clean,清理。
$ mvn test,测试,注意遵循测试类命名规范。
$ mvn package,打成 jar 包。
$ mvn install,安装,把打成的 jar 包放到本地仓库。
$ mvn -version,查看 maven 版本号。
Maven 依赖包的 scope 标签表示生命周期。
compile,缺省值,适用于所有阶段(测试,编译,运行,打包),会随着项目一起发布(被打包)。
provided,类似compile,期望JDK、容器或使用者会提供这个依赖,如 servlet-api.jar。参与测试,编译,不会被打包。
runtime,只在运行时使用,如 mysql-connector-java 驱动 jar,适用运行和测试阶段,会被一起发布。
test,只在测试时使用,用于编译和运行测试代码,如 junit.jar,不会随项目发布。
system,类似provided,但 Maven 不会在Repository 中查找它,要在本地磁盘目录中查找,参与编译,测试,打包,运行。
新建普通 java 工程,手动创建文件夹标准如下。

新建 Maven 的配置文件 pom.xml。
<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.baidu.day.text1</groupId><!-- 项目名称--><artifactId>text1</artifactId><!-- 项目的版本 --><version>1.0-SNAPSHOT</version><!--项目打包的类型war:web项目jar:工具类pom:父工程--><packaging>jar</packaging><!-- 和项目名称保持一致--><name>text1</name><!-- 可以放一些自定义的属性,比如依赖版本号--><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><!-- 当前项目所用的依赖坐标 --><dependencies><dependency><!-- 组织名--><groupId>junit</groupId><!-- 项目名称--><artifactId>junit</artifactId><!-- 版本号--><version>4.12</version><!--作用域 --><scope>test</scope></dependency></dependencies></project>
工程目录如下。
注意文件夹名不要用 test,避免跟测试文件夹混淆。
因为不是直接创建的 maven 工程,@Test 既需要依赖,也需要导包。

然后$ mvn package,打成 jar 包。$ mvn install,把 jar 包放到本地仓库,稍后使用。
control + L,可以清空 Idea 命令行。
普通 java 工程使用自己的 jar 包。
将 text1 复制一份成 text2,,在 Modules 里导入,稍作修改。
<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.baidu.day.text2</groupId><!-- 项目名称--><artifactId>text2</artifactId><!-- 项目的版本 --><version>1.0-SNAPSHOT</version><!--项目打包的类型war:web项目jar:工具类pom:父工程--><packaging>jar</packaging><!-- 和项目名称保持一致--><name>text2</name><!-- 可以放一些自定义的属性,比如依赖版本号--><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><!-- 当前项目所用的依赖坐标 --><dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version><scope>test</scope></dependency><!-- 引入自己打的jar包--><dependency><groupId>com.baidu.day.text1</groupId><artifactId>text1</artifactId><version>1.0-SNAPSHOT</version></dependency></dependencies></project>
工程目录。

编译 Maven,这里虽然不能呼出 show 类并报红,但 Maven 是能正常运行的。
Maven 工程使用自己的 jar 包。
新建 text3 为普通 Maven 工程。代码和目录同 text2。双击右方的 compiler 编译后,可以正常呼出 类名和方法了。双击右方列表同命令行一样的功能。

创建 Maven Web 工程。

导入 tomcat 依赖的组件。
<?xml version="1.0" encoding="UTF-8"?><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>org.example</groupId><artifactId>text4</artifactId><version>1.0-SNAPSHOT</version><packaging>war</packaging><name>text4 Maven Webapp</name><!-- FIXME change it to the project's website --><url>http://www.example.com</url><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><dependencies><!-- Servlet相关的依赖 --><dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>3.1.0</version><scope>provided</scope></dependency><dependency><groupId>javax.servlet</groupId><artifactId>jstl</artifactId><version>1.2</version></dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.11</version><scope>test</scope></dependency></dependencies><build><plugins><plugin><groupId>org.apache.tomcat.maven</groupId><artifactId>tomcat7-maven-plugin</artifactId><version>2.2</version><configuration><!-- 热部署 --><contextReloadable>true</contextReloadable><port>8080</port> <!-- 端口号 --><path>/</path> <!-- 发布的项目路径 --></configuration></plugin></plugins></build></project>
双击右方 tomcat 列表运行。注意这里不会自动弹出浏览器,要自己打开浏览器 http://localhost:8080/。如果 jsp 有更改,不需要再次运行,直接刷新网页就行。





