Maven入门

2019-12-26 16:01:38来源:博客园 阅读 ()

新老客户大回馈,云服务器低至5折

Maven入门

Maven入门

maven是一个基于java平台的跨平台项目管理工具,是Apache组织中一个颇为成功的开源项目

注意此处的项目管理不是某种工作岗位,而是描述程序员开发工作中的一部分;

为何需要maven

在日常开发工作中,开发者需要自行管理项目依赖,频繁的编译,清理,测试,打包,发布等等.....虽然IDE都提供了相应的支持,但也免不了我们需要,花很多时间进行这写重复且没有技术含量的工作,我们将上述这些过程统称为项目构建

Maven的出现正是为了将开发者从繁杂的项目构建中解放出来

Maven相关概念

POM(项目对象模型)

Maven整体采用的就是POM,既将项目看做一个对象,我们可以对这个项目对象进行相关属性的设置,从而来完成项目的管理

repository(仓库)

所有Maven项目都具备自己的坐标,包括组织ID,坐标ID和版本号,有了坐标后,可将项目放入仓库中,以供其他人使用,仓库就是用来存放这些项目的地方,分为本地仓库,和远程仓库,以及中央仓库

中央仓库也属于远程仓库,是有maven官方维护的仓库,是最完整的jar仓库,为了区别于其他仓库,所以称之为中央仓库

Dependency Management(依赖)

依赖指得是项目运行所必须的组件(jar,java,class),依赖管理是Maven提供的最核心的功能之一,可根据提供的项目坐标,自动的从仓库中下载需要的依赖,并且会帮助解决依赖冲突问题

Project Lifecycle(项目生命周期)

项目生命周期指得是项目从创建工程开始到最终部署到服务器的所有动作(程序员要干的事情)的总称,如编译,测试,打包,部署,生成项目站点等....

Maven对对这些动作进行了抽象,变成了一个个生命周期

下载安装

地址:https://maven.apache.org/download.cgi

下载后直接解压即可,如需要在CMD中使用需设置环境变量

也可直接在IDE中使用可视化操作

Maven使用步骤简述

  • 创建Maven项目
  • 指定仓库地址,以及配置文件
  • 编辑pom.xml配置文件,(项目坐标,依赖,插件等...)
  • 使用命令或插件来帮助完成要进行的构建工作

生命周期

生命周期动作其实是通过插件来完成的,所以Maven项目默认就存在与生命周期相关的几个插件

三个生命周期:

  • 默认(default)的生命周期处理项目部署

  • 清洁(clean)生命周期处理项目的清理操作

  • 站点(site)生命周期处理项目站点文档的创建

阶段

每个生命周期下包含若干个阶段,以下列出重要阶段(不区分周期)

阶段 插件 作用
clean clean 清理自动生成的文件,也就是 target 目录
validate 由 Maven 核心负责 验证 Maven 描述文件是否有效
compile compiler、resources 编译 Java 源码
test compiler、surefire、resources 运行测试代码
package war 项目打包,就是生成构件包,也就是打 war 包
verify 由 Maven 核心负责 验证构件包是否有效
install install 将构件包安装到本地仓库
site site 生成项目站点,就是一堆静态网页文件,包括 JavaDoc
deploy deploy 将构件包部署到远程仓库
关于deploy

deploy是将打包的结果部署到服务器,因此需要指出服务器的地址,且通常需要提供用户名和密码

案例:

第一步:在要上传的模块的pom.xml文件中添加如下代码
<distributionManagement>
           <repository>
              <id>releases</id>
              <name>internal releases</name>
              <url>http://192.168.1.221:8081/repository/maven-releases</url>
          </repository>
          <snapshotRepository>
              <id>snapshots</id>
              <name>internal snapshot</name>
              <url>http://192.168.1.221:8081/repository/maven-snapshots</url>
          </snapshotRepository>
  </distributionManagement>
第二步:在settings.xml中配置私服用户信息,要与上文的id相符合

  <servers>
      <server>
        <id>releases</id>
        <username>android-jinchuang</username>
        <password>jinchuang</password>
      </server>
      <server>
        <id>snapshots</id>
        <username>android-jinchuang</username>
        <password>jinchuang</password>
      </server>
  </servers>

在IDEA中使用Maven

查找需要的依赖

中央仓库地址:https://mvnrepository.com,我们可以在上面查找需要的jar包

image-20191226190815007

选择版本

image-20191226190838745

复制依赖

image-20191226190859243

将复制的内容填写到pom.xml中的dependencies下即可

镜像仓库

Maven默认访问中央仓库来获取依赖,一些时候可能会很慢,我们可以在配置文件中添加镜像服务器来解决这个问题

需要强调的是,镜像仓库的jar包通常没有中央仓库齐全

在Maven安装路径/conf/settings.xml中找到mirrors标签添加内容

 <mirror>
      <id>alimaven</id>
      <mirrorOf>central</mirrorOf>
      <name>aliyun maven</name>
    <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
    </mirror>

在IDEA中我们可以自定义仓库路径和配置文件

image-20191226191521676

从上到下,分别是,Maven路径,配置文件,仓库路径

Web项目目录

image-20191226191808264

运行生命周期

image-20191226191840897

其他常用操作

image-20191226191957555

  1. 重新导入Maven项目,相当于刷新
  2. 更新所有Maven项目资源和文件夹
  3. 下载依赖和源码
  4. 添加新的Maven项目
  5. 运行某个生命周期指令
  6. 运行自定义指令
  7. 显示依赖关系图
  8. 关闭已展开

运行WEB项目

Maven项目的运行与普通项目没有太大的区别,不过我们还可以通过Maven插件来运行web项目,tomcat和一些常见服务器都有Maven插件

需要强调的是,Tomcat的Maven插件,最后一次更新是8.x版本,如果要使用最新的web服务器还是需要单独下载

1.原始方式配置外部Tomcat

2.插件方式

? 2.1添加插件配置到pom.xml

<build>
    <finalName>MavenP4</finalName>
    <pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
      <plugins>

        <plugin>
          <groupId>org.apache.tomcat.maven</groupId>
          <artifactId>tomcat7-maven-plugin</artifactId>
          <version>2.2</version>
          <configuration>
            <port>8888</port>
            <path>/</path>
          </configuration>
        </plugin>


      </plugins>
    </pluginManagement>
  </build>

2.2添加运行配置

image-20191226225547572

image-20191226225716782

image-20191226225735924


原文链接:https://www.cnblogs.com/yangyuanhu/p/12104990.html
如有疑问请与原作者联系

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:Java连载65-自定义手动抛出异常、子类的异常范围、数组初探

下一篇:Spring中如何使用工厂模式实现程序解耦?