Maven 进行Java项目构建
Maven是什么
1. Maven是基于项目对象模型(POM project object model),可以通过一小段描述(配置)信息来管理项目的构建,报告和文档的软件项目管理工具。
1 | https://www.cnblogs.com/whgk/p/7112560.html |
2. 区别于上述依赖模式,maven的核心功能是合理叙述项目间的依赖关系。也就是通过pom.xml文件的配置获取jar包,而不是手动去添加jar包。
3. 学习maven的最终目的就是学会如何在pom.xml文件中配置获取到我们想要的jar包。
例子:
如何用pom.xml文件获取junit的jar包:
pom可以通过groupId,artifactId和version三个属性来定位一个jar包。加入pom.xml的文件属于A项目,那么A项目一定是一个maven项目。需要找到的junit项目的jar包也必须是一个maven项目,在创建每个maven项目的时候都会要求写上这三个属性值。
Maven的安装
参考Hadoop安装, 将apache-maven3.6.1压缩包解压到/usr/local/
按实际配置环境变量。
注意环境变量中添加的是$MAVEN_HOME/bin
命令行 mvn -v查看是否安装成功。
仓库的概念
通过pom.xml文件就能够找到依赖包jar。那么这些jar包在哪里呢。在仓库里。
仓库分为:本地仓库,第三方仓库和中央仓库
本地仓库:一般我们会建立一个文件夹,在网上下载一个拥有相对完整的所有jar包的组合,然后放到本地仓库,之后总该本地仓库调取就可以了。
修改本地仓库的路径:/usr/local/apache-maven/conf/settings.xml中的
第三方仓库:又称为内部中心仓库,也称为私服。一般是由公司自己设立的,只为本公司内部共享使用。它既可以作为公司内部构件协作和存档,也可作为公用类库镜像缓存,减少在外部访问和下载的频率。(使用私服为了减少对中央仓库的访问)
中央仓库:Maven内置了远程公用仓库:http://repo1.maven.org/maven2。这个公共仓库是由Maven自己维护,里面有大量的常用类库,并包含了世界上大部分流行的开源项目构件。目前是以java为主。工程依赖的jar包如果本地仓库没有,默认从中央仓库下载
##3 使用命令行创建maven项目
创建一个空白文件路径,运行如下命令:
1 | mvn archetype:create -DgroupId=com.wuhao.maven.quickstart -DartifactId=simple -DarchetypeArtifactId=maven-archetype-quickstart |
注意
版本命令冲突,即在maven3.0.5以上版本舍弃了create,使用generate生成项目
用上述命令会产生如下报错信息:
Could not find goal ‘create’ in plugin org.apache.maven.plugins:maven-archetype-plugin:3.0.0 among available goals crawl, create-from-project, generate, help, integration-test, jar, update-local-catalog -> [Help 1]
修改
将上述命令中create更改为generate就可以。
- mvn:核心命令
- archetype:create:创建项目,现在maven高一点的版本都弃用了create命令而使用generate命令了。
- -DgroupId=com.wuhao.maven.quickstart :创建该maven项目时的groupId是什么,该作用在上面已经解释了。一般使用包名的写法。因为包名是用公司的域名的反写,独一无二
- -DartifactId=simple:创建该maven项目时的artifactId是什么,就是项目名称
- -DarchetypeArtifactId=maven-archetype-quickstart:表示创建的是[maven]java项目
- 运行的前提:需要联网,必须上网下载一个小文件
运行成功会在命令行中显示Build Success
在该路径下会出现simple路径,这就是我们新建立的java项目。
maven项目的结构
1 | simple |
maven编译
复习一下Java的编译
- 在Linux下配置Java的编译,首先要确保jdk安装环境变量。
- jdk为java开发工具包,包含jre环境和javac编译器。
- jre为java运行时的环境,包括java虚拟机环境,java基础类库等。javac是java源码的编译器。
- classpath表示当我们需要一个java的库(class)时,系统会自动在CLASSPATH里面搜索,如果是jar,就自动从jar里面查找,如果是普通的目录,则在目录下面按照package进行查找。
- 也就是说,在用命令行编译一个java源码的时候,你需要将import导入的库包含在CLASSPATH中。否则将会报[ERROR]。
1 | # java environment |
例如,编译hadoop-book/ch3/URLCat.java的程序。需要找到 package org.apache.hadoop.fs。但这个在哪里找呢?反正我是没有在hadoop的安装文件里找到相关的package。所以只好尝试maven编译。
maven编译java文件 (hadoop-book/ch3/URLCat.java编译)
- 命令行构造maven项目
- 在/main/src/java下添加URLCat.java源码
- 修改根目录 pom.xml,添加库
1
2
3
4
5
6
7
8
9
10<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-hdfs</artifactId>
<version>2.9.2</version>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-common</artifactId>
<version>2.9.2</version>
</dependency> - 保持网络连接,命令行mvn clean compile进行编译。
5. 参考Hadoop相关命令进行后续操作。Hadoop-HDFS操作
使用MyEclipse创建maven项目
高版本的MyEclipse中一般都内置了maven。MyEclipse2017 中内置了maven 3.3。
TBC在MyEclipse配置自己安装的maven。
创建maven java项目
- 在Eclipse中创建maven project。注意,要勾选maven project。有可能没有出现在tool bar中,通过other获得。
2. 勾选创建简单项目, create a simple project
3. 设置项目参数,创建java项目