《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包名等
 
 

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

  1. MAVEN学习笔记之Maven插件的应用(4)

    MAVEN学习笔记之Maven插件的应用(4) <build> <pluginManagement> <plugins> <plugin> <gr ...

  2. MAVEN学习笔记之Maven生命周期和插件简介(3)

    MAVEN学习笔记之Maven生命周期和插件简介(3) clean compile site三套生命周期相互独立. clean pre-clean 执行清理前的工作 clean 清理上一次构建生成的所 ...

  3. 学习笔记-[Maven实战]-第二章:Maven安装和配置

    在windows上安装Maven 1.检查JDK安装:在CMD下运行以下命令来检查JAVA安装情况: 命令: C:\Documents and Settings\Administrator>ec ...

  4. 学习笔记-[Maven实战]-第一章:Maven简介

    Maven简介: Maven 可翻译为:知识的积累,也可以翻译为"专家"或"内行". Maven 是一个跨平台的项目管理工具,是Apache组织中一个很成功的开 ...

  5. [maven] 实战笔记 - maven 安装配置

    1.下载地址http://maven.apache.org/download.html 2.windows下安装maven(1)下载 apache-maven-3.0-bin.zip 解压到任意目录下 ...

  6. [maven] 实战笔记 - 构建、打包和安装maven

    ① 手工构建自己的maven项目 Maven 项目的核心是 pom.xml.POM (Project Object Model,项目对象模型)定义了项目的基本信息,用于描述项目如何构建,声明项目依赖等 ...

  7. 读书笔记-《Maven实战》-关于Maven依赖传递的思考 2018/4/26

    上次读书笔记中,提到了依赖传递.看着依赖传递表,一直在思考为什么会是这样. 先看传递表: compile test provided runtime compile test provided run ...

  8. maven实战_01_搭建maven开发环境

    一 下载maven 在maven官网上可下载maven:http://maven.apache.org/download.cgi 下载好后,解压.我的解压到了:D:\maven\apache-mave ...

  9. Maven学习笔记:Maven简介

    Maven的概念 Maven是基于项目对象模型(POM,Project Object Model),可以通过描述信息来管理项目的构建,报告和文档的软件管理工具 Maven除了以程序构建能力为特色之外, ...

  10. 【构建工具】《Maven实战》读书笔记

    Maven是我们在做Java开发过程中用经常用到的一个辅助工具.本篇博客是我学习Maven的一个记录博客,学习过程主要参考<Maven实战>这本书.同时也参考了Maven的官方文档. 1. ...

随机推荐

  1. qduoj su003 数组合并

    描述 现在呢有两个整形数组,a[n]和b[m],而且已经知道这两个数组都是非降序数组.现在呢就有一个工作需要你来完成啦.对于a中的每个元素a[i]在b中寻找<=a[i] 的元素个数,个数记为x[ ...

  2. java服务覆盖率统计 jacoco ant

    ● 下载jacoco.exec.jacocoant.jar.jacocoagent.jar ● jvm启动参数中添加(tomcat服务原理一样) JACOCO_OPTS=JAVA_OPTS=" ...

  3. laravel config文件的使用

    好多东西 由于许多地方都要使用与将来可能发生更改 我们需要把它提取出来 作为配置文件来使用 这样将来要修改的时候 只需要修改一处即可 学习源头: https://blog.csdn.net/linyu ...

  4. 反射ORM 三层(for sql server/mysql)

    sql server and oracle 不同之处只在于: 1·参数@和: 2·自增和序列 RPROM.cs //(写错愕,应该是RPORM) RPROM.Insert(p1); //需求:DBS中 ...

  5. POJ2976(最大化平均值)

    Dropping tests Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 9329   Accepted: 3271 De ...

  6. SPRING中的线程池ThreadPoolTaskExecutor

    一.初始化 1,直接调用 ThreadPoolTaskExecutor poolTaskExecutor = new ThreadPoolTaskExecutor(); //线程池所使用的缓冲队列 p ...

  7. Java-API:java.lang百科

    ylbtech-Java-API:java.lang百科 java.lang是提供利用 Java 编程语言进行程序设计的基础类.最重要的类是Object(它是类层次结构的根)和 Class(它的实例表 ...

  8. Angular常犯的错误

    ng-app="name名称" name名称  == 一定要写对 其次 angular.min导入一定要正确,一定要导入正确的angular.min的库 再次js中要写自调用 (f ...

  9. leetcode328

    /** * Definition for singly-linked list. * public class ListNode { * public int val; * public ListNo ...

  10. [Python Study Notes]一个简单的区块链结构(python 2.7)

    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ...