maven的配置和使用

Maven 简介

1.1 Maven 是什么

翻译为“专家”,“内行”

Maven是跨平台的项目管理工具。主要服务于基于Java平台的项目构建,依赖管理和项目信息管理。

1.2 为什么使用Maven

IDE?Eclipse?

手工操作较多,编译、测试、部署等工作都是独立的,很难一步完成

每个人的IDE配置都不同,很容易出现本地代码换个地方编译就出错

Ant?

没有一个约定的目录结构

必须明确让ant做什么,什么时候做,然后编译,打包

没有生命周期,必须定义目标及其实现的任务序列

没有集成依赖管理

Maven?

拥有约定,知道你的代码在哪里,放到哪里去

拥有一个生命周期,例如执行 mvn install 就可以自动执行编译,测试,打包等构建过程

只需要定义一个pom.xml,然后把源码放到默认的目录,Maven帮你处理其他事情

拥有依赖管理,仓库管理

1.2.1 什么是本地仓库

本地仓库:Maven在本地存储构件的地方。

在第一次执行maven命令的时候创建本地仓库。

maven本地仓库的默认位置:在用户的目录下的.m2/repository/的仓库目录,这就是Maven仓库的默认位置,可以更改默认设置。

1.2.2 什么是中央仓库

maven安装好之后,远程仓库默认是中央仓库:http://repo1.maven.org/maven2

1.3 官网地址和系统要求

官网地址:http://maven.apache.org/

下载地址:http://maven.apache.org/download.cgi

1.3.1 maven官方压缩包的目录结构


1.     bin:含有mvn运行的脚本

2.     boot:含有plexus-classworlds类加载器框架

3.     conf:含有settings.xml配置文件

4.     lib:含有Maven运行时所需要的java类库

5.     LICENSE.txt, NOTICE.txt, README.txt针对Maven版本,第三方软件等简要介绍

2. 配置Maven运行环境

       切记:将maven解压到一个没有空格没有中文的目录中

2.1 配置Maven环境变量

   M2_HOME    D:\apache-maven-3.3.3

并且将此变量设置到Path中,紧跟着%JAVA_HOME%\bin;%M2_HOME%\bin

2.2 配置conf/settings.xml

2.2.1 本地仓库


<!-- localRepository

| The path to the local repository maven will use to store artifacts.

|

| Default: ${user.home}/.m2/repository -->

<localRepository>/path/to/local/repo</localRepository>

2.2.2 JDK版本配置

将下面的内容放到<profiles>标签中


<profile>

<id>jdk-1.7</id>

<activation>

<activeByDefault>true</activeByDefault>

<jdk>1.7</jdk>

</activation>

<properties>

<maven.compiler.source>1.7</maven.compiler.source>

<maven.compiler.target>1.7</maven.compiler.target>

<maven.compiler.compilerVersion>1.7</maven.compiler.compilerVersion>

</properties>

</profile>

2.2.3 mirror 镜像配置(使用阿里云镜像)

maven下载组件的时候从此处下载阿里云

需要将该内容放到<mirrors>标签中


<mirror>

<id>alimaven</id>

<name>aliyun maven</name>

<url>http://maven.aliyun.com/nexus/content/groups/public/</url>

<mirrorOf>central</mirrorOf>

</mirror>

执行命令:mvn -v查看是否安装maven成功

3. Maven 项目的liftcycle

何为生命周期?

Maven生命周期就是为了对所有的构建过程进行抽象和统一

包括项目清理,初始化,编译,打包,测试,部署等几乎所有构建步骤

每一个步骤的任务都是maven的相关插件来完成的。

4. 使用命令行操作Mavan

mvn archetype:generate -DgroupId=com.bjsxt.demo -DartifactId=mvnPro

4.1 generate 创建maven项目

4.2 compile 编译maven项目

4.3 test 测试maven项目

4.4 install 或package 安装或打包maven项目

4.5 clean 清空maven项目编译的文件

5. Eclipse 集成Maven,演示时使用下载的Maven进行操作

window->preferences->maven->installations->add

window->preferences->maven->installations->user settings

6. 演示如何创建Maven Project

6.1 坐标概念

在平面几何中坐标(x,y)可以标识平面中唯一的一点

Maven坐标主要组成

groupId:定义当前Maven项目隶属项目组

artifactId:定义实际项目中的一个模块,模块的名称

version:定义当前项目的当前版本

packaging:定义该项目的打包方式

Maven为什么使用坐标?

Maven世界拥有大量构建,我们需要找一个用来唯一标识一个构建的统一规范

拥有了统一规范,就可以把查找工作交给机器

6.2 packaging 3种结构(jar,war,pom)


jar是默认类型,项目打包为jar包

war:项目打包为war包

pom:描述文件,一般情况下,该类项目包含若干子模块

6.3 Maven 项目目录结构


遵从Maven约定

1.     src/main/java —— 存放项目的.java文件

2.     src/main/resources —— 存放项目资源文件,如spring, hibernate配置文件

3.     src/test/java —— 存放所有测试.java文件,如JUnit测试类

4.     src/test/resources —— 测试资源文件

5.     target —— 项目输出位置

pom.xml

7. 演示Maven项目依赖和Ant导jar包.突显Maven项目的优点.(略。。。)


<project default="run" basedir=".">

<property name="lib.dir" location="lib" />

<property name="src" location="src" />

<property name="classpath" location="build" />

<property name="dist" location="dist" />

<property name="webserver_jar" value="webserver.jar" />

<!--定义项目编译的时候依赖的lib包的路径-->

<path id="project.class.path">

<pathelement path="${classpath}" />

<fileset dir="${lib.dir}">

<include name="**/*.jar" />

</fileset>

</path>

<target name="init">

<mkdir dir="${src}" />

<mkdir dir="${classpath}" />

<mkdir dir="${lib.dir}" />

<mkdir dir="${dist}" />

<copy file="${webserver_jar}" todir="${lib.dir}" />

<copy file="JettySample.java" todir="${src}" />

<copy file="${webserver_jar}" todir="${dist}" />

</target>

<target name="compile" depends="init">

<!--target="1.4" 表示编译器用1.4的方式编译,当然也可以采用1.5,classpath 中的refid这表示依赖于那些jar包编译-->

<javac fork="true" target="1.4" srcdir="src" destdir="${classpath}" debug="true" >

<classpath refid="project.class.path" />

</javac>

</target>

<target name="jar" depends="compile">

<jar destfile="${dist}/${webserver_jar}" update="true" basedir="${classpath}">

<!--定义jar包运行的时候,实现要寻找的含有main方法的主类-->

<manifest>

<attribute name="Main-class" value="JettySample" />

</manifest>

</jar>

</target>

<target name="run" depends="jar,clean">

<java jar="${dist}/${webserver_jar}" fork="true" />

</target>

<target name="clean">

<delete dir="${classpath}"/>

<delete dir="${src}"/>

<delete dir="${lib.dir}"/>

</target>

</project>

eclipse中使用maven:

finish

8. 讲解Maven 项目的关系

8.1 依赖

8.2 继承

8.3 聚合

9. 讲解War 类型Maven项目

9.1 使用simple project 进行创建,不要使用Archetype

9.2 创建文件夹META-INF , WEB-INF , web.xml

选中项目击右键-> java EE Tools -> Generate Deployment Descriptor Stub

9.3 讲解war项目运行时必须依赖的几个jar

servlet-api   jsp-api


<!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api -->

<dependency>

<groupId>javax.servlet</groupId>

<artifactId>javax.servlet-api</artifactId>

<version>3.0.1</version>

<scope>provided</scope>

</dependency>

<!-- https://mvnrepository.com/artifact/javax.servlet.jsp/javax.servlet.jsp-api -->

<dependency>

<groupId>javax.servlet.jsp</groupId>

<artifactId>javax.servlet.jsp-api</artifactId>

<version>2.2.1</version>

<scope>provided</scope>

</dependency>

<!-- https://mvnrepository.com/artifact/junit/junit -->

<dependency>

<groupId>junit</groupId>

<artifactId>junit</artifactId>

<version>4.11</version>

<scope>test</scope>

</dependency>

9.3.1<dependency> 标签依赖servlet-api时需要讲解<scope>

9.3.1.1 <scope>四个属性都需要说一下,重点说provided


- compile :默认的范围;如果没有提供一个范围,那该依赖的范围就是编译范围。编译范围依赖在所有的classpath 中可用,同时它们也会被打包。

- provided:依赖只有在当JDK 或者一个容器已提供该依赖之后才使用。例如, 如果你开发了一个web 应用,你可能在编译 classpath 中需要可用的Servlet API 来编译一个servlet,但是你不会想要在打包好的WAR 中包含这个Servlet API;这个Servlet API JAR 由你的应用服务器或者servlet 容器提供。已提供范围的依赖在编译classpath (不是运行时)可用。它们不是传递性的,也不会被打包。

- runtime: 在执行时,需要使用

- test:    用于test任务时使用

- system: 需要外在提供相应得元素。通过systemPath来取得

- systemPath: 仅用于范围为system。提供相应的路径

- optional:   标注可选,当项目自身也是依赖时。用于连续依赖时使用

9.4 运行项目

9.4.1 此处需要说清楚,maven项目可以在本地tomcat中运行(需要演示)

9.4.2 添加tomcat插件,配置插件内容,并运行

项目中pom.xml指定:


<build>

<finalName>${project.artifactId}</finalName>

<plugins>

<!-- 资源文件拷贝插件 -->

<plugin>

<groupId>org.apache.maven.plugins</groupId>

<artifactId>maven-resources-plugin</artifactId>

<version>2.7</version>

<configuration>

<encoding>UTF-8</encoding>

</configuration>

</plugin>

<!-- java编译插件 -->

<plugin>

<groupId>org.apache.maven.plugins</groupId>

<artifactId>maven-compiler-plugin</artifactId>

<version>3.2</version>

<configuration>

<source>1.7</source>

<target>1.7</target>

<encoding>UTF-8</encoding>

</configuration>

</plugin>

<plugin>

<groupId>org.apache.tomcat.maven</groupId>

<artifactId>tomcat7-maven-plugin</artifactId>

<version>2.2</version>

<configuration>

<!-- 指定tomcat插件的端口号 -->

<port>8080</port>

<!-- http://localhost:8080/proName/index.jsp -->

<!-- http://localhost:8080/index.jsp -->

<!-- path就是指定8080/到index.jsp之间的内容 -->

<path>/myapp</path>

</configuration>

</plugin>

</plugins>

</build>

9.4.3 此处只须有一个jsp页面即可.演示war项目在tomcat中运行效果

选中项目击右键->Run as -> Maven build … -> clean tomcat7:run -DskipTests

clean tomcat7:run -DskipTests

clean 清空上次编译的结果

tomcat7:run 在tomcat7插件上运行项目

-DskipTests 跳过自动运行的测试

时间: 2024-10-26 12:47:52

maven的配置和使用的相关文章

Eclipse上Maven环境配置使用 (全)

1. 安装配置Maven: 1.1 从Apache网站 http://maven.apache.org/ 下载并且解压缩安装Apache Maven. Maven下载地址: http://maven.apache.org/download.cgi 1.2 配置 Maven 的conf文件夹中配置文件settings.xml.  settings.xml 1.3 修改settings.xml,添加镜像服务器设置:    使用阿里云提供的Maven镜像服务器.     阿里云镜像服务器URL: ht

Maven settings配置中的mirrorOf

原文地址:http://blog.csdn.net/isea533/article/details/21560089 使用maven时,从来没仔细注意过setting配置节点的作用,直到今天配置总是不起作用,总是报错才开始去认识这些节点的含义. 这里就说mirrorOf,因为其他的怎么配置基本上都不会出错,只有mirrorOf会导致莫名其妙的错误,如果你还不了解mirrorOf,请往下看,你会认识到mirrorOf的重要作用的. 主要参考来自: Using Mirrors for Reposit

使用公司自己的maven服务器时,本地 maven 的配置方法

使用公司的maven服务器,可以加速jar包的下载. 如果要使用公司的maven服务器,需要对本地maven配置文件conf/settings.xml做相应修改,具体改法有两种. 一.mirror 方式 思路是利用 mirror 配置支持通配符号,于是可以指定所有的 repository 都去找公司的repository,如果有某些 repository 是公司没有的,就需要显示做排除. 这种方法明显的缺点就是要排除所有公司仓库中没有的repository. 具体配置如下 <mirrors>

开发流程和Maven的配置

按照何种开发模型? V模型:项目需求--->概要设计(功能模块) --->详细设计(页面的设计,数据库的设计) --->编码(框架的搭建,功能的实现)---->测试(单元测试,黑盒测试,性能测试,回归测试)--->发布(war包,jar包)--->项目评审--->项目完成 敏捷开发:快速迭代 数据库的设计的时候: 1.提取功能模块的名称. 用户,商品类别,商品,入库,出库,库存,供应商(公司信息) 每个功能模块会单独形成一张表. 2.根据每个表,形成它的字段(可以

Java-Maven(四):Eclipse集成Maven环境配置

一般maven都需要集成到IDE上使用的,而不是单独的使用,常见的maven可集成IDE:eclipse.IntelliJ IDEA.但这里就只学习eclipse集成maven的基础上,进行maven环境配置. eclipse的maven插件安装: 大多情况来说下载eclipse都默认已经集成了maven插件,验证是否集成eclipse菜单Window->Preferences 如果实在不行,可以在eclipse marketplace中查找maven,找到与当前eclipse版本一致的插件直接

转载maven安装,配置,入门

转载:http://www.cnblogs.com/dcba1112/archive/2011/05/01/2033805.html 本书代码下载 大家可以从我的网站下载本书的代码:http://www.juvenxu.com/mvn-in-action/,也可以通过我的网站与我取得联系,欢迎大家与我交流任何关于本书的问题和关于Maven的问题. 咖啡与工具 本书相当一部分的内容是在苏州十全街边的Solo咖啡馆完成的,老板Yin亲手烘焙咖啡豆.并能做出据说是苏州最好的咖啡,这小桥流水畔的温馨小

Eclipse上Maven的配置

Eclipse上Maven的配置: 步骤: ①Maven下载地址: http://maven.apache.org/download.cgi# ②解压apache-maven-3.5.0-bin.zip,并把解压后的文件夹下的apache-maven-3.5.0文件夹复制到安装软件的文件夹,我这里是D:\ruanjian ③配置一下Maven环境变量: 右键"计算机",选择"属性",之后点击"高级系统设置",点击"环境变量",

Eclipse中Maven插件配置

1. Maven插件配置 http://www.blogjava.net/fancydeepin/archive/2012/07/13/eclipse_maven3_plugin.html 2. Maven使用教程 http://www.cnblogs.com/sunddenly/p/4195975.html

maven maven的配置及使用

maven的配置及使用 一.什么是maven: 我们在开发项目的过程中,会使用一些开源框架.第三方的工具等等,这些都是以jar包的方式被项目所引用,并且有些jar包还会依赖其他的jar包,我们同样需要添加到项目中,所有这些相关的jar包都会作为项目的依赖.通常,一个Java EE项目所依赖的jar包会有很多.然而,这还并非是主要问题,在管理这些jar包过程中,jar包的版本往往是最令人头疼的问题.选择一个jar包的版本,需要考虑它所依赖的jar包是否支持这个版本,并且还需要确认依赖它的jar包能

Eclipse中Maven的配置

Maven 的配置 1. 安装配置Maven: 1.1 从Apache网站 http://maven.apache.org/ 下载并且解压缩安装Apache Maven 1.2 配置 Maven 的conf文件夹中配置文件settings.xml. 1.3 修改settings.xml,添加镜像服务器设置: 阿里云Maven镜像服务器配置: 修改settings.xml文件, 添加阿里云镜像服务器配置信息: 2. Eclipse中Maven的配置: 最新版的Eclipse已经内嵌了Mevne插件