Maven,['meɪv(ə)n],项目构建管理工具,用于告诉编译器项目中各文件之间的依赖关系等。
pom.xml 文件指定了项目的依赖关系。
1.repository仓库
Maven的仓库分为本地仓库和远程仓库。本地仓库:是Maven在我们本机设置的仓库目录,默认目录为 当前用户目录/.m2/repository。
远程仓库:联网时才能用,从这里下载jar。
默认远程仓库因为访问量大,速度慢,所以可以自己临时替换远程仓库位置。
.m2/ 目录下有个settings.xml配置文件,在<mirrors>节点内部增加<mirror>节点就可以了。
一个示例:
<mirror> <id>jboss-public-repository-group</id> <mirrorOf>*</mirrorOf> <name>JBoss Public Repository Group</name> <url>http://repository.jboss.org/nexus/content/groups/public</url> </mirror>
对eclipse中的maven插件有效。<mirror>配置修改实时生效,不需重启eclipse。
2.mvn项目结构
maven默认的文件存放结构如下:
/项目目录
pom.xml 用于maven的配置文件
/src 源代码目录
/src/main 工程源代码目录
/src/main/java 工程java源代码目录
/src/main/resource 工程的资源目录
/src/test 单元测试目录
/src/test/java
/target 输出目录,所有的输出物都存放在这个目录下
/target/classes 编译之后的class文件
SNAPSHOT:如果一个版本包含字符串"SNAPSHOT",Maven就会在安装或发布这个组件的时候将该符号展开为一个日期和时间值,转换为UTC时间。例 如,"1.0-SNAPSHOT"会在2010年5月5日下午2点10分发布时候变成1.0-20100505-141000-1。
3.maven项目与eclipse项目互转
3.1 eclipse->maven
已有eclipse普通项目转化为maven项目,右击项目名,按照下图3-1选择。
图 3-1
3.2 maven->eclipse
一个原本的maven项目是没有.classpath与.project这些文件的。所以在用eclipseIDE的时候要创建它们,可以用命令
mvn eclipse:eclipse 来生成这些文件。
问:
mvn eclipse:clean 与
mvn clean 的区别是什么?
答:前者是清除已有的.classpath与.project这些东西;后者是清除mvn在 target/ 目录下面的一些东西。
4.maven生命周期
从前到后依次是compile、test、package、install、deploy。
4.1 compile
compile任务就是从src/main/java下编译所有的java文件,并把它的输出class文件存放到target/classes中。
本地的jdk是1.8,但目标服务器的环境是jdk1.7,那么就要指定编译的版本,可用下面插件解决:
<plugin> <artifactId>maven-compiler-plugin</artifactId> <version>3.1</version> <configuration> <span style="white-space:pre"> </span><source>1.7</source> <target>1.7</target> </configuration> </plugin>
4.2 test
略。
4.3 package
打包。可参见插件 文章。
4.4 install
将自己的项目打包进本地仓库中。这样自己的其他项目就可以依赖它了。
常见错误
[ERROR] No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK?
解决方法:Library中的jre变成jdk,下图:
附带源码
可以使用maven-source-plugin插件。
4.5 deploy
用于发布到远程仓库。