更多内容请参考官方文档:http://maven.apache.org/guides/index.html

官方文档很详细,基本上可以查找到一切相关的内容。

另外,快速入门可参考视频:孔浩的maven视频。

一、快速入门

(一)搭建环境

1、下载maven,并将之解压

或者直接使用yum 来安装



2、配置环境变量

export PATH=/home/jediael/setupfile/apache-maven-3.1.1/bin:$PATH



3、验证环境

[jediael@master maven_demo]$ mvn -v

Apache Maven 3.1.1 (0728685237757ffbf44136acec0402957f723d9a; 2013-09-17 23:22:22+0800)

Maven home: /home/jediael/setupfile/apache-maven-3.1.1

Java version: 1.7.0_51, vendor: Oracle Corporation

Java home: /usr/java/jdk1.7.0_51/jre

Default locale: en_US, platform encoding: UTF-8

OS name: "linux", version: "2.6.32-431.17.1.el6.x86_64", arch: "amd64", family: "unix"



(二)项目编写

1、建立如下目录结构

[jediael@master maven_demo]$ tree

.

├── pom.xml

└── src

    ├── main

    │   └── java

    │       └── com

    │           └── ljh

    │               └── mavendemo

    │                   └── HelloMaven.java

    └── test

        └── java

            └── com

                └── ljh

                    └── mavendemo

                        └── HelloMavenTest.java



11 directories, 3 files



2、HelloMaven.java内容如下

package com.ljh.mavendemo;

public class HelloMaven{

    public String sayHello(String s){

        return "hello:"+s;

    }

    public static void main(String[] args){

        HelloMaven hm = new HelloMaven();

        System.out.println(hm.sayHello("maven"));

    }



}



3、HelloMavenTest.java内容如下:

package com.ljh.mavendemo;



import org.junit.*;

import static org.junit.Assert.*;

public class HelloMavenTest{

    

    @Test

    public void testSayHello(){

        HelloMaven hm = new HelloMaven();

        assertEquals("hello:Jason",hm.sayHello("Jason"));

   }

}



4、pox.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.ljh.mvn</groupId>

  <artifactId>mavendemo</artifactId>

  <packaging>jar</packaging>

  <version>1.0-SNAPSHOT</version>

  <name>mavendeom</name>

  <dependencies>

    <dependency>

      <groupId>junit</groupId>

      <artifactId>junit</artifactId>

      <version>4.10</version>

      <scope>test</scope>

    </dependency>

  </dependencies>

</project>





(三)运行项目

1、编译项目

$ mvn compile



2、运行测试

$ mvn test



3、也可以对项目直接打包成jar包

$ mvn package

此过程也会执行test



4、若所生成的jar包中包括main方法,则可以使用以下命令执行

$ java -cp target/mavendemo-1.0-SNAPSHOT.jar com.ljh.mavendemo.HelloMaven

hello:maven



经过这些步骤后的目录结构如下:

[jediael@master maven_demo]$ tree

.

├── pom.xml

├── src

│   ├── main

│   │   └── java

│   │       └── com

│   │           └── ljh

│   │               └── mavendemo

│   │                   └── HelloMaven.java

│   └── test

│       └── java

│           └── com

│               └── ljh

│                   └── mavendemo

│                       └── HelloMavenTest.java

└── target

    ├── classes

    │   └── com

    │       └── ljh

    │           └── mavendemo

    │               └── HelloMaven.class

    ├── maven-archiver

    │   └── pom.properties

    ├── mavendemo-1.0-SNAPSHOT.jar

    ├── surefire-reports

    │   ├── com.ljh.mavendemo.HelloMavenTest.txt

    │   └── TEST-com.ljh.mavendemo.HelloMavenTest.xml

    └── test-classes

        └── com

            └── ljh

                └── mavendemo

                    └── HelloMavenTest.class



22 directories, 9 files

(四)项目间互相引用

1、将上述项目安装至maven库中

$ mvn install

这会在/home/jediael/.m2/repository/com/ljh目录下生成以下文件:

.

└── mvn

    └── mavendemo

        ├── 1.0-SNAPSHOT

        │   ├── mavendemo-1.0-SNAPSHOT.jar

        │   ├── mavendemo-1.0-SNAPSHOT.pom

        │   ├── maven-metadata-local.xml

        │   └── _remote.repositories

        └── maven-metadata-local.xml



3 directories, 5 files

2、在其它项目中即可通过以下内容对上述项目进行引用

  <dependencies>

    <dependency>

      <groupId>com.ljh.mvn</groupId>

      <artifactId>mavendemo</artifactId>

      <version>.0-SNAPSHOT</version>

    </dependency>

  </dependencies>

二、其它内容

1、设置本地仓库的位置

修改$MAVEN_HOME/setting.xml文件中的内容:

  <!-- localRepository

   | The path to the local repository maven will use to store artifacts.

   |

   | Default: ${user.home}/.m2/repository

  <localRepository>/path/to/local/repo</localRepository>

  —>

默认是~/.m2/repository,可根据实际情况修改



2、自动生成目录结构

由于使用maven需要按照特定的目录结构放置文件,而每次手工创建目录及pom.xml太麻烦,因此maven提供了工具用于自动创建相关目录及pom.xml。

mvn archetype:generate -DgroupId=com.ljh.demo -DartifactId=helloworld -Dversion=0.0.1-SNAPSHOT -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false

[jediael@master test]$ tree  helloworld/

helloworld/

├── pom.xml

└── src

    ├── main

    │   └── java

    │       └── com

    │           └── ljh

    │               └── demo

    │                   └── App.java

    └── test

        └── java

            └── com

                └── ljh

                    └── demo

                        └── AppTest.java



11 directories, 3 files

三、在eclipse中使用maven

(一)配置maven

可以使用eclipse中的默认配置,但一般会指定自己使用的maven。

1、指定maven安装目录

2、修改配置文件的路径

版权声明:本文为博主原创文章,未经博主允许不得转载。

Maven基础教程 分类: C_OHTERS 2015-04-10 22:53 232人阅读 评论(0) 收藏的更多相关文章

  1. 【Solr专题之九】SolrJ教程 分类: H4_SOLR/LUCENCE 2014-07-28 14:31 2351人阅读 评论(0) 收藏

    一.SolrJ基础 1.相关资料 API:http://lucene.apache.org/solr/4_9_0/solr-solrj/ apache_solr_ref_guide_4.9.pdf:C ...

  2. 全方位分析Objcetive-C Runtime 分类: ios技术 2015-03-11 22:29 77人阅读 评论(0) 收藏

    本文详细整理了 Cocoa 的 Runtime 系统的知识,它使得 Objective-C 如虎添翼,具备了灵活的动态特性,使这门古老的语言焕发生机.主要内容如下: 引言 简介 与Runtime交互 ...

  3. IOS之富文本编辑 分类: ios技术 2015-03-06 22:51 89人阅读 评论(0) 收藏

    之前做项目时遇到一个问题:          使用UITextView显示一段电影的简介,由于字数比较多,所以字体设置的很小,行间距和段间距也很小,一大段文字挤在一起看起来很别扭,想要把行间距调大,结 ...

  4. C/C++文字常量与常变量的概念与区别 分类: C/C++ 2015-06-10 22:56 111人阅读 评论(0) 收藏

    以下代码使用平台是Windows 64bits+VS2012. 在C/C++编程时,经常遇到以下几个概念:常量.文字常量.符号常量.字面常量.常变量.字符串常量和字符常量,网上博客资料也是千篇千律,不 ...

  5. 【转载】 Searching过程粗略梳理 分类: H4_SOLR/LUCENCE 2014-07-25 22:59 316人阅读 评论(0) 收藏

    转载自:http://www.cnblogs.com/huangfox/archive/2012/02/09/2344686.html solr-searching过程分析(一) --searchin ...

  6. MATLAB符号运算 分类: 图像处理 2015-07-31 22:53 3人阅读 评论(0) 收藏

    1.符号运算 使用MATLAB可以进行多项式乘除运算,也可以进行因式分解. 例1. 多项式乘除运算(x+3)3 >> syms x; >> expand((x+3)^3) an ...

  7. 快速幂取模 分类: ACM TYPE 2014-08-29 22:01 95人阅读 评论(0) 收藏

    #include<stdio.h> #include<stdlib.h> //快速幂算法,数论二分 long long powermod(int a,int b, int c) ...

  8. NYOJ-44 子串和 AC 分类: NYOJ 2014-01-04 22:53 154人阅读 评论(0) 收藏

    作为菜鸟一枚,对子串和的代码完全就是硬算 的..结果是TLE #include<stdio.h> int jh(int x,int y,int num[],int sum[]); int ...

  9. Red and Black(BFS or DFS) 分类: dfs bfs 2015-07-05 22:52 2人阅读 评论(0) 收藏

    Description There is a rectangular room, covered with square tiles. Each tile is colored either red ...

随机推荐

  1. Spark MLlib回归算法LinearRegression

    算法说明 线性回归是利用称为线性回归方程的函数对一个或多个自变量和因变量之间关系进行建模的一种回归分析方法,只有一个自变量的情况称为简单回归,大于一个自变量情况的叫做多元回归,在实际情况中大多数都是多 ...

  2. 6lession-基本数据类型

    因为自己是根据网上教程学习的,所以以下内容参考自 http://www.w3cschool.cc/python/python-variable-types.html python支持物种数据类型,分别 ...

  3. 判断移动端跳转,从移动端来的不跳转。利用localStorage保存状态,window.location.pathname跳转不同的url

    手机访问 www.yourdomain.com 跳转,从m.yourdomain.com来的不跳转. 访问www.yourdomain.com/category8, 跳转到m.yourdomain.c ...

  4. vue中watch函数的用法

    vue中watch函数: 不仅可以判断路由变化(上篇博客有介绍),还可以判断数据的变化 (1):首先写watch函数 (2):在data里定义值 (3):在methods里写方法 (4):使用值

  5. Spring学习总结(5)——IOC注入方式总结

    一.构造注入 在类被实例化的时候,它的构造方法被调用并且只能调用一次.所以它被用于类的初始化操作.<constructor-arg>是<bean>标签的子标签.通过其<v ...

  6. 洛谷——P1101 单词方阵

    https://www.luogu.org/problem/show?pid=1101#sub 题目描述 给一nXn的字母方阵,内可能蕴含多个“yizhong”单词.单词在方阵中是沿着同一方向连续摆放 ...

  7. APM2.8 Rover 自己主动巡航车设计(固件安装和设置)

    1.2 APM2.8软件安装与固件下载 下载Mission Planner这个地面基站软件,这里介绍的是windoews平台下的,在MAC或者linux下能够使用QGroundCont基于QT编写的地 ...

  8. Android怎样实现毛玻璃效果之Android高级模糊技术

    自从iOS系统引入了Blur效果,也就是所谓的毛玻璃.模糊化效果.磨砂效果.各大系统就開始竞相模仿,这是如何的一个效果呢,我们先来看一下,如以下的图片: 效果我们知道了,怎样在Android中实现呢. ...

  9. (转)oracle 启动监听 报“监听程序不支持服务” 解决

    转自 http://www.51testing.com/html/99/478599-842622.html 今天安装了oracle后,启动监听,报错如下:    启动tnslsnr: 请稍候... ...

  10. Mongodb总结3-稍微封装一下

    上次发表的2,纯粹是Demo,演示API的用法. 今天,稍微封装了下,看得更清楚. 考虑到不容易做得很有通用性,所以封装的一般,换种场景需要直接修改代码,但是有一部分是可以复用的. 最近项目,很可能只 ...