Maven进行项目管理很方便,下面介绍一下学习maven中的笔记。我是在Windows上运行的 有些知识点没有试,只是收集转载,很可能存在错误
1.安装
解压缩之后,配置环境变量MAVEN_HOME 为解压缩路径,在环境变量PATH中添加 %MAVEN_HOME%\bin
打开cmd 输入命令 mvn -v 验证安装是否成功
2.代理
如果连接互联网需要通过代理,那么必须为Maven进行代理设置,否则无法下载依赖。
在{M2_HOME}/conf/settings.xml中添加代理的配置信息
<proxies>
<proxy>
<id>optional</id>
<active>true</active>
<protocol>http</protocol>
<username>proxyuser</</username>
<password>proxypass</password>
<host>proxy.host.net</host>
<port>80</port>
<nonProxyHosts>local.net|some.host.com</nonProxyHosts>
</proxy>
</proxies>
3.本地库
本地库默认保存在个人文件夹下的.m2文件夹中,通过修改{M2_HOME}/conf/settings.xml文件可以更改本地库的位置
<localRepository>D:\maven\repository</localRepository>
在eclipse中则要properties->maven->user setting中更新配置文件的位置,使eclipse能读到正确的配置文件
4.添加外部库
maven有一个默认的*库,会根据pom.xml中配置的依赖自动连接该库进行下载 http://search.maven.org/
但是当*库中没有,而在别的库中,我们就需要添加别的库。通过在pom.xml里面的<repositionry>标签来实现
<repositories>
<repository>
<id>java.net</id>
<url>https://maven.java.net/content/repositories/public/</url>
</repository>
</repositories>
这样就添加了java.net库。
5.依赖
maven一个很重要的功能就是依赖管理。添加依赖的方法如下,在pom.xml中添加
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>${junit.version}</version>
</dependency>
</dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${spring.version}</version>
<exclusions>
<exclusion> //不导入spring中的commons_logging包
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
这个具体的配置信息可以在 http://search.maven.org/ maven服务器上查看。需要什么添加什么就好
关于dependecy的scope属性
Scope | 描述 |
---|---|
compile | 该范围表明相关依赖是只在工程的类路径下有效。默认取值。 |
provided | 该范围表明相关依赖是由运行时的 JDK 或者 网络服务器提供的。 |
runtime | 该范围表明相关依赖在编译阶段不是必须的,但是在执行阶段是必须的。 |
test | 该范围表明相关依赖只在测试编译阶段和执行阶段。 |
system | 该范围表明你需要提供一个系统路径。(添加本地jar时使用) |
import | 该范围只在依赖是一个 pom 里定义的依赖时使用。同时,当前工程的POM 文件的部分定义的依赖关系可以取代某特定的 POM |
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>1.1.1</version>
<scope>system</scope>
<!--本地jar的路径,相对或者绝对都可以-->
<systemPath>path/to/yourLocalJar.jar</systemPath>
</dependency>
7.创建普通java项目
首先建一个工程文件夹并进入,然后运行命令
mvn archetype:generate -DgroupId={project-packaging} -DartifactId={project-name}-DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
groupId 项目的包名 artifactId 项目名 archetypeArtifactId 项目类型 interactiveMode 是否开启交互模式(根据提示输入参数)
也可以输入 mvn archetype:generate 然后根据提示逐步设定参数
完成后输入mvn eclipse:eclipse 就可以完成该项目的eclipse工程化
mvn package 就可以完成打包
8.创建web项目
首先建一个工程文件夹并进入,然后运行命令
mvn archetype:generate -DgroupId={project-packaging} -DartifactId={project-name}-DarchetypeArtifactId=maven-archetype-webapp -DinteractiveMode=false
groupId 项目的包名 artifactId 项目名 archetypeArtifactId 项目类型 interactiveMode 是否开启交互模式(根据提示输入参数)
也可以输入 mvn archetype:generate 然后根据提示逐步设定参数
mvn eclipse:eclipse 就可以完成该项目的eclipse工程化
mvn package 就可以完成打包
9.插件
插件 | 描述 |
---|---|
clean | 构建之后清理目标文件。删除目标目录。 |
compiler | 编译 Java 源文件。 |
surefile | 运行 JUnit 单元测试。创建测试报告。 |
jar | 从当前工程中构建 JAR 文件。 |
war | 从当前工程中构建 WAR 文件。 |
javadoc | 为工程生成 Javadoc。 |
antrun | 从构建过程的任意一个阶段中运行一个 ant 任务的集合。 |
10.模板
使用命令mvn archetype:generate 根据提示简历项目时,会有一个选项是选择模板编号。
maven提供了1000多种模板可供选择。我们可以将它输出到txt中来查看各个模板的编号和信息
mvn archetype:generate > templates.txt
使用上面的命令就可以将模板信息输出到txt文档*查看
11.快照
公司有个maven私服,我们连接该私服需要进行配置。
<mirrors>
<mirror>
<id>Nexus</id>
<mirrorOf>*</mirrorOf>
<name>Nexus Mirror.</name>
<url>http://192.168.122.164:8081/nexus-2.1/content/groups/public</url>
</mirror>
</mirrors>
我们上传自己的jar时,可以使用如下命令
1). 安装到本地库:
mvn install:install-file -DgroupId=org.apache.hadoop -DartifactId=hbase -Dversion=1.0 -Dpackaging=jar -Dfile=[path to file] 2). 安装到私服
mvn deploy:deploy-file -DgroupId=org.apache.hadoop -DartifactId=hbase -Dversion=1.0 -Dpackaging=jar -Dfile=[path to file] -Durl=[url] -DrepositoryId=[id]
而快照则是我们的工程版本定义为 snapshot 如下所示
<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>data-service</groupId>
<artifactId>data-service</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
<name>health</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
</project>
这样生成的jar上传之后,别的项目引用时 每次都会从库中下载,确保下载的是最新的,避免了重复更改配置文件版本号的问题