Maven学习(一)

6 篇文章 0 订阅

Maven

通常来说,项目往往是庞大复杂的,需要多个团队或成员合作,为了统一管理和更加便捷地进行项目开发,Maven可以说是一个不错的选择。和gradle类似,Maven是一个项目管理工具。Maven能够简化和标准化项目建设过程,使处理编译,分配,文档,团队协作和其他任务无缝连接。

Maven主要目标是提供给开发人员:

  1. 项目是可重复使用,易维护,更容易理解的一个综合模型。
  2. 插件或交互的工具,这种声明性的模式。

Maven项目的结构和内容在一个XML文件中声明,setting.xml是Maven的配置文件,pom.xml 项目对象模型(POM),这是整个Maven系统的基本单元。

1、环境配置

JDK: 1.8.0_91

Maven:3.6.1

Java工具:InterliJ IDEA

(1)Maven下载

官网上下载压缩包

解压之后文件夹内部

配置系统环境(在系统变量中添加):

然后在Path中添加%MAVEN_HOME%\bin

这个时候可以试下打开cmd输入MVN -version查看是否安装好2、配置IDEA

安装好maven后需要对配置(conf)中的settings.xml进行修改

找到profile标签,位置大概为195行,修改如下,这里是修改jdk的版本

配置好本地仓库(设置为自己仓库的地址,因为原来在.m2下不好找):

然后设置IDEA中的maven,将maven仓库换成本地的,因为初始化是使用的maven是IDEA自己的,修改下面这三处。IDEA自带的maven版本太新不稳定,这里换成自己下载的。

importing也可以勾选(自动导入),还有jar包的源码(Sources)和说明(Documentation)

3、解读pom.xml文件

pom.xml主要分为三部分:

  1. 项目自身信息(坐标)
  2. 依赖关系(dependencie)
  3. 环境插件(plugin)

(1)在pom中具体体现:

①坐标

②项目运行依赖的jar包(这时候如果这个jar包不在本地仓库中,会直接从远程仓库或者中央仓库中下载),加载jar包过程中会根据jar包坐标先从本地仓库中寻找,然后再王远程仓库中寻找(即公司私服)也从中央仓库中寻找。私服搭建在局域网中,为局域网范围内的所有maven工程服务,中央仓库架设在Internet上,为全世界所有maven工程服务。

仓库中保存的内容:

Maven自身所需要的插件、第三方框架或工具的jar包、我们自己开发的maven工程

③插件

(2)maven结构

 

(3)maven依赖管理

Maven解析依赖信息时会到本地仓库中查找依赖jar包,maven中还有传递依赖关系。

一般来讲,普通情况下,假如A依赖B,即A中要用到B中的东西,现在C要用A中的东西,C现在就不仅需要依赖A也需要依赖B。

在maven中,maven可以避免这种情况。C只需要依赖A就可以了,其他的maven会去解决处理。即maven中只需要引入直接依赖关系的文件。

通常情况下,在一个共通的项目下,有一系列的项目。在这种情况下,我们就可以创建一个公共依赖的 pom 文件,该 pom 包含所有的公共的依赖关系,他就可以作为其他子项目 pom 的 pom 父。

依赖范围:

compile:对主程序有效,对测试程序有效,参与打包

test:对主程序无效,对测试程序有效,参与打包

provided:对主程序有效,对测试程序有效,从不参与打包,不参与部署

(4)生命周期

生命周期可分为Clean Lifecycle(clean)Default Lifecycle(compile、test、package、install、deploy)还有Site Lifecycle(生成项目报告、站点、发布站点),这三个生命周期相互独立

下图就展示了每个构建项目的命令都对应了一个插件

4、实际操作

(1)命令行操作

命令行生成marven项目:mvn archetype:generate

groupId 项目所在组,一般是组织或公司

artifactId 是当前项目在组中的唯一ID;

version 表示版本,SNAPSHOT表示快照,表示此项目还在开发中,不稳定。 

成功生成

项目转换成IDEA项目:mvn idea:idea,转换之后项目就变成在当前目录下的文件,可直接使用IDEA打开

另附上其他maven构建指令(在命令行界面输入):

命令

作用

mvn tomcat:run运行项目
mven clean把编译好的信息清空
mvn compile  将src下main中代码编译
mvn test运行src下test里的代码文件使用合适的单元测试框架
mvn package将项目打包成指定类型包(如war、jar、ear包)
mvn install运行并打包然后将打包好的项目放入本地仓库
mvn deploy复制最终的包到远程仓库与其他开发者和项目共享

(2)Maven创建java文件

这里选择的是骨架quickstart,是一个简单的java项目,如果有联网就可以下载。

     

这里设置Maven的坐标

  

这里选择Maven环境配置

创建并调整之后的目录(target是在运行之后出现的),在这里要将java文件夹设置为“Test Source Root”(选中右键找到如下图所示)

简单示例

App.java

结果(输出)

(3)Maven创建web文件

创建过程与前面java相同,不过是选择的骨架为webapp

目录(target是运行之后创建的):

初始化创建之后就存在index.jsp,这是一个简单的jsp文件,单显示“Hello World!”。在这里也要将java文件夹设置为Test Source Root,然后在java下新建一个文件夹存放servlet文件(这里是com.atyume.servlet)还有新建一个resource文件夹存放资源,设置为“Resources Root"。

建立MyServlet

<web-app>
  <display-name>Archetype Created Web Application</display-name>
  <servlet>
    <servlet-name>MyServlet</servlet-name>
    <servlet-class>com.atyume.servlet.MyServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>MyServlet</servlet-name>
    <url-pattern>/MyServlet</url-pattern>
  </servlet-mapping>
</web-app>

web.xml

<web-app>
  <display-name>Archetype Created Web Application</display-name>
  <servlet>
    <servlet-name>MyServlet</servlet-name>
    <servlet-class>com.atyume.servlet.MyServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>MyServlet</servlet-name>
    <url-pattern>/MyServlet</url-pattern>
  </servlet-mapping>
</web-app>

pom.xml

<?xml version="1.0" encoding="UTF-8"?>

<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/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>com.atyume</groupId>
  <artifactId>mvn_web</artifactId>
  <version>1.0-SNAPSHOT</version>
  <packaging>war</packaging>

  <name>mvn_web Maven Webapp</name>
  <!-- FIXME change it to the project's website -->
  <url>http://www.example.com</url>

  <!-- 为pom定义一些常量,在pom中的其它地方可以直接引用 使用方式 如下 :${file.encoding} -->
  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<!-- 使用jdk1.7进行编译-->
    <maven.compiler.source>1.7</maven.compiler.source>
    <maven.compiler.target>1.7</maven.compiler.target>
  </properties>

  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.11</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>servlet-api</artifactId>
      <version>2.5</version>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>jsp-api</artifactId>
      <version>2.0</version>
      <scope>provided</scope>
    </dependency>
  </dependencies>

  <build>
    <finalName>mvn_web</finalName>
    <pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
      <plugins>
          <!-- 配置Tomcat插件 -->
        <plugin>
          <groupId>org.apache.tomcat.maven</groupId>
          <artifactId>tomcat7-maven-plugin</artifactId>
          <version>2.2</version>
          <configuration>
            <port>8081</port>
            <path>/</path>
            <uriEncoding>UTF-8</uriEncoding>
          </configuration>
        </plugin>
        <plugin>
          <artifactId>maven-clean-plugin</artifactId>
          <version>3.1.0</version>
        </plugin>
        <!-- see http://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_war_packaging -->
        <plugin>
          <artifactId>maven-resources-plugin</artifactId>
          <version>3.0.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-compiler-plugin</artifactId>
          <version>3.8.0</version>
        </plugin>
        <plugin>
          <artifactId>maven-surefire-plugin</artifactId>
          <version>2.22.1</version>
        </plugin>
        <plugin>
          <artifactId>maven-war-plugin</artifactId>
          <version>3.2.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-install-plugin</artifactId>
          <version>2.5.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-deploy-plugin</artifactId>
          <version>2.8.2</version>
        </plugin>
      </plugins>
    </pluginManagement>
  </build>
</project>

hello.jsp

<html>
<head>
    <title>hello</title>
</head>
<body>
<table>
    <tr>
        <h2>hello maven</h2>
    </tr>
    <tr>
        <td>username:</td><td><%=request.getParameter("username")%></td>
    </tr>
    <tr>
        <td>password:</td><td><%=request.getParameter("password")%></td>
    </tr>
</table>
</body>
</html>

双击clean可清理之前的编译信息 

运行(输入tomcat即是运行端口号为8080)

显示结果:

打开http://localhost:8081/运行的是index.jsp

接下来我们在浏览器地址栏中输入

http://localhost:8081/MyServlet?password=abcd&username=hdyd

 

注:本文为学习笔记,仅做个记录

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值