文档章节

maven教程--结合eclipse

sekaiga
 sekaiga
发布于 2017/10/30 09:50
字数 1471
阅读 56
收藏 0

maven教程--结合eclipse

 

概念与优势

 

maven是一种非常流行的项目管理工具,它将项目依赖的jar包都变成了配置文件---pom.xml。

maven通过pom文件读取需要哪些依赖包,然后到网上mavenRepository下载依赖包到本地。用到的依赖包以及相关文件都会下载到指定本地目录中,形成本地库。在编译项目时,再引入你的项目中。

结构如下图:

 

maven源网址在国外,下载依赖包非常的缓慢甚至失败,所以想要顺畅得使用maven,还需要配置国内镜像。具体操作见下文

 

项目源码大小大大减小

它的优势在于maven结构的项目源码非常小,将动辄几MB,几十MB的依赖jar包,变成了几十个字节的配置文件。将项目源码从几百MB缩减到不到1MB,利于下载与上传。在github开源社区上使用非常广泛。

 

多级依赖包自动下载

几乎所有发布的jar包都已经支持maven,在各自的pom文件中,标注依赖了哪些jar包以及版本号。这样,maven就可以将多级依赖包都一并下载。大大简化依赖包下载工作。

 

轻松解决依赖包冲突

发生依赖冲突时,找到引入依赖包的配置并去除(exclusion)依赖即可。通过使用界面化工具可以更方便得完成去除依赖操作。具体操作见下文

 

 

实际操作

这里都使用eclipse来做说明,eclipse自带maven插件。

 

新建maven项目

菜单栏 File --> new --> project ,搜索maven,选择maven project

勾选 create a simple project (skip archetype selection),建立简单的项目,不使用模板。

创建完成后 结构如下

 

maven默认目录结构

常用路径说明:

  • src/main/java 源码路径
  • src/main/resources 配置文件路径
  • src/main/webapp web项目页面代码
  • src/test/java 测试代码路径
  • src/test/resources 测试配置文件路径

其他:

  • target/classes 源代码编译生成的class文件
  • target/test-classes 源代码编译生成的class文件

建议使用maven默认的目录结构,阅读他人,或者他人在阅读你的代码将变得更容易。使用非默认结构也可以在pom文件中进行配置。

 

原有项目转换成maven项目

项目名右键 --> configure --> convert to maven project 即可

由于普通java项目与maven项目结构不同,需要移动原有文件到默认maven结构目录下,或者在pom文件中进行目录配置。

 

项目刷新

maven结构的项目,其项目配置都写在pom文件中,项目刷新需要使用 ALT+F5, 或者 项目名右键 --> maven --> update project。

 

pom文件简介

pom里面除了配置依赖包,还有jdk版本、打包的配置(web包、可执行jar)等等。

pom文件中的配置项非常丰富,这里只做一些简单介绍。

 

如何配置依赖

mavenRepository网站上搜索选择你想要的依赖包名称,如spring-core

选择一个中意的版本

复制配置到pom文件中dependencies标签下即可。

 

如何配置国内源

maven根目录在C:\Users\{用户名}\.m2\

修改maven根目录下的conf文件夹中的setting.xml文件,内容如下:


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

之后就能享受如飞的maven下载速度。

参考: maven 亲测可用国内镜像 阿里云

 

如何去除二次依赖

例如去除 common-logging 依赖

eclipse中打开pom文件切换到Dependency Hierarchy页面

选中commons-logging,右键 exclude maven artifact... 保存

依赖中commons-logging就消失了。

pom文件中表现为 增加了exclusion 去除了commons-logging

 

maven常用命令/生命周期

在Maven2中有了明确的生命周期概念,而且都提供与之对应的命令,使得项目构建更加清晰明了。主要的生命周期阶段:

  • validate,验证工程是否正确,所有需要的资源是否可用。
  • compile,编译项目的源代码。
  • test-compile,编译项目测试代码。
  • test,使用已编译的测试代码,测试已编译的源代码。
  • package,已发布的格式,如jar,将已编译的源代码打包。
  • integration-test,在集成测试可以运行的环境中处理和发布包。
  • verify,运行任何检查,验证包是否有效且达到质量标准。
  • install,把包安装在本地的repository中,可以被其他工程作为依赖来使用
  • deploy,在整合或者发布环境下执行,将最终版本的包拷贝到远程的repository,使得其他的开发者或者工程可以共享。
  • generate-sources,产生应用需要的任何额外的源代码,如xdoclet。

如果要执行项目编译,那么直接输入:mvn compile即可,对于其他的阶段可以类推。阶段之间是存在依赖关系(dependency)的,如test依赖test-compile。在执行mvn test时,会先运行mvn test-compile,然后才是mvn test。

这些命令在eclipse中 项目名右键 run as --> maven build --> goals 输入框中使用

 

maven打包

pom文件中增加配置

war包

<build>
    <plugins>
      <plugin>
        <artifactId>maven-war-plugin</artifactId>
        <version>2.6.0</version>
      </plugin>
    </plugins>
  </build>

可执行jar包

<build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-shade-plugin</artifactId>
        <version>3.0.0</version>
        <executions>
          <execution>
            <phase>package</phase>
            <goals>
              <goal>shade</goal>
            </goals>
            <configuration>
              <transformers>
                <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                  <mainClass>***</mainClass>
                </transformer>
              </transformers>
            </configuration>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>

***填写mainClass

 

带依赖打包

   <build>
    <plugins>
      <plugin>
        <artifactId>maven-assembly-plugin</artifactId>
        <executions>
          <execution>
            <phase>package</phase>
            <goals>
              <goal>single</goal>
            </goals>
          </execution>
        </executions>
        <configuration>
          <descriptorRefs>
            <descriptorRef>jar-with-dependencies</descriptorRef>
          </descriptorRefs>
        </configuration>
      </plugin>
    </plugins>
  </build>

然后执行 maven package

生成打包文件在项目路径 target目录下 .jar/.war文件

 

其他

maven除了结合eclipse使用 ,也是可以在windows linux下单独使用的。

© 著作权归作者所有

sekaiga
粉丝 1
博文 4
码字总数 5863
作品 0
私信 提问
Tapestry 教程(二)依赖、工具以及插件

在我们深入代码之前,首先必须整好开发环境。你应该已经有了一些,或者因为各种原因,在你的开发机上全都已经有了。 JDK1.5或者更新的版本 Tapestry需要Java开发套件(JDK)1.5的版本或者更高...

LeoXu
2016/01/08
208
0
SonarQube代码质量管理平台的配置与使用 吴水成

一、SonarQube的配置(前提,先用admin用户登录) 1、 安装中文汉化包: Setting >> Update Center >> AvailablePlugins >> LOCALIZATION >> Chinese Pack >> Install 安装完汉化包之后需要重......

牛角尖
2016/04/11
21
0
maven插件安装问题

我在Maven官网下载了maven3.0.5。 我的Eclipse版本是4.2.0;JDK版本是1.8.0_72 我可以正确的安装maven。但在安装maven插件时,总是遇到问题。①离线安装:我按照网上的教程,在eclipse路径下新...

我觉得他很厉害
2016/09/01
826
7
非spring框架下使用querydsl

Querydsl是一个采用API代替拼凑字符串来构造查询语句,可跟 Hibernate 和 JPA 等框架结合使用。网上很多教程都是结合spring JPA框架下使用的教程,本文介绍的是非spring环境下querydsl JPA整...

penngo
01/07
366
0
使用maven创建java项目

在本教程中,我们将向你展示如何使用 Maven 来创建一个 Java 项目,导入其到Eclipse IDE,并打包 Java 项目到一个 JAR 文件。 所需要的工具: Maven 3.3.3 Eclipse 4.2 JDK 8 注意:请确保 ...

神棍先生
2018/12/29
0
0

没有更多内容

加载失败,请刷新页面

加载更多

springboot2.0 maven打包分离lib,resources

springboot将工程打包成jar包后,会出现获取classpath下的文件出现测试环境正常而生产环境文件找不到的问题,这是因为 1、在调试过程中,文件是真实存在于磁盘的某个目录。此时通过获取文件路...

陈俊凯
今天
6
0
BootStrap

一、BootStrap 简洁、直观、强悍的前端开发框架,让web开发更加迅速、简单 中文镜像网站:http://www.bootcss.com 用于开发响应式布局、移动设备优先的WEB项目 1、使用boot 创建文件夹,在文...

wytao1995
今天
10
0
小知识:讲述Linux命令别名与资源文件的区别

别名 别名是命令的快捷方式。为那些需要经常执行,但需要很长时间输入的长命令创建快捷方式很有用。语法是: alias ppp='ping www.baidu.com' 它们并不总是用来缩短长命令。重要的是,你将它...

老孟的Linux私房菜
今天
8
0
《JAVA核心知识》学习笔记(6. Spring 原理)-5

它是一个全面的、企业应用开发一站式的解决方案,贯穿表现层、业务层、持久层。但是 Spring 仍然可以和其他的框架无缝整合。 6.1.1. Spring 特点 6.1.1.1. 轻量级 6.1.1.2. 控制反转 6.1.1....

Shingfi
今天
8
0
Excel导入数据库数据+Excel导入网页数据【实时追踪】

1.Excel导入数据库数据:数据选项卡------>导入数据 2.Excel导入网页数据【实时追踪】:

东方墨天
今天
11
1

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部