《Maven实战》笔记-1-Maven使用入门

《Maven实战》徐晓斌 2011 机械工业出版社

一、介绍

1、名词

artifact:插件

极限编程XP

2、构建脚本:

maven——pom.xml(Project Object Model)

ant——build.xml

其基本结构是目标(target)、依赖(depends),以及实现目标的任务。

3、maven vs ant

Ant是过程式的,开发者显示指定每一个目标,以及完成该目标所需要执行的任务。

Maven是声明式的,项目构建过程和过程各个阶段所需的工作都由插件实现。

4、相关知识

Spring——实现IoC;

Hibernate——实现封装JDBC;

Eclipse安装目录eclipse.ini文件,添加vm配置指向jdk:

  1. --launcher.SSMaxPermSize
  2. 256m
  3. -vm
  4. D:\java\jdk1.7\bin\javaw.exe
  5. -vmargs
  6. -Dosgi.requiredJavaVersion=1.5
  7. -Xms128m
  8. -Xmx256m

m2eclipse——Eclipse下的Maven插件。

二、Maven使用入门

——以Hello World为例

1、mvn help:system——打印所有的Java系统属性和环境变量。

推荐用户复制M2_HOME/conf/settings.xml文件到~/.m2/settings.xml,在用户范围内修改Maven配置,而不是在全局范围修改。

Maven的核心是pom.xml,一个HelloWord项目的pom.xml:

参数解释:

modelVersion——POM模型的版本,对于Maven2以及Maven3来说,它只能是4.0.0

核心三元素——groupId、artifactId、version,定义了一个项目基本的坐标;在Maven的世界,任何的jar、pom或者war都是基于这些基本的坐标进行区分。

groupId:定义里项目属于哪个组,这个组往往和项目所在的组织或公司存在关联;

artifactId:定义了当前Maven项目在组中的唯一ID;

version:指定Hello World项目当前的版本,1.0-SNAPSHOT说明快照版本,处于开发中,不是稳定版本。

name:不是必须的,可用于声明一个友好的项目名称。

2、编写主代码

主代码:被打包到最终的构件,如jar中,默认位于src/main/java目录;

测试代码:只运行测试时用到,不会被打包,默认位于src/test/java目录;

使用Maven编译:

在项目根目录下,运行命令

mvn clean compile

clean:清理输出目录target/

compile:编译项目主代码

以上命令执行顺序:

clean:clean->resources:resources->compiler:compile

3、编写测试代码

添加junit测试依赖:

注:scope为依赖范围,test值表示只对测试有效,默认为compile,则表示对主代码和测试代码都有效。

测试代码:

典型单元测试的三个步骤:

(1)准备测试类及测试数据;

(2)执行要测试的行为;

(3)检查结果。

JUnit3中,约定所有需要执行测试的方法都以test开头

JUnit4中,需要执行的测试方法都应该以@Test进行标注

使用Maven执行测试:

运行mvn clean test

注意,以上命令实际执行了以下的任务:

clean:clean  resources:resources  compiler:compile  resources:testResources  compiler:testCompile.

详见maven生命周期。

以上命令可能提示java版本不够,compiler插件默认java1.3,需要做以下修改:

4、打包和运行

Pom默认打包类型为jar,执行命令进行打包:

mvn clean package

输出也位于target/输出目录中。

若让其他项目引用该jar,需要执行安装步骤,,将项目输出的jar安装到Maven本地仓库中:

mvn clean install

注意:执行test前会先执行compile,执行package前会先执行test,执行install前会执行package。

默认生成的jar是不能够执行运行的,因为main方法的类信息不回添加到manifest中。为了生成可执行的jar文件,需要借助maven-shade-plugin,配置插件如下:

5、使用Archetype生成项目骨架

Mav项目中基本的目录结构和pom.xml文件内容成为项目的骨架。

Maven提供了Archetype快速生成项目骨架。

Maven3中,运行以下命令:

mvn archetype:generate

接着根据提示输入项目groupId  artifactId  version  package包名等

来自为知笔记(Wiz)

时间: 2024-10-13 22:00:02

《Maven实战》笔记-1-Maven使用入门的相关文章

Maven实战之初识Maven

Maven实战之初识Maven Maven的简单介绍 作用:Maven主要用于项目的构建,管理项目的依赖以及项目的信息(自动化构建.编译.单元测试.生成文档.打包.部署) 优势:相对于Ant.Make等,Maven抽象构建过程,提供构建任务的实现,自动化构建,有效地提高了开发效率,使开发人员可以集中精力在主要的开发任务上.而且Maven是跨平台工具,意味着在主流操作系统中,Maven都提供了对应的技术支持 使用注意:需要在JDK1.4及以上版本使用 Maven的安装 下载地址:Maven下载地址

maven实战 笔记

maven实战(三)--多模块项目的POM重构 1.重复 举个栗子 1 <dependency> 2 <groupId>org.springframework</groupId> 3 <artifactid>spring-beans</artifactId> 4 <version>2.5</version> 5 </dependency> 6 <dependency> 7 <groupId&g

Maven 实战-手动创建Maven项目,使用Maven编译

创建空目录 F:\jtDevelop\maventest\myapp 创建pom.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.o

Maven 实战-自动创建Maven项目(非web)

mvn archetype:create和mvn archetype:generate create is deprecated in maven 3.0.5 and beyond,在maven3.0.5以上版本舍弃了create,使用generate生成项目 mvn archetype:generate -DgroupId=com.mycompany.app -DartifactId=myapp -DarchetypeArtifactId=maven-archetype-quickstart

学习笔记——Maven实战(六)Gradle,构建工具的未来?

Maven面临的挑战 软件行业新旧交替的速度之快往往令人咂舌,不用多少时间,你就会发现曾经大红大紫的技术已经成为了昨日黄花,当然,Maven也不会例外.虽然目前它基本上是Java构建的事实标准,但我们也能看到新兴的工具在涌现,比如基于Goovy的Gradle,而去年Hibernate宣布从Maven迁移至Gradle这一事件更是吸引了不少眼球.在此之前,我也听到了不少对Maven的抱怨,包括XML的繁冗,不够灵活,学习曲线陡峭等等.那Gradle是否能够在继承 Maven优点的基础上,克服这些缺

学习笔记——Maven实战(九)打包的技巧

“打包“这个词听起来比较土,比较正式的说法应该是”构建项目软件包“,具体说就是将项目中的各种文件,比如源代码.编译生成的字节码.配置文件.文档,按照规范的格式生成归档,最常见的当然就是JAR包和WAR包了,复杂点的例子是Maven官方下载页面的分发包,它有自定义的格式,方便用户直接解压后就在命令行使用.作为一款”打包工具“,Maven自然有义务帮助用户创建各种各样的包,规范的JAR包和WAR包自然不再话下,略微复杂的自定义打包格式也必须支持,本文就介绍一些常用的打包案例以及相关的实现方式,除了前

学习笔记——Maven实战(十)Maven 3,是时候升级了

去年10月份Apache Maven发布了3.0正式版,而在上个月的22号,Eclipse基金会宣布了Eclipse 3.7(Indigo)的发布,该版本Eclipse最大的新特性之一就是集成了Maven.下载Eclipse IDE for Java Developers版本的用户会发现,Eclipse已经能够自动识别Maven项目了.Indigo中内置的Maven版本是3.0.2,这在一定程度上说明Maven 3已经非常稳定了.不过我相信一定还有很多Maven 2用户在犹豫是否升级,本文会介绍

学习笔记——Maven实战(五)自动化Web应用集成测试

自动化集成测试的角色 本专栏的上一篇文章讲述了Maven与持续集成的一些关系及具体实践,我们都知道,自动化测试是持续集成必不可少的一部分,基本上,没有自动化测试的持续集成,都很难称之为真正的持续集成.我们希望持续集成能够尽早的暴露问题,但这远非配置一个 Hudson/Jenkins服务器那么简单,只有真正用心编写了较为完整的测试用例,并一直维护它们,持续集成才能孜孜不倦地运行测试并第一时间报告问题. 自动化测试这个话题很大,本文不想争论测试先行还是后行,这里强调的是测试的自动化,并基于具体的技术

学习笔记——Maven实战(七)常用Maven插件介绍(上)

我们都知道Maven本质上是一个插件框架,它的核心并不执行任何具体的构建任务,所有这些任务都交给插件来完成,例如编译源代码是由maven-compiler-plugin完成的.进一步说,每个任务对应了一个插件目标(goal),每个插件会有一个或者多个目标,例如maven-compiler-plugin的compile目标用来编译位于src/main/java/目录下的主源码,testCompile目标用来编译位于src/test/java/目录下的测试源码. 用户可以通过两种方式调用Maven插