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/Maven
export 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 有更改,不需要再次运行,直接刷新网页就行。