快速了解Maven

也许是本人不才,初识Maven时,被各种不明所以的教程搞得一头雾水,而在后来的使用中,我发现Maven大部分功能没有想象的那么困难。

本片文章面向Maven初学者,希望能让其以最快的速度了解Maven并享受到它所带来的一系列好处。

[一个简单的问题]

在进行讲解前,先提问一个简单的问题。

假如你正在Eclipse下开发两个Java项目,姑且把它们称为A、B,其中A项目中的一些功能依赖于B项目中的某些类,那么如何维系这种依赖关系的呢?

笔者在使用Maven前是这样做的,将B项目打包为jar,并在A项目的Library下导入B的jar文件。

这样做有着很明显的缺点:

1.如果在开发过程中,发现B中的bug,则必须重新将B打包并对A项目进行重编译操作

2.在协同开发A项目时,为了保证其能够正常运行,要么选择将B打包入A中,要么选择将B一样发布出去并告知开发者使用方法。显然这两个方法都不太好,前者可能造成资源浪费(比如开发者可能正在开发依赖B的其它项目,B已经存储到本地了),而后者则会为项目正常运行带来风险(一旦把工作交给人工注定会带来一定的失败率)。

因此,这样手动的控制项目间依赖关系显然是一种‘拙劣'的方法。

[Maven介绍]

依据笔者看来,Maven的核心功能便是合理叙述项目间的依赖关系。

所有的Maven项目包含着一个名为pom.xml的文件,在文件中记录着自己的<groupId><artifactId><version>等字段,这些字段在创建Maven项目时填写,Maven会依据它们来定位到该项目。

在pom中的另一个关键标签是<dependencies>,该标签下可以包含若干个<dependency>标签,而<dependency>下则是上面介绍的<groupId><artifactId><version>等依赖字段,它们确定着一个唯一的项目版本。

一个典型的pom.xml[来自项目luajava]:

<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>org.keplerproject</groupId>
  <artifactId>luajava</artifactId>
  <version>1.1</version>
  <packaging>jar</packaging> 

  <name>luajava</name>
  <url>http://maven.apache.org</url> 

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>2.0.2</version>
        <configuration>
          <source>1.7</source>
          <target>1.7</target>
        </configuration>
      </plugin>
    </plugins>
  </build>
  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
</project> 

[Maven库]

以刚才的A、B项目为例,在A项目的pom文件中写入<dependency>关联B项目,Maven会在工作区中找到B项目,并创建依赖。此时A项目可以直接访问到B项目中的类资源,而且对A调试时依然会击中B项目中设置的断点。

除去工作区的依赖关联外,Maven也可以关联一个远端镜像中的项目,在默认情况下,如果工作区中没有对应的项目记录,Maven会连接到中心仓库查找,如果找到,它会把项目下载到本地库中(Windows中本地库位于用户文档的.m2目录下),并自动设置关联。这是一个十分便利的特性,在我们需要额外jar包支持时,不再需要进行手动的下载和引入,我们仅需要将需要项目对应的依赖字段粘贴到pom的合适位置,剩下的交给Maven完成即可。

[一个例子]

那么,我们如何知道所需项目的groupId等字段呢?

一般而言,如果官方项目支持Maven,在其页面一般会有一段依赖字段以供复制,但也确实存在支持Maven但没有给出依赖字段的情况。而另一些项目的Maven特性由第三方维护,此时从官方渠道获得对Maven的支持比较困难。

因此,查询依赖字段首选的方案,是使用Maven搜索服务进行搜索。

这里笔者推荐一个地址:mvnrepository.com

下面以使用Eclipse关联MySqlJDBC驱动为例子,在此之前,请在Help->AboutEclipse中确认其支持Maven:

在Eclipse官方新版本中,已经内置有对Maven的支持,如果版本比较旧可以去安装Maven插件。

我们先来新建一个Maven项目,New->Project->MavenProject->Createasimpleproject(skiparchetypeselection).

下面是这步比较重要,填写这个项目的GroupId等依赖字段,这里填写的字段会在其它项目对其依赖时用到,未填写的部分都为选填内容:

之后,我们去mvnrepository.com搜索"MySql JDBC"

很快,我们找到了结果,点击进入查看详细的版本信息:

这里列出了MySql JDBC的多个版本及使用情况,这里我们选择一个第二新的版本5.1.34:

复制Maven框中的内容,把它们写到pom的<dependencies>下:

<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.test</groupId>
  <artifactId>maventest</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <dependencies>
    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>5.1.34</version>
    </dependency>
  </dependencies>
</project> 

在Progress读条结束后,可以看到项目中多出Maven Dependencies,里面可以找到我们刚刚引入的jdbc驱动包:

[其它特性]

1.镜像源

很明显,Maven中心仓库负载比较大,而且不在国内,因此速度非常慢,有时甚至会找不到依赖。因此,尤其是在小规模团队开发这种场合下,搭建一个Maven私服会极大的提升效率。这里推荐一个Maven镜像搭建工具:Nexus:http://www.sonatype.org/nexus/

使用它可以很快速方便的搭建私有Maven镜像源,之后在Maven的settings.xml里进行配置即可。

2.惰性下载src源码

在一些时候,我们需要参阅依赖项目的源文件,此时可以尝试直接双击class文件,如果Maven镜像源中存在源文件,会自动下载到本地,eclipse会自动加载并显示。

3.编译参数配置

笔者使用EclipseLuna版,Maven默认的Java编译版本为1.5,我们可以在pom指定其编译版本,使其提升至1.7(参考luajavapom中的build标签);此外这些设置也会被诸如jenkins持续集成等自动化工具读取并进行恰当配置。

总结

以上就是本文关于快速了解Maven的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站其他相关专题。如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!

(0)

相关推荐

  • maven项目引用外部jar包的方法

    问题描述: 有一个java maven web项目,需要引入一个第三方包gdal.jar,但是这个包是自己打包的,在maven中央库里面找不到该包,因此我采用传统的方式,将这个包拷贝到:项目名称\src\main\webapp\WEB-INF\lib的目录下,然后通过config build path将该gdal.jar包引入到项目工程中.对于传统java web项目,这么做当然没有问题,但是对于maven项目,项目打包(mvn install)时就会报错,在项目调试时(debug on ser

  • Eclipse中导入Maven Web项目并配置其在Tomcat中运行图文详解

    今天因为实习的关系需要讲公司已经开发的项目导入进Eclipse,而公司的项目是用Maven来构建的所以,需要将Maven项目导入进Eclipse下. 自己因为没有什么经验所以搞了得两个多小时,在这里和大家分享一下自己的经验已经在这之中遇到的一些问题. 首先我通过svn将公司的项目checkout到了本地. 因为Maven遵循的是规约比配置重要的原则,所以Maven项目的结构一般是进入目录后是一个pom.xml文件和一个src文件夹,当然可能还存在一些README之类的这些都不重要,最关键的就是p

  • maven的安装配置以及在IDEA中的配置图文教程

    一.下载maven: 1.maven官网:http://maven.apache.org/download.cgi 二.安装配置 1.下载后解压到本地目录,如图 2.配置环境变量:我的电脑右键->属性->高级系统设置->环境变量 系统变量中新建一个名字为MAVEN_HOME的变量, MAVEN_HOME=D:\Java\apache-maven-3.5.2 然在path中加入 %MAVEN_HOME%\bin; 配置完成. 打开 cmd,在里面敲:mvn -version 如果能打印如上

  • 详解eclipse创建maven项目实现动态web工程完整示例

    本文介绍了eclipse创建maven项目实现动态web工程完整示例,分享给大家.具体如下: 需求表均同springmvc案例 此处只是使用maven 注意,以下所有需要建立在你的eclipse等已经集成配置好了maven了,说白了就是新建项目的时候已经可以找到maven了 没有的话需要安装maven 1.新建maven项目,如果不在上面,请到other里面去找一下 2,进入maven项目之后,点击next 选择webapp之后 next 输入两个id package可以不写,是它默认帮你新建一

  • 修改maven本地仓库路径的方法

    本地仓库是指存在于我们本机的仓库,在我们加入依赖时候,首先会跑到我们的本地仓库去找,如果找不到则会跑到远程仓库中去找.对于依赖的包大家可以从这个地址进行搜索:http://mvnrepository.com/. 远程仓库是指其他服务器上的仓库,包括全球中央仓库,公司内部的私服,又或者其他公司提供的公共库.后面会专门聊聊私服,公共库的话只是一个地址,大家会引用就行了. Maven的本地仓库是用来存储所有项目的依赖关系(插件jar和其他文件,这些文件被Maven下载)到本地文件夹.很简单,当你建立一

  • Eclipse如何导入Maven项目详解(新手初学)

    最近遇到Maven管理下的Spring MVC项目,组内某位将项目代码扔过来,一脸懵逼(囧),查阅了一些资料后终于将此项目运行通了(>_<),特此记录下来与各位分享. 通俗的来说,Maven就是个类似于git的项目管理工具.而Spring MVC就是将M(Model).V(View).C(Controller)三者进行分离进行处理,更有利于开发的进行.下面我将介绍一个别人已经编译好的Maven项目扔给你应该怎样导入到集成开发环境中. 开发环境:Eclipse Step1: 在Eclipse中,

  • IDEA Maven Mybatis generator 自动生成代码(实例讲解)

    IDEA Maven Mybatis generator 自动生成代码的实例讲解 一.安装配置maven以及在Idea中配置maven 安装过程步骤可以看上面的博文,里面介绍得很详细. 二.建数据表 DROP TABLE IF EXISTS `t_user`; CREATE TABLE `t_user` ( `id` varchar(100) NOT NULL, `username` varchar(20) DEFAULT NULL, `password` varchar(20) DEFAULT

  • 快速了解Maven

    也许是本人不才,初识Maven时,被各种不明所以的教程搞得一头雾水,而在后来的使用中,我发现Maven大部分功能没有想象的那么困难. 本片文章面向Maven初学者,希望能让其以最快的速度了解Maven并享受到它所带来的一系列好处. [一个简单的问题] 在进行讲解前,先提问一个简单的问题. 假如你正在Eclipse下开发两个Java项目,姑且把它们称为A.B,其中A项目中的一些功能依赖于B项目中的某些类,那么如何维系这种依赖关系的呢? 笔者在使用Maven前是这样做的,将B项目打包为jar,并在A

  • 详解SpringBoot 使用Spring Initializr 快速构建工程(官方推荐)

    序言: 在此之前,我们主要通过Maven Archetype 来快速生成Maven项目,项目原型相对简陋,对各种IDE的支持也不太友好.然而通过Spring官方提供的Spring Initializr 来构建Maven项目,它不仅完美支持IDEA和Eclipse,而且能自动生成启动类和单元测试代码,给开发人员带来极大的便利!! 注:本文含Eclipse&IDEA两部分教程. 一.Spring Initializr 使用教程 ( Eclipse )具体步骤: 步骤1 : 使用浏览器打开: http

  • IDEA快速搭建Java开发环境的教程图解

    作为IntelliJ IDEA mac新手,IDEA如何快速搭建Java开发环境呢? 今天小编就给大家带来了IntelliJ IDEA mac使用教程,想知道IDEA如何快速搭建Java开发环境?那就一起来看看吧! 全局JDK(默认配置) 具体步骤:顶部工具栏 File ->Other Settins -> Default Project Structure -> SDKs -> JDK 示例: 根据下图步骤设置JDK目录,最后点击OK保存. 注:SDKs全称是Software D

  • MAC下基于maven使用IDEA走读TestNG源码解析

    之前用Python执行程序都是python xxx.py,最近在使用Java技术栈的TestNG,于是想能够也用命令行实现- 创建一个Maven项目 确保已安装了Maven,可使用Maven命令后,使用以下命令可快速创建Maven项目 mvn archetype:generate -DgroupId=com.mycompany.app -DartifactId=my-app -DarchetypeArtifactId=maven-archetype-quickstart -DarchetypeV

  • IntelliJ IDEA使用教程从入门到上瘾(2019图文版)

    前言:IntelliJ IDEA 如果说IntelliJ IDEA是一款现代化智能开发工具的话,Eclipse则称得上是石器时代的东西了.其实笔者也是一枚从Eclipse转IDEA的探索者,随着近期的不断开发实践和调试,逐步体会到这款智能IDE带来的巨大开发便利,在强大的插件功能支持下,诸如对Git和Maven的支持简直让人停不下来,各种代码提示,包括JS更是手到擒来,最终不得不被这款神奇的IDE所折服.为了让身边更多的小伙伴参与进来,决定写下这篇文章,与君共享.(*^_^*) 高级传送门:In

  • 简单了解Java日志脱敏框架sensitive

    这篇文章主要介绍了简单了解Java日志脱敏框架sensitive,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 问题 为了保证用户的信息安全,敏感信息需要脱敏. 项目开发过程中,每次处理敏感信息的日志问题感觉很麻烦,大部分都是用工具类单独处理,不利于以后统一管理,很不优雅. 于是,就写了一个基于 java 注解的日志脱敏工具. github sensitive 项目介绍 日志脱敏是常见的安全需求.普通的基于工具类方法的方式,对代码的入侵性太强.

  • SpringBoot通知机制的实现方式

    1. 快速创建maven管理的SpringBoot项目 1.访问 http://start.spring.io/ 2. 选择构建工具Maven Project. Spring Boot版本1.3.6以及一些工程基本信息点击"Switch to the full version."java版本选择1.7: 3.点击Generate Project下载项目压缩包 4.解压后 使用eclipse,Import -> Existing Maven Projects -> Next

  • Java Selenide 简介与用法

    目录 Selenide 介绍 什么是selenium 官方快速入门 元素定位 元素操作 浏览器操作 断言 常用配置 Selenide 和 Webdriver 对比 Selenide 介绍 Selenide github Selenide 官方文档 什么是selenium 一套软件工具,用来支持不同的自动化测试方法 开源软件:可以根据需要来增加重构工具的某些功能 跨平台:linux , windows mac 核心功能就是可以在多个浏览器上进行自动化测试 支持多种编程语言 目前已经被google

  • Maven的国内镜像(快速解决jar下载过慢的问题)

    Maven简介 maven作为一个项目管理工具确实非常好用,结果在使用时候,你会发现下载jar速度不如自己在网上下载.之前oschina的中央仓库可用,现在oschina的maven服务器关了,只能拿国内镜像来替代.在网上发现阿里云公开了一个中央仓库,就顺手写下来了,方便以后使用. 修改Maven目录中的conf/settings.xml 找到mirrors节点,添加到节点下 1.这是阿里云仓库 <mirror> <id>alimaven</id> <name&g

  • 使用Vert.x Maven插件快速创建项目的方法

    本文介绍了使用Vert.x Maven插件快速创建项目的方法,分享给大家,具体如下: 文档地址: https://reactiverse.io/vertx-maven-plugin 已有项目添加该插件 在项目 pom.xml 目录,执行下面的命令即可添加: mvn io.reactiverse:vertx-maven-plugin:1.0.17:setup 执行该命令后,在 pom.xml 中会增加下面的配置: <properties> <vertx.version>3.5.3&l

随机推荐