maven(2)------maven构建项目
一 下载maven
官网地址: http://maven.apache.org/download.cgi
如图:
可以下载历史版本。
二 windows下maven配置
1. 解压下载后的包,解压后多出一个文件
2. 配置环境变量
“计算机”--》右键,选择--"属性"--》"高级系统设置"--》"高级"--》"环境变量"--》"新建"--》"确定"
注意:
变量名: MAVEN_HOME(名字任意,用大写)
变量值: E:\Java\apache-maven-3.0.5(maven所在目录,禁止使用中文目录)
以上配置完后,还需要配置path路径,找到path,点击编辑,加上%MAVEN_HOME%\bin,如果不是处于结尾,需要加分号' ; '
如果只是配置完MAVEN_HOME,忘记配置path了,如下图进入,需配置path,将%MAVEN_HOME%\bin配置。
3. mvn -v 测试是否配置成功
cmd命令窗口,输入mvn -v,如果出现如下效果,说明maven配置成功。
如图:
4. 将apache-maven-3.3.9\conf下的settings.xml复制到C:\Users\Administrator\.m2下,覆盖掉settings.xml
注: maven默认情况下从C:\Users\Administrator\.m2下的settings.xml文件寻找依赖,如果使用集成工具,
比如eclipse,配置maven时,可以直接使用apache-maven-3.3.9\conf下的settings.xml,就无需使用默认。
maven下settings.xml位置:
.m2下settings.xml位置,同时在该目录下建一个repository作为本地仓库文件,建完后是空的,稍后分析。
三 maven构建项目
以下实例为了更好的分析maven项目结构,未使用集成工具,比如eclipse等。
1. maven项目结构
2. 在windows工作空间新建如下Hello项目
在Hello下,新建src和pom.xml同级:
关于src下的main和test目录如下:
在main的Java下,新建com/lanhuigu/maven,以及在test的java下,新建com/lanhuigu/maven文件级别目录
3. 源码创建
在Hello\src\main\java\com\lanhuigu\maven下新建Hello.java文件,
Hello.java内容如下:
- package com.lanhuigu.maven;
- public class Hello {
- public String sayHello(String name) {
- return name;
- }
- }
在Hello\src\test\java\com\lanhuigu\maven下新建HelloTest.java文件,
HelloTest.java内容如下:
- package com.lanhuigu.maven;
- import org.junit.Test;
- public class HelloTest {
- @Test
- public void testHello () {
- Hello hello = new Hello();
- String str = hello.sayHello("testMaven");
- System.out.println(str);
- }
- }
4. 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/maven-v4_0_0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <groupId>com.lanhuigu.maven</groupId>
- <artifactId>Hello</artifactId>
- <version>0.0.1-SNAPSHOT</version>
- <name>Hello</name>
- <dependencies>
- <dependency>
- <groupId>junit</groupId>
- <artifactId>junit</artifactId>
- <version>4.10</version>
- </dependency>
- </dependencies>
- </project>
以上在工作空间中创建了Hello项目,在Hello下新建了src,pom.xml文件,
在src下建立main,test,分别在main和test下新建java,resources,然后
分别建立文件路径,增加Hello.java和HelloTest.java源码,以及配置pom.xml文件,
如此,Maven项目Hello建立完成。
四 mvn命令使用
1. 命令
常用命令:
mvn compile (编译)
mvn test (运行测试代码)
mvn clean (清除)
mvn install (安装)
mvn package (打包)
组合命令:
mvn clean test
mvn clean install
mvn clean package
2. cd 到Hello项目
3. 执行mvn compile命令,然后等待下载mvn相关jar包,以及pom.xml配置的依赖junit包
一定要保证联网,并且网速别太次,否则下载失败。
下载完成后如下效果:
当mvn compile命令执行完成后,我们可以在Hello项目下看到多了一个target文件:
target里面的内容,一个存放xxx.class字节码文件,一个是maven状态:
这个时候我们再看看C:\Users\Administrator\.m2下的repository文件中多了什么东西?
如下,里面的东西都是mvn compile编译时从网上下载的相关依赖:
我们可以看到,在mvn compile编译的时候,下载的依赖jar包等都在这个仓库中。
既然mvn compile执行完了,再试试mvn test命令,效果如下:
Hello项目下target包内容:
我们也可以执行mvn package命令打包,注意观察Hello下的target目录文件的变化,
java项目生成jar包,如果是web项目,生成war包。
五 maven依赖分析
以上我们完成了maven项目创建,可以通过命令编译,调用测试代码,打包等。
我们还需要分析以下几个问题:
1. 为什么默认情况下使用的是C:\Users\Administrator\.m2下settings.xml文件,
而不是E:\java\apache-maven-3.3.9\conf下的settings.xml文件,
依赖jar包下到了C:\Users\Administrator\.m2\repository中,而不是别的地方??
在settings.xml文件中,打开,可以看到如下内容:
如果不指定本地仓库位置,默认使用位置为${user.home}/.m2/repository,所以就是我们一直讨论的c盘下.m2文件下。
如果我们不想把仓库放在.m2下,我们需要做这样的配置:
2. pom.xml中的配置都是什么含义?
3. 为什么在HelloTest.java中能够使用@Test测试代码,也就是怎么使用上junit包的?
在HelloTest.java中,@Test引用的是import org.junit.Test;导入的是junit包,
程序运行时,根据pom.xml中
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.10</version>
</dependency>
</dependencies>
groupId+artifactId+version从.m2/repository仓库中找到junit-4.10.jar包。
maven(2)------maven构建项目的更多相关文章
- Jenkins中maven的作用--构建项目(三)
本文主要根据Jenkins上的日志来继续说明构建项目的过程,上文我们已经讲到构建一个测试环境或单独终端的过程,详情可以了解上篇文章 一.背景介绍 首先看下SVN代码的仓库的结构: 代码仓库里有一个文件 ...
- maven 学习---Maven构建自动化-Hudson
建立自动化定义场景,依赖项目建设过程中被启动,一旦项目生成成功完成,以确保相关的项目是稳定的. 实例 考虑一个团队正在开发一个项目总线核心API上的其他两个项目的应用程序,网页UI和应用程序的桌面UI ...
- Maven构建项目后项目报Error错误Java compiler level does not match the version of the installed Java project fac
项目->右键->Project Facets->修改facets中Java版本(下拉箭头出)为要用的版本 Maven构建项目需注意 1.项目右键->Preferences-&g ...
- Maven学习3-使用Maven构建项目
转自:http://www.cnblogs.com/xdp-gacl/p/4240930.html maven作为一个高度自动化构建工具,本身提供了构建项目的功能,下面就来体验一下使用maven构建项 ...
- Maven学习总结(三)——使用Maven构建项目
maven作为一个高度自动化构建工具,本身提供了构建项目的功能,下面就来体验一下使用maven构建项目的过程. 一.构建Java项目 1.1.创建Java Project 1.使用mvn archet ...
- 【项目管理和构建】十分钟教程,eclipse配置maven + 创建maven项目(三)
[项目管理和构建]十分钟教程,eclipse配置maven + 创建maven项目(三) 上篇博文中我们介绍了maven下载.安装和配置(二),这篇博文我们配置一下eclipse,将它和maven结合 ...
- Maven构建项目速度慢问题解决
Maven项目进行构件的时候速度会很慢,由于maven每次进行创建的时候回去网上下载artheType-catalog.xml文件,而且,现在这个文件比较大,已经接近5M的大小,所以,在网速不好的情况 ...
- 转】Maven学习总结(三)——使用Maven构建项目
原博文出自于: http://www.cnblogs.com/xdp-gacl/p/4240930.html 感谢! maven作为一个高度自动化构建工具,本身提供了构建项目的功能,下面就来体验一下使 ...
- springboot+maven快速构建项目
最近公司运用springboot构建项目,确实比ssh搭建要快很多.springboot官方学习网站 1.首先要下载maven,用maven管理项目很方便,下载完maven配置好环境,maven我就不 ...
- Maven学习-构建项目
创建项目 运行如下命令会创建一个简单的Maven项目. mvn archetype:create -DgroupId=com.netease.learn -DartifactId=simple -Dp ...
随机推荐
- ASP.NET MVC+Bootstrap 实现短信验证
短信验证大家都已经非常熟悉了,基本上每天都在接触手机短信的验证码,比方某宝,某东购物.站点注冊,网上银行等等,都要验证我们的手机号码真实性.这样做有什么优点呢. 曾经咱们在做站点的时候.为了提高用户注 ...
- SecureCRT 命令行备注
> 查出某个域名绑定的IP nslookup api.kaixin001.com Non-authoritative answer: Name: a.kaixin001.com Addre ...
- 算法笔记_118:算法集训之结果填空题集二(Java)
目录 1 欧拉与鸡蛋 2 巧排扑克牌 3 排座位 4 黄金队列 5 汉诺塔计数 6 猜生日 7 棋盘上的麦子 8 国庆星期日 9 找素数 10 填写算式 11 取字母组成串 1 欧拉与鸡蛋 大数 ...
- redis_session_store.py
# -*- coding: utf-8 -*- """ Created on 09/11/2011 @author: Carlo Pires <carlopires ...
- Oracle内存管理(之二)
[深入解析--eygle] 学习笔记 1.2.2 UGA和CGA UGA(用户全局区)由用户会话数据.游标状态和索引区组成.在共享server模式下,一个共享服务进程被多个用户进程共享,此时UGA是S ...
- css中clear属性的认识
今天在看博客园的页面布局时发现有不少空白的div只有css属性:clear:both. 然后去W3C文档里和百度补脑了一下,总结如下: 这是之前我写的一段测试代码: <div style=&qu ...
- iOS实现在webview页面内点击链接,跳转指定App
早上和UI刚谈到这个需求,然后自己试了一下,发现还是蛮简单的,记录一下: 思路分析: iOS内应用之间跳转都会用到 URL Schemes这个东西,简单的讲,这个就是用来定义app身份的一个id识别, ...
- 给定随机数列求第k大的数字
原来STL我还是有很多不知道的地方 STL 采用的算法是: 当数组长度 <= 3时, 采用插入排序. 当长度 > 3时, 采用快排 Partition 的思想,也就是说类似快速排序(这里不 ...
- HDU 2256 Problem of Precision (矩阵乘法)
Problem of Precision Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Oth ...
- 移动端混合开发----ionic
目前移动端分为三大主流:纯原生.混合开发.web App,随着手机硬件的升级,公司们似乎偏好于web页面开发,而混合开发相对纯web App似乎更受大公司青睐,所谓混合开发俾人理解为,原生代码(iOS ...