- 浏览: 704563 次
- 性别:
- 来自: 北京
博客专栏
-
读金庸故事,品程序人生
浏览量:47755
文章分类
最新评论
-
hty881008:
LZ,你的json返回是怎么出来的,我的怎么是No messa ...
使用CXF暴露您的REST服务 -
jxFY:
赞
Apache的对象池化工具commons-pool -
wangyudong:
新版本的Wisdom RESTClient地址https:// ...
使用CXF暴露您的REST服务 -
wangyudong:
由CXF实现的微服务需要有比较好的工具去测试RESTful A ...
使用CXF暴露您的REST服务 -
spring_springdata:
可以参考最新的文档:如何在eclipse jee中检出项目并转 ...
Maven3实战笔记01环境配置与使用入门
1. 前言
Maven是apache的一个顶级项目,它的出现越来越影响着现在的众多的开源项目,不仅如此,很多公司的很多新项目都采用Maven提倡的方式进行管理。Maven正逐渐侵入我们原先的管理项目的习惯,对于团队的管理,项目的构建,都是一种质的飞跃。当然是我个人的一些项目经验而说的这话。如果原先的团队老大本身的管理非常科学,也有一套其他软件辅助项目的构建、打包、发布等等一系列机制保证。那么Maven可能对其并没有实质性的影响或者是质的飞跃。当然在此也并不是说咱们中国人做出来的项目就管理不善……只是说利用Maven帮助我们构建项目更科学、更有可维护性、更加模块化、模块功能更加职能单一、做出来的项目更加具有可复用性等等好处。当然笔者也是个刚学习Maven的人,我们一起来学习Maven到底为我们带来了什么好处。笔者邮箱已经给出,欢迎与笔者进行学术上的交流。
2. Maven的思想
本来想看完了实战整本,再写总结的,后来觉得还是先写出来吧。哪怕有什么不对的地方再纠正都不晚,就怕到时候看完了一点心得都没有,全忘了就太……所以先将学习的点点滴滴感受写下来,之后结合实例咱们可以反复的推敲。
目前笔者看到的Maven的主要功能是:项目构建;项目构建;项目依赖管理;软件项目持续集成;版本管理;项目的站点描述信息管理;
由此可以看出Maven最主要的体现在了哪2个词?——对了,“项目”和“管理”!加在一起就是项目管理。项目管理是一个很抽象的概念。项目管理既可以指技术上的管理手段,也可以指“以人为本”的非技术因素。诚然,无论是技术还是非技术,项目的成败最大的责任人其实就是项目经理。这里我们抛开人为因素不提,仅就技术上来说,Maven提供了一种思想让团队更科学的管理、构建项目。用配置文件的方式对项目的描述、名称、版本号、项目依赖等等信息进行描述。使之项目描述结构清晰,任何人接手的成本比较低。在项目构建时,利用Maven的“约定大于配置”的思想,可以比Ant脚本构建项目省去不少配置文件的内容。而且一个项目可能依赖于其他的项目和第三方的组件才能顺利完成,Maven提供了仓库的概念,让这些依赖项放进仓库中,项目想要从仓库中去取,其他项目组也需要,OK,从仓库中去取,不必每个人去开源项目的站点去苦苦搜寻了。如此人员的成本、软件维护的成本、沟通的成本、硬件的成本都降下来了。客户笑了、公司老板也笑了、项目经理笑了、团队里面的人员也笑了、Apache社区看到这么多人在用也笑了。给笔者的感觉,现在的开源东西越来越向“敏捷开发”、“极限编程”的方向靠拢。通过Maven辅助管理项目,更能发现项目中哪些模块是重复的轮子。
3. Maven的环境搭建
下面我们来看看Maven的环境搭建。首先从Apache网站下载Maven。下载url是:http://maven.apache.org/download.html。笔者下载的是Maven 3.0.3版本。下载下来的包结构如下
bin就不用说了,就是Maven的一些命令参数,boot里面是Maven自己的类加载器,咱们也不必理会。conf里面有个settings.xml就是本机Maven的总配置信息。lib是Maven运行时需要的类库。将bin目录和JDK的bin目录一样设置为系统的PATH。这样在命令行就能直接运行Maven指令了。
保持网络畅通,在命令行执行一条语句
mvn help:system
会从网上下载很多东西,本地用户的临时文件夹,会生成一个临时Maven文件目录,用于存储本地资源仓库。比如在C:\Users\liuyan下面有个文件夹叫做.m2
将刚刚提到的settings.xml拷贝到C:\Users\liuyan\.m2下面,如此Maven就算在本机安装好了。
开发工具的选用,笔者使用的是Myeclipse8.6版本,此IDE已经集成了Maven插件Maven4Myeclipse,仅需要将总配置信息配置上即可。在Myeclipse点击window菜单,打开preferences选项。之后点击到myeclipse的maven4myeclipse节点,如下图所示。
4. Maven使用入门
首先我们先写一个非常简单的小项目(我们姑且称之为项目啊),项目结构如下图所示
src.main.java是项目代码文件夹、src.test.java是项目单元测试文件夹、src.main.resource是放置项目资源文件、配置文件文件夹。下面我们看项目代码
一个简单的类com.liuyan.maven.helloword.HelloWorld
package com.liuyan.maven.helloword; public class HelloWorld { public String sayHello() { return "hello maven"; } /** * @param args */ public static void main(String[] args) { System.out.println(new HelloWorld().sayHello()); } }
在此项目的根目录下有一个pom.xml文件,内容如下
进入控制台,将当前目录cd到与pom.xml同级的文件夹下面。执行命令
因为笔者写总结前之前下载了相关包,所以此时相关输出download包的信息少一些
执行后造成的结果。就是项目的根路径下出现了一个taget文件夹 单元测试代码如下
之后我们因为使用了junit单元测试,那么就是说我们这个项目依赖了它。修改一下pom.xml文件内容,如下
进入命令行,执行命令
执行后观察一下taget文件夹如下图,多出了test-classes文件夹和另外2个咱们暂时不用去管的文件夹。 之后在观察一下本地的临时仓库C:\Users\liuyan\.m2\repository,会多出文件夹junit,下载的版本是4.7。 如果我们想把项目打成jar的形式输出出去呢?在项目根目录下执行
执行后效果如下
打包测试后没问题了,想把此项目当做Maven的本地资源仓库,为其他的项目也能提供服务,可以这么做。 执行命令
执行后本地的临时库文件多了你自己的这个项目。这样别的项目需要你这个项目提供服务的时候就可以从本地Mavne库中提取相应的jar了。 5. 利用IDE构建POM.xml骨架 现在的形式是这样,Maven虽然如火如荼,但是支持Maven的各种IDE插件确实还有很多不少的缺陷。正所谓名不正则言不顺,总给人感觉IDE不支持的开源项目都是“非主流”,呵呵,确实现在Maven在IDE中存在各种各样的问题,比如就刚才简单的命令在dos命令行就可以顺利执行,到了Myeclipse怎么就不行了呢。笔者在此仅仅使用IDE构建一下pom.xml文件,因为个人感觉利用IDE执行Maven命令其实意义不是很大,因为到了linux环境下还是需要手工执行Maven命令的。 使用Myeclipse工具可以为开发者提供良好的可视化编辑POM.xml文件
6. 总结 这算是开张了,本次仅仅介绍了Maven的环境搭建和入门命令,还了解了一些Maven的思想。之后我们会结合书里面的小案例来一步步的学习Maven的特性。 <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.liuyan.maven</groupId>
<artifactId>MavenDemo</artifactId>
<version>0.0.1-SNAPSHOT</version>
</project>
mvn clean compile
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building MavenDemo 0.0.1-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- maven-clean-plugin:2.4.1:clean (default-clean) @ MavenDemo ---
[INFO] Deleting E:\Genuitec\ws\MavenDemo\target
[INFO]
[INFO] --- maven-resources-plugin:2.4.3:resources (default-resources) @ MavenDem
o ---
[WARNING] Using platform encoding (GBK actually) to copy filtered resources, i.e
. build is platform dependent!
[INFO] skip non existing resourceDirectory E:\Genuitec\ws\MavenDemo\src\main\res
ources
[INFO]
[INFO] --- maven-compiler-plugin:2.3.2:compile (default-compile) @ MavenDemo ---
[WARNING] File encoding has not been set, using platform encoding GBK, i.e. buil
d is platform dependent!
[INFO] Compiling 1 source file to E:\Genuitec\ws\MavenDemo\target\classes
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 2.044s
[INFO] Finished at: Sat May 28 16:23:07 CST 2011
[INFO] Final Memory: 5M/15M
[INFO] ------------------------------------------------------------------------
里面就是编译后的class类。经理过来说,你需要进行单元测试才能发布出来给大家用。Ok,我们在源码包——src/test/java下面开始编写junit单元测试类。
package com.liuyan.maven.helloword;
import org.junit.Test;
import org.junit.Assert;
public class TestHelloWorld {
@Test
public void testSayHello() {
HelloWorld helloWorld = new HelloWorld();
Assert.assertEquals(helloWorld.sayHello(), "hello maven");
}
}
<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.liuyan.maven</groupId>
<artifactId>MavenDemo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.7</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
mvn clean test
mvn clean package
生成了一个jar包,至于SNAPSHOT是快照的意思,快照就是项目暂时还不稳定的意思。
mvn clean install
发表评论
-
Memcache工作原理总结
2014-03-07 10:22 17088<!--[if !supportLists]-- ... -
Maven3实战笔记16Maven总结
2011-06-27 09:54 27211. 前言 用了15篇Blog做Maven3的学习笔记,最 ... -
Maven3实战笔记15编写Maven插件
2011-06-24 08:52 66821. 自定义插件介绍 在 ... -
Maven3实战笔记14Maven生成项目站点
2011-06-23 08:52 71761. 前言 一个项目的成败离不开项目各个阶段的信息反馈,总 ... -
Maven3实战笔记13Maven Profile定制化构建
2011-06-22 08:39 120681. 前言 有时候我们开发的软件有不同的环境,开发阶段是开 ... -
Maven3实战笔记11Maven集成Hudson进行持续集成
2011-06-14 09:08 3408唉~~~因为这篇文章篇幅比较大,blog实在不能写得全,因此将 ... -
Maven3实战笔记11Maven集成Hudson进行持续集成1----Hudson环境配置
2011-06-13 16:18 74751. 持续集成 持续集成其实是由敏捷开发这个概念衍生出来 ... -
Maven3实战笔记10使用Maven进行测试
2011-06-13 09:16 51251. 测试简介 这里所说 ... -
使用Google工具生成随机验证码
2011-06-11 12:26 10768很多网站都有验证码认证的功能。生成随机数,需要用户自己填写,之 ... -
Maven3实战笔记09Maven的私服-Nexus常用功能
2011-06-09 09:06 83681. 前言 其实介绍Maven私服的资料已经很多了,《Ma ... -
Maven3实战笔记08Maven反应堆
2011-06-08 09:03 23081. 反应堆 反应堆这个名字听上去挺专业,其实就是多个模块 ... -
Maven3实战笔记07继承
2011-06-08 09:01 22111. 继承 之前我们学习Maven的聚合机制遗留个问题,就 ... -
Maven3实战笔记06聚合
2011-06-07 09:07 20411. Maven聚合的 ... -
Maven3实战笔记04Maven的生命周期和插件
2011-06-03 09:15 40541. Maven的生命周期 Maven的生命周期其实是指它 ... -
Maven3实战笔记03Maven仓库
2011-06-03 09:11 33981. 仓库的概念 大家可能注意到了,在基于Maven管理的 ... -
Maven3实战笔记02坐标和依赖--2
2011-06-02 09:34 23675. 依赖调节 假如现在 ... -
Maven3实战笔记02坐标和依赖--1
2011-06-02 09:31 35561. 项目需求 加入我们现在有这样一个小小项目,就是做一个 ...
相关推荐
3. **Profile切换**:可以定义不同环境的配置文件(如application-dev.properties、application-prod.properties),通过`spring.profiles.active`切换环境。 ### 四、Maven配置 1. **添加SpringBoot的父POM**:...
【SpringBoot与Shiro整合-权限管理实战】的课程主要关注如何将Spring Boot与Apache Shiro框架结合起来,实现高效的安全管理。Spring Boot是Spring框架的一个简化版本,旨在提高开发效率,减少配置工作,同时提供了很...
3. **Spring Boot入门**:Spring Boot简化了Spring应用的初始化和配置,通过自动配置和起步依赖,可以快速搭建项目结构。 4. **Spring MVC实战**:Spring MVC是Spring框架的一部分,用于构建Web应用程序,提供模型-...
1. **笔记部分**:这部分可能包含了SSM框架的基础知识讲解,包括Spring的依赖注入原理、AOP概念、SpringMVC的工作流程、MyBatis的配置与使用、数据库连接及SQL语句编写等。笔记可能详细阐述了每个框架的核心概念和...
Flink环境搭建与基本配置 首先,我们需要设置Flink环境,这通常涉及下载Flink发行版,配置环境变量,以及启动集群。在Java项目中,引入Flink的依赖库,例如通过Maven或Gradle。 ### 3. Java API入门 Flink的Java...
《Eclipse开发学习笔记》这本书涵盖了Eclipse的基础知识、高级特性以及实战技巧,是初学者入门和进阶的良好资源。通过学习,读者不仅可以掌握Eclipse的基本操作,还能了解到如何利用Eclipse进行高效开发,以及如何...
│ 16-tomcat的3种运行模式和执行器(线程池).avi │ 17-tomcat中连接器.avi │ 18-禁用AJP连接器.avi │ 19-tomcat中JVM参数优化.avi │ ├─补充2:Redis3.0新特性、主从复制、集群视频教程 │ │ 打开必读.txt ...
可能包括安装必要的开发工具,如Sencha CMD,设置Maven或Gradle构建工具,以及配置服务器环境如Tomcat或Jetty。同时,它可能会指导如何在Java后端与ExtJS前端之间进行数据交互。 3. **EXT_JS实用开发指南_个人整理...
在"【1-3】源代码"中,我们可以预见到课程的起始阶段,通常会介绍Java环境的搭建,包括JDK的安装和配置,以及编写并运行第一个"Hello, World!"程序。这将帮助初学者建立起对Java编程的初步认识。 "【4-8】源代码...
1. 入门引导:介绍Java开发环境的搭建,如安装JDK,配置环境变量,熟悉IDE等。 2. 基础理论:讲解Java语言的基本概念和语法,以及面向对象编程的核心思想。 3. 实践项目:通过编写小型程序,让学员实际操作并理解所...