Java项目管理工具-Maven

Java项目管理工具-Maven

[email protected]

2015年11月13日

 

1  目标:简单的管理项目的工具,不但具备ant那样单个工程生命周期管理,还能管理多个工程及其关系和版本的管理。

2 原理:基于Ant管理工程生命周期,基于POM模型管理多个工程(基于工程坐标)。

工程生命周期管理:继承Ant,Ant的工程管理方式在Maven中基本有效。

工程关系管理:POM提示了工程坐标概念,使用项目id+工程id+包类型+版本号确定工程的依赖关系的瞬时状态。每个坐标可以追溯到各个工程的依赖关系及版本,从而唯一确定项目的状态。多个工程可以共享各种库,只要指定坐标就可以获取。

版本库:各种版本的库存在于Maven的仓库(Repository)中,常用库一般在网络上,也可以用于本地,不常用的库可以在本地生成。

3 流程: 安装Maven,生成项目,编写业务,打包,使用。

参考:

http://www.oracle.com/technetwork/cn/community/java/apache-maven-getting-started-1-406235-zhs.html

3.1 安装:下载,配置

3.1.1安装(Windows):下载Maven,解压后设置Maven的环境变量。

Maven的安装路径:M2_HOME

Maven的执行路径:M2=%M2_HOME%\bin

注意:Maven需要JAVA_HOME环境变量。

 

测试安装结果:mvn –v

参考:http://maven.apache.org/install.html

3.1.2安装(Linux):下载Maven,解压后设置Maven的PATH路径。

参考:http://maven.apache.org/install.html

测试安装结果:mvn –v

[sf@localhostjar]$ exportPATH=/usr/java/apache-maven-3.3.3/bin:$PATH

[sf@localhostjar]$ echo $PATH

/usr/java/apache-maven-3.3.3/bin:/usr/java/apache-tomcat-8.0.24/bin:/usr/lib/jvm/jdk1.7.0_80/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/sf/bin

[sf@localhost jar]$ mvn -v

Apache Maven 3.3.3(7994120775791599e205a5524ec3e0dfe41d4a06; 2015-04-22T19:57:37+08:00)

Maven home:/usr/java/apache-maven-3.3.3

Java version:1.7.0_80, vendor: Oracle Corporation

Java home:/usr/lib/jvm/jdk1.7.0_80/jre

Default locale:en_US, platform encoding: UTF-8

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

[sf@localhostjar]$

3.2 生成项目:使用mvn命令行指定各个属性,自动生成pom和相关文件。

注意:第一次使用时会从网络下载相关的jar包和pom。

mvnarchetype:generate -DgroupId=com.mycompany.mvntest -DartifactI

d=helloworldtest-Dpackage=com.mycompany.mvntest.helloworld -Dversion=1.0-SNAPSH

OT

3.3 编写业务:项目自动生成app.java,从此位置开始进行业务编写。

//app.java

packagecom.mycompany.mvntest.helloworld;

 

/**

 * Hello world!

 *

 */

public class App

{

    public static void main( String[] args )

    {

        System.out.println( "Hello World,Maven!");

    }

}

3.4 打包:mvnpackage

切换到目标工程下(具有pom.xml的目录),执行mvn package 命令,将工程打包(默认是jar)。

工程将进行编译,并在target目录下生成jar和各种相关文件。

 

3.5 使用:使用java调用生成的jar包。

java -cptarget/helloworldtest-1.0-SNAPSHOT.jar com.mycompany.mvntest.helloworld.App

4 方法: Maven使用

参考:http://www.iteye.com/topic/1123221

4.1 组织方式: pom.xml

参考:http://blog.csdn.net/longeremmy/article/details/9670619 http://www.iteye.com/topic/1123232 http://baike.baidu.com/subview/175698/13751348.htm#viewPageContent

详细参见:http://www.cnblogs.com/qq78292959/p/3711501.html

根节点:project。

pom版本:modelVersion。

工程坐标:groupId,artifactId,packing,version。

依赖项:dependencies。

项目的其它属性:名称name,网址url,描述description等。

作用范围:scope,默认是compile。用于指定依赖的classpath作用于complie,test或runtime。provided表示作用于compile和test。system与provided范围相同,但可以引用环境变量(不可移植,不推荐)。

//pom.xml

<projectxmlns="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.0http://maven.apache.org/maven-v4_0_0.xsd">

 <modelVersion>4.0.0</modelVersion>

  <groupId>com.mycompany.mvntest</groupId>

 <artifactId>helloworldtest</artifactId>

 <packaging>jar</packaging>

 <version>1.0-SNAPSHOT</version>

  <name>helloworldtest</name>

 <url>http://maven.apache.org</url>

  <dependencies>

    <dependency>

      <groupId>junit</groupId>

     <artifactId>junit</artifactId>

      <version>3.8.1</version>

      <scope>test</scope>

    </dependency>

  </dependencies>

</project>

4.2 工程坐标:项目id:工程id:包类型:版本号。

在pom.xml中表现为各个节点。

 <groupId>com.mycompany.mvntest</groupId>

 <artifactId>helloworldtest</artifactId>

  <packaging>jar</packaging>

  <version>1.0-SNAPSHOT</version>

版本号:主版本.次版本.增量版本-版本类型。

参考:http://juvenshun.iteye.com/blog/376422

4.3 生命周期:mvn进行项目管理的过程

主要包括default(默认过程,编译,打包等),clean(清理项目生成),site(站点生成)。

参考:http://www.iteye.com/topic/1123221 http://www.iteye.com/topic/1123228

4.3.1清理mvn clean:将mvn生成的编译、打包等内容全部删除(保留生成的内容)。

4.3.2编译mvn compile:编译项目,生成classes。

4.3.3测试mvn test:调用junit执行测试。

4.3.4打包mvn package:执行编译、测试、打包工作。

4.3.5安装包到本地仓库mvn install:执行编译、测试、打包、安装工作。将项目生成的jar安装到本地仓库中,可以被其它工程使用。

 

4.3.6安装到远程仓库mvn deploy:与install相同的过程,但被安装到远程仓库。

如果版本类型为SNAPSHOT则提交到快速库。

如果版本类型为RELEASE则提交到发布库。

4.3.7启动tomcat服务:mvntomcat:run

 

4.3.8清除以前的包后重新打包,跳过测试类:mvn clean package-Dmaven.test.skip=true

 

4.3.9mvn eclipse:eclipse 生成eclipse项目文件

 

4.4 任务:插件和目标。

插件指一个实用程序,如javac,jar等。

目标指一个实用程序的特定处理方式,如archetype的generate,create等。

可以指定参数。

mvn archetype:generate-DgroupId=com.mycompany.mvnt

est -DartifactId=helloworldtest -Dpackage=com.mycompany.mvntest.helloworld-Dver

sion=1.0-SNAPSHOT

4.5 帮助:mvnhelp:describe –Dplugin=插件名 【–Dgoal=目标名】 【–Ddetail】。

mvn help:describe-Dplugin=compiler -Dgoal=compile –Ddetail

 

4.6 依赖关系:通过指定一个dependency(指定工程坐标)来指定依赖的工程。

依赖可以传递,删除、添加等。

类型由type指定(对应坐标的packing)。

可以指定scope。

参见:http://www.iteye.com/topic/1123232

  <dependencies>

    <dependency>

      <groupId>junit</groupId>

     <artifactId>junit</artifactId>

      <version>3.8.1</version>

      <scope>test</scope>

    </dependency>

  </dependencies>

4.7 仓库:是指用于共享的程序存储位置。

Maven具有远程和本地两种仓库。

远程仓库位于网络中,用于共享。

本地仓库是本地使用的所有程序。Windows下位于C:\Users\用户名\.m2\repository,Linux下位于:~/.m2/repository。

设置本地仓库位置:

设置远程仓库位置:

4.8 全局设置文件:settings.xml

位于Maven安装目录conf目录中。这是个模板位置,应该将其copy到本地仓库中(用户名/.m2/目录中,与repository同级)才能起作用。

可以指定本地仓库位置,服务器,镜像,代理等。

设置方法参见:http://www.cnblogs.com/shipengzhi/archive/2011/05/16/2047692.html

参考:

http://blog.sonatype.com/2010/11/what-to-do-when-nexus-returns-401/#.VkqiY6bvOUk

4.8.1查看当前settings:mvnhelp:effective-settings.

参考:http://blog.sonatype.com/2010/11/what-to-do-when-nexus-returns-401/#.VkqiY6bvOUk

5 Maven的Eclipse使用

注意:Eclipse 4.5自带Maven插件。

注意:linux与windows操作相同。

5.1 JavaApplication

5.1.1下载M2Eclipse插件:Help-》Eclipse Marketplace,下载Maven Integration forEclipse。

5.1.2创建Maven项目:File->New->Others-》Maven Project。

5.1.3选择项目类型:quickstart。所有的类型都列出来,可以查看不同的类型。

 

5.1.4设置工程坐标

5.1.5编写业务:自动生成app.java

5.1.6运行:RunAs-》JavaApplication

5.1.7打包&

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

弗里曼的小伙伴

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值