`
bencmai
  • 浏览: 36999 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Maven 学习笔记(一)--搭建

阅读更多

 

       因为厌倦了Ant总是要明确指定要做什么事它才会去做什么事的笨构建方式。这段时间终于下定决心,着手全面转向使用Maven来作项目管理和构建,今天开始也做下使用笔记。

 

    以前好几次都决心把项目管理的工作都转到Maven,但一直没有下决心,也是断断续续的看了Maven的很多资料,是时候发挥下它的价值了。这是第一篇应使笔记,从搭建Maven的第一步开始,今后陆续会把使用的整个过程和碰到的问题写进来。

 

    1.到官方站点  下载Maven (当前版本2.10) 并解压到 $USERHOME 目录下  我使用的SuSe11.1 Linux x86_64 系统,所以我的解压目录是/home/bencmai/MyProgram/apache-maven-2.1.0.如果你使用的是其他系统,你大可以解压到任意你喜欢的地方。

 

     2.创建一个符号链接,这样能更容易使用,升级Maven的时候也不再需要改变环境变量

bencmai@benc-linux:~> su
口令:******
#(这句只需做一此,你可以把符号连接放任何地方,记得相应修改下两句的环境变量输出)
benc-linux:/home/bencmai #  ln -s /home/bencmai/MyProgram/apache-maven-2.1.0 maven
  
benc-linux:/home/bencmai # export M2_HOME=/usr/local/maven

benc-linux:/home/bencmai # export PATH=${M2_HOME}/bin:${PATH}


#如果你想不用每次都得敲输出环境变量,就把这两句放到你相应用户的 .bashrc 文件中,我的是(/home/bencmai/.bashrc)
benc-linux:/home/bencmai # export M2_HOME=/usr/local/maven
benc-linux:/home/bencmai # export PATH=${M2_HOME}/bin:${PATH}

#执行mvn -v命令验证下是否正确安装
 benc-linux:/home/bencmai # mvn -v

Apache Maven 2.1.0 (r755702; 2009-03-19 03:10:27+0800)
Java version: 1.6.0_13
Java home: /usr/lib64/jvm/java-1.6.0-sun-1.6.0/jre
Default locale: zh_CN, platform encoding: UTF-8
OS name: "linux" version: "2.6.27.21-0.1-default" arch: "amd64" Family: "unix"
#有反应并输出Maven的一些版本信息,说明安装正确.可以那来干活了,呵呵

 

   3.创建我们的第一个Maven项目,进入我们用户的老家(/home/bencmai/)

 

#回用户老家
bencmai@benc-linux:/> cd

#擦看当前老家目录结构
bencmai@benc-linux:~> ls

bin  Desktop  Documents  example  MyProgram  public_html  SoftWeave 

#用mvn在用户老家创建一个简单的Maven原型项目
bencmai@benc-linux:~> mvn archetype:create -DgroupId=com.yotexs.srp \

>                                          -DartifactId=yotexs \

>                                          -DpackageName=com.yotexs

[INFO] Scanning for projects...
[INFO] Searching repository for plugin with prefix: 'archetype'.
[INFO] ------------------------------------------------------------------------
[INFO] Building Maven Default Project
[INFO]    task-segment: [archetype:create] (aggregator-style)
[INFO] ------------------------------------------------------------------------
Downloading: http://repo1.maven.org/maven2/com/jcraft/jsch/0.1.27/jsch-0.1.27.pom
965b downloaded  (jsch-0.1.27.pom)
[INFO] Setting property: classpath.resource.loader.class => 'org.codehaus.plexus.velocity.ContextClassLoaderResourceLoader'.
[INFO] Setting property: velocimacro.messages.on => 'false'.
[INFO] Setting property: resource.loader => 'classpath'.
[INFO] Setting property: resource.manager.logwhenfound => 'false'.
[INFO] [archetype:create]
[WARNING] This goal is deprecated. Please use mvn archetype:generate instead
[INFO] ----------------------------------------------------------------------------
[INFO] Using following parameters for creating OldArchetype: maven-archetype-quickstart:RELEASE
[INFO] ----------------------------------------------------------------------------
[INFO] Parameter: groupId, Value: com.yotexs.srp
[INFO] Parameter: packageName, Value: com.yotexs
[INFO] Parameter: package, Value: com.yotexs
[INFO] Parameter: artifactId, Value: yotexs
[INFO] Parameter: basedir, Value: /home/bencmai
[INFO] Parameter: version, Value: 1.0-SNAPSHOT
[INFO] ********************* End of debug info from resources from generated POM ***********************
[INFO] OldArchetype created in dir: /home/bencmai/yotexs
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESSFUL
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 3 seconds
[INFO] Finished at: Sun May 24 08:38:55 HKT 2009
[INFO] Final Memory: 16M/168M
[INFO] ------------------------------------------------------------------------

bencmai@benc-linux:~> cd yotexs

bencmai@benc-linux:~/yotexs> tree

./
yotexs


|--
 pom.xml


`-- src
    |-- 


main


    |   `-- java
    |       `-- com
    |           `-- yotexs
    |               `-- App.java
    `--
 test


        `-- java
            `-- com
                `-- yotexs
                    `-- AppTest.java


9 directories, 3 files
bencmai@benc-linux:~/yotexs> 

 就这么简单,我们的第一个HelloWorld级别的(yotexs)项目就建成了,虽然很原始,但所有的配置,目录结构,Maven都按照它自身的所谓的约定优于配置 的原则自动给我们构建好了。

 

archetype:create 称为一个Maven目标 (goal) ,类似于一个Ant目标 (target);它们都描述了将会在构建中完成的工作单元,Maven有许多可用的archetype,上面用到的 archetype:create 目标只是其中最原始的一个,如果你想选其他的目标,删除之前构建的 yotexs项目后,可以用 archetype:generate 代替 archetype:create ,再来构建一此,这样我们就可以选择你所需要的项目结构了,我们再来全程完整测试一遍

bencmai@benc-linux:~> mvn archetype:generate -DgroupId=com.yotexs.srp -DartifactId=yotexs -DpackageName=com.yotex
    #(1)创建项目
[INFO] Scanning for projects...
[INFO] Searching repository for plugin with prefix: 'archetype'.
[INFO] ------------------------------------------------------------------------
[INFO] Building Maven Default Project
[INFO]    task-segment: [archetype:generate] (aggregator-style)
[INFO] ------------------------------------------------------------------------
[INFO] Preparing archetype:generate
[INFO] No goals needed for project - skipping
[INFO] Setting property: classpath.resource.loader.class => 'org.codehaus.plexus.velocity.ContextClassLoaderResourceLoader'.
[INFO] Setting property: velocimacro.messages.on => 'false'.
[INFO] Setting property: resource.loader => 'classpath'.
[INFO] Setting property: resource.manager.logwhenfound => 'false'.
[INFO] [archetype:generate]
[INFO] Generating project in Interactive mode
[INFO] No archetype defined. Using maven-archetype-quickstart (org.apache.maven.archetypes:maven-archetype-quickstart:1.0)
Choose archetype:
1: internal -> appfuse-basic-jsf (AppFuse archetype for creating a web application with Hibernate, Spring and JSF)
2: internal -> appfuse-basic-spring (AppFuse archetype for creating a web application with Hibernate, Spring and Spring MVC)
3: internal -> appfuse-basic-struts (AppFuse archetype for creating a web application with Hibernate, Spring and Struts 2)
4: internal -> appfuse-basic-tapestry (AppFuse archetype for creating a web application with Hibernate, Spring and Tapestry 4)
5: internal -> appfuse-core (AppFuse archetype for creating a jar application with Hibernate and Spring and XFire)
6: internal -> appfuse-modular-jsf (AppFuse archetype for creating a modular application with Hibernate, Spring and JSF)
7: internal -> appfuse-modular-spring (AppFuse archetype for creating a modular application with Hibernate, Spring and Spring MVC)
8: internal -> appfuse-modular-struts (AppFuse archetype for creating a modular application with Hibernate, Spring and Struts 2)
9: internal -> appfuse-modular-tapestry (AppFuse archetype for creating a modular application with Hibernate, Spring and Tapestry 4)
10: internal -> maven-archetype-j2ee-simple (A simple J2EE Java application)
11: internal -> maven-archetype-marmalade-mojo (A Maven plugin development project using marmalade)
12: internal -> maven-archetype-mojo (A Maven Java plugin development project)
13: internal -> maven-archetype-portlet (A simple portlet application)
14: internal -> maven-archetype-profiles ()
15: internal -> maven-archetype-quickstart ()

16: internal -> maven-archetype-site-simple (A simple site generation project)
17: internal -> maven-archetype-site (A more complex site project)
18: internal -> maven-archetype-webapp (A simple Java web application)
19: internal -> jini-service-archetype (Archetype for Jini service project creation)
20: internal -> softeu-archetype-seam (JSF+Facelets+Seam Archetype)
21: internal -> softeu-archetype-seam-simple (JSF+Facelets+Seam (no persistence) Archetype)
22: internal -> softeu-archetype-jsf (JSF+Facelets Archetype)
23: internal -> jpa-maven-archetype (JPA application)
24: internal -> spring-osgi-bundle-archetype (Spring-OSGi archetype)
25: internal -> confluence-plugin-archetype (Atlassian Confluence plugin archetype)
26: internal -> jira-plugin-archetype (Atlassian JIRA plugin archetype)
27: internal -> maven-archetype-har (Hibernate Archive)
28: internal -> maven-archetype-sar (JBoss Service Archive)
29: internal -> wicket-archetype-quickstart (A simple Apache Wicket project)
30: internal -> scala-archetype-simple (A simple scala project)
31: internal -> lift-archetype-blank (A blank/empty liftweb project)
32: internal -> lift-archetype-basic (The basic (liftweb) project)
33: internal -> cocoon-22-archetype-block-plain ([http://cocoon.apache.org/2.2/maven-plugins/])
34: internal -> cocoon-22-archetype-block ([http://cocoon.apache.org/2.2/maven-plugins/])
35: internal -> cocoon-22-archetype-webapp ([http://cocoon.apache.org/2.2/maven-plugins/])
36: internal -> myfaces-archetype-helloworld (A simple archetype using MyFaces)
37: internal -> myfaces-archetype-helloworld-facelets (A simple archetype using MyFaces and facelets)
38: internal -> myfaces-archetype-trinidad (A simple archetype using Myfaces and Trinidad)
39: internal -> myfaces-archetype-jsfcomponents (A simple archetype for create custom JSF components using MyFaces)
40: internal -> gmaven-archetype-basic (Groovy basic archetype)
41: internal -> gmaven-archetype-mojo (Groovy mojo archetype)
Choose a number:  (1/2/3/4/5/6/7/8/9/10/11/12/13/14/15/16/17/18/19/20/21/22/23/24/25/26/27/28/29/30/31/32/33/34/35/36/37/38/39/40/41) 15: :
 #(2)选这项目原型和配置
Define value for version:  1.0-SNAPSHOT: : 
Confirm properties configuration:
groupId: com.yotexs.srp
artifactId: yotexs
version: 1.0-SNAPSHOT
package: com.yotexs.srp
 Y: : 
 #(3) 确认配置信息
[INFO] ----------------------------------------------------------------------------
[INFO] Using following parameters for creating OldArchetype: maven-archetype-quickstart:RELEASE
[INFO] ----------------------------------------------------------------------------
[INFO] Parameter: groupId, Value: com.yotexs.srp
[INFO] Parameter: packageName, Value: com.yotexs.srp
[INFO] Parameter: package, Value: com.yotexs.srp
[INFO] Parameter: artifactId, Value: yotexs
[INFO] Parameter: basedir, Value: /home/bencmai
[INFO] Parameter: version, Value: 1.0-SNAPSHOT
[INFO] ********************* End of debug info from resources from generated POM ***********************
[INFO] OldArchetype created in dir: /home/bencmai/yotexs
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESSFUL(自动创建)
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 5 seconds
[INFO] Finished at: Sun May 24 10:01:04 HKT 2009
[INFO] Final Memory: 16M/168M
[INFO] ------------------------------------------------------------------------

bencmai@benc-linux:~> tree yotexs
      #(4)查看下Maven为我们创建的项目结构
yotexs
|-- pom.xml
`-- src
    |-- main
    |   `-- java
    |       `-- com
    |           `-- yotexs
    |               `-- srp
    |                   `-- App.java
    `-- test
        `-- java
            `-- com
                `-- yotexs
                    `-- srp
                        `-- AppTest.java

11 directories, 3 files


bencmai@benc-linux:~> cd yotexs
                #(5) 进入刚创建的项目目录中
bencmai@benc-linux:~/yotexs> mvn install
  #(6) 执行项目构建指令
[INFO] Scanning for projects...
[INFO] ------------------------------------------------------------------------
[INFO] Building yotexs
[INFO]    task-segment: [install]
[INFO] ------------------------------------------------------------------------
[INFO] [resources:resources]
[WARNING] Using platform encoding (UTF-8 actually) to copy filtered resources, i.e. build is platform dependent!
[INFO] skip non existing resourceDirectory /home/bencmai/yotexs/src/main/resources
[INFO] [compiler:compile]
[INFO] Compiling 1 source file to /home/bencmai/yotexs/target/classes
[INFO] [resources:testResources]
[WARNING] Using platform encoding (UTF-8 actually) to copy filtered resources, i.e. build is platform dependent!
[INFO] skip non existing resourceDirectory /home/bencmai/yotexs/src/test/resources
[INFO] [compiler:testCompile]
[INFO] Compiling 1 source file to /home/bencmai/yotexs/target/test-classes
[INFO] [surefire:test]
[INFO] Surefire report directory: /home/bencmai/yotexs/target/surefire-reports

-------------------------------------------------------
 T E S T S(自动测试)
-------------------------------------------------------
Running com.yotexs.srp.AppTest
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.046 sec

Results :

Tests run: 1, Failures: 0, Errors: 0, Skipped: 0

[INFO] [jar:jar]
[INFO] Building jar: /home/bencmai/yotexs/target/yotexs-1.0-SNAPSHOT.jar
[INFO] [install:install]
[INFO] Installing /home/bencmai/yotexs/target/yotexs-1.0-SNAPSHOT.jar to /home/bencmai/.m2/repository/com/yotexs/srp/yotexs/1.0-SNAPSHOT/yotexs-1.0-SNAPSHOT.jar
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESSFUL
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 4 seconds
[INFO] Finished at: Sun May 24 10:01:20 HKT 2009
[INFO] Final Memory: 26M/173M
[INFO] ------------------------------------------------------------------------
bencmai@benc-linux:~/yotexs> cd
 ..
bencmai@benc-linux:~> tree yotexs
        #(6) 我们查看一下Maven构建完后都干了些什么 

yotexs
|-- pom.xml
|-- src
|   |-- main
|   |   `-- java
|   |       `-- com
|   |           `-- yotexs
|   |               `-- srp
|   |                   `-- App.java
|   `-- test
|       `-- java
|           `-- com
|               `-- yotexs
|                   `-- srp
|                       `-- AppTest.java
`-- target
    |-- classes
    |   `-- com
    |       `-- yotexs
    |           `-- srp
    |               `-- App.class
    |-- maven-archiver
    |   `-- pom.properties
    |-- pom-transformed.xml
    |-- surefire-reports
    |   |-- TEST-com.yotexs.srp.AppTest.xml
    |   `-- com.yotexs.srp.AppTest.txt
    |-- test-classes
    |   `-- com
    |       `-- yotexs
    |           `-- srp
    |               `-- AppTest.class
    `-- yotexs-1.0-SNAPSHOT.jar

22 directories, 10 files

bencmai@benc-linux:~> cd yotexs
          #(6) 进入我们的项目目录,执行一下我们构建好的HelloWorld 程序
bencmai@benc-linux:~/yotexs> java -cp target/yotexs-1.0-SNAPSHOT.jar com.yotexs.srp.App

Hello World!

bencmai@benc-linux:~/yotexs> 

 Maven 让我们的项目从建立到测试到构建发布,都如此的简单。呵呵,方便之极

 

环境搭建好了,下一篇,我们将开始用Maven做点实际的事情了

分享到:
评论

相关推荐

    maven学习笔记

    maven学习笔记,maven的介绍与使用,主要是介绍了maven搭建工程的过程

    培训机构传出的maven学习笔记

    视频太大了就不上传了,有学习笔记就足够了,对于如何搭建maven项目非常有帮助

    Maven学习笔记

    Maven详细学习笔记,包括Maven搭建,仓库,两个工程之间调用和使用!

    maven私服nexus-2.11.4-01.rar

    rar文件里包含nexus-2.11.4-01-bundle.tar.gz文件用于在linux系统上搭建maven私服

    maven 配置与使用

    包含了<<maven权威指南>>,maven官方api使用等,自己的maven笔记等详细的maven使用教程,同时还包含了maven客户端搭建,服务器配置于搭建的详细资料,是以整套的maven学习资料.

    学习笔记-环境搭建

    使用SpringBoot框架,IDE使用IDEA,采用maven进行项目管理。 对用户做权限管控,以及支持多个数据库。 项目分模块 简单配置及使用动态数据源 实现用户权限控制 模拟测试 前端: 使用Ant Design Pro脚手架 摸黑前行 ...

    springboot学习思维笔记.xmind

    springboot学习笔记 spring基础 Spring概述 Spring的简史 xml配置 注解配置 java配置 Spring概述 Spring的模块 核心容器CoreContainer Spring-Core Spring-Beans ...

    Java秒杀系统方案优化高性能高并发学习实战源代码以及笔记..zip

    Java秒杀系统方案优化高性能高并发学习实战源代码以及笔记..zip 章节笔记 第1章-课程介绍及项目框架搭建 知识点 使用spring boot 搭建项目基础框架 使用Thymeleaf做页面展示,封装Result统一结果 集成 mybatis + ...

    Learning-Notes:学习笔记

    学习笔记 后端开发 Java maven netty Redis Spring Spring4新特性 Spring使用注意事项 Spring验证Validation SpringBoot 开发知识 相关技术名词 开发技术框架工具整理 架构知识 开发过程注意事项整理 常用开发技巧 ...

    Ability_Note:自己的学习笔记

    Ability_Note概述本项目是Gudao的个人学习笔记记录着自己在IT届的成长过程学习路径GitHub项目中添加开源项目Gitgit中的高级命令MQActiveMQ安装并使用RabbitMQ安装,后期需补充说明RocketMQ介绍,后期需补充说明...

    spring-boot-test:springboot学习笔记!

    使用IDEA开发工具,以Maven方式搭建的Springboot应用 使用Controller的方式: 讲述Springboot中读取核心配置文件的两种方法 讲述Springboot读取自定义配置文件的方法 使用单元测试的方式: 讲述Springboot中读取核心...

    Hadoop学习笔记(二)Hadoop 分布式文件系统 HDFS:1.HDFS基础

    HDFS客户端操作(开发重点) ...1.3、创建一个maven工程HDFS 1.4、 导入相应的依赖坐标加日志添加 junit junit RELEASE org.apache.logging.log4j log4j-core 2.8.2 org.apache.hadoop hadoop-com

    PHP学习笔记 (1) 环境配置与代码调试

    一配置PHP环境 ...PHP 是一种 HTML 内嵌式的语言,是一种在服务器端执行的嵌入HTML文档的脚本语言,... 1)、1994年由Rasmus Lerdorf创建,开始是一个简单的Perl语言编写的程序,用统计他自己的网站的访问。  后来用C

    尚硅谷SSM整合

    本视频基于Maven+SpringMVC+Spring+MyBatis+Bootstrap的组合,快速开发一个完整的CRUD功能,视频除过对框架组合的基本使用外,还涉及到许多的开发细节:Bootstrap搭建页面,MyBatis逆向工程使用,Rest风格的URI,@...

    JMeter压力测试软件+教程

    WebSocket协议是基于TCP的一种新的网络协议。它实现了浏览器与服务器全双工(full-duplex)通信——允许服务器主动发送信息给客户端 websocket使用场景分享 如弹幕,网页聊天系统,实时监控,股票行情推送等 ...

    day01_eesy_01mybatis.zip

    学习笔记——mybatis的起步(1) 1.什么是框架? 他是我们软件开发中的一套解决方案,不同的框架解决的是不同的问题。 使用框架的好处: 框架封装了很多的细节,使开发者可以使用极简的方式实现功能。大大提高...

    Eclipse开发分布式商城系统+完整视频代码及文档

    │ 淘淘商城第一天笔记.docx │ ├─02.第二天 │ 07.商品类目选择完成.avi │ 01.课程计划.avi │ 02.展示首页.avi │ 03.分页插件01.avi │ 04.分页插件的使用方法.avi │ 05.商品列表展示.avi │ 06.商品类目...

    XRD-Data-Analysis-Utilities:一个应用程序(在JavaFX中),用于查看MAR Tiff数据,跟踪样本之间的变化以及计算选定组的X射线衍射图

    一个应用程序(在JavaFX中),用于查看MAR Tiff数据,跟踪样本之间的变化以及计算选定组的X射线衍射图。 该项目具有三个目的: 为了创建有效的现代软件,它将取代矿物学界当前正在使用的过时工具。 构造一套工具...

Global site tag (gtag.js) - Google Analytics