码迷,mamicode.com
首页 > 其他好文 > 详细

maven的配置和使用

时间:2017-08-30 23:43:45      阅读:271      评论:0      收藏:0      [点我收藏+]

标签:setting   跨平台   打包   相关   cts   war   第三方软件   tomcat7   rate   

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 跳过自动运行的测试

 

maven的配置和使用

标签:setting   跨平台   打包   相关   cts   war   第三方软件   tomcat7   rate   

原文地址:http://www.cnblogs.com/qingfengzhuimeng/p/7455679.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!