Maven应用
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上传之后,别的项目引用时 每次都会从库中下载,确保下载的是最新的,避免了重复更改配置文件版本号的问题
Maven应用的更多相关文章
- 【分享】标准springMVC+mybatis项目maven搭建最精简教程
文章由来:公司有个实习同学需要做毕业设计,不会搭建环境,我就代劳了,顺便分享给刚入门的小伙伴,我是自学的JAVA,所以我懂的.... (大图直接观看显示很模糊,请在图片上点击右键然后在新窗口打开看) ...
- 理解Maven中的SNAPSHOT版本和正式版本
Maven中建立的依赖管理方式基本已成为Java语言依赖管理的事实标准,Maven的替代者Gradle也基本沿用了Maven的依赖管理机制.在Maven依赖管理中,唯一标识一个依赖项是由该依赖项的三个 ...
- 【微框架】Maven +SpringBoot 集成 阿里大鱼 短信接口详解与Demo
Maven+springboot+阿里大于短信验证服务 纠结点:Maven库没有sdk,需要解决 Maven打包找不到相关类,需要解决 ps:最近好久没有写点东西了,项目太紧,今天来一篇 一.本文简介 ...
- 安装eclipse的maven插件
我们团队用maven来管理项目需要的库文件,其实以前都没听过maven,第一次接触这个,师兄要我直接去装下这个,开始以为还挺简单的,没想到中间遇到了一些小麻烦,现在把我成功安装maven的过程分享下, ...
- MAVEN学习-第一个Maven项目的构建
MAVEN安装成功之后就可以进行项目的构建和管理了: 为什么要用maven进行项目的构建和管理? 对于初学者来说一个最直接的也是最容易里的优点在于JAR包的管理,相对于以前开发一个项目的时候我们需要用 ...
- Maven 代理设置
在maven的安装目录下 %MAVEN_HOME%/conf/setting.xml 中进行设置 <proxies> <!-- proxy | Specificatio ...
- spring maven pom.xml设置
spring pom.xml设置 <?xml version="1.0" encoding="UTF-8"?> <project xmlns= ...
- maven依赖查询地址
http://search.maven.org/#search%7Cga%7C1%7C
- maven 中snapshot版本和release版本的区别
maven中的仓库分为两种,snapshot快照仓库和release发布仓库.snapshot快照仓库用于保存开发过程中的不稳定版本,release正式仓库则是用来保存稳定的发行版本.定义一个组件/模 ...
- Maven多模块,Dubbo分布式服务框架,SpringMVC,前后端分离项目,基础搭建,搭建过程出现的问题
现互联网公司后端架构常用到Spring+SpringMVC+MyBatis,通过Maven来构建.通过学习,我已经掌握了基本的搭建过程,写下基础文章为而后的深入学习奠定基础. 首先说一下这篇文章的主要 ...
随机推荐
- 【原】iOS学习42即时通信之XMPP(1)
1. 即时通信 1> 概述 即时通讯(Instant Messaging)是目前Internet上最为流行的通讯方式,各种各样的即时通讯软件也层出不穷,服务提供商也提供了越来越丰富的通讯服务功能 ...
- 【BZOJ1060】[ZJOI2007]时态同步 树形DP
[BZOJ1060][ZJOI2007]时态同步 Description 小Q在电子工艺实习课上学习焊接电路板.一块电路板由若干个元件组成,我们不妨称之为节点,并将其用数字1,2,3-.进行标号.电路 ...
- Coder-Strike 2014 - Round 1 D. Giving Awards
题目的意思是 老板给n个人发工资,x欠y的工资,the joy of person x from his brand new money reward will be much less, 老板想避免 ...
- [知识点]KMP算法
// 此博文为迁移而来,写于2015年5月24日,不代表本人现在的观点与看法.原始地址:http://blog.sina.com.cn/s/blog_6022c4720102w1iw.html 1.前 ...
- 【BZOJ】2172: Mario填格子
题意 \(3 * 3\)的网格,给出左上角的数字\(m\)和右下角的数字\(m\),如果当前格子有数字\(x\),格子左边有个数字\(y\),格子上面有个数字\(z\),则\(y|x, z|x\).格 ...
- 【POJ】1284 Primitive Roots
http://poj.org/problem?id=1284 题意:求一个素数p的原根个数.(p<=65535) #include <cstdio> #include <cst ...
- C#中常用的与编码有关的代码
如何将字符串转化为字符数组? char[] chars=str.ToArray(); 如何将字符串转化为字节数组? Encoding.ASCII.GetBytes(str); Encoding.Uni ...
- hbase的查询scan功能注意点(setStartRow, setStopRow)
来自http://hi.baidu.com/7636553/blog/item/982beb17713bc004972b43ee.html hbase的scan查询功能注意项: Scan scan = ...
- 如何用bat批处理编译swf项目
平时用FB等IDE编译多模块的游戏项目时,除了添加移除模块的操作很繁琐外,编译速度也非常之慢.而用bat来编译swf项目,速度非常快,稳定. 在此分享自己工作用的bat,每次运行会重新编译主模块Gam ...
- jquery .post .get中文参数乱码解决方法详解
jquery默认的编码为utf-8,做项目时有时处于项目需要用到ajax提交中文参数,乱码问题就很头疼了,折腾了许久终于弄出来了.为了便于传输,我们首先将需要用到的参数用javascript自带的函数 ...