文档章节

maven学习总结

S
 Sleeplesslion
发布于 2017/06/15 23:32
字数 902
阅读 4
收藏 0

1.认识maven

  • maven是一个项目构建工具,也是一个项目管理工具
  • maven包含一个项目对象模型(Project Object Model),一组标准集合,一个项目生命周期(Project Lifecycle),一个依赖管理系统(Dependency Management System),和用来定义在生命周期阶段中插件目标的逻辑。
  • 约定大于配置(Convention Over Configuration)
  • maven插件:一个插件有多个目标,每一个目标固定执行多个步骤

2.使用maven

  • 下载maven,配置环境变量,执行 mvn -version检查配置是否正确
  • 第一个插件的使用:maven help,它有四个目标:active-profiles,effective-pom,effective-settings,describe,执行插件目标:mvn help:active-profiles,获取一个插件的描述:mvn help:describe -Dplugin=compiler -Dmojo=compile -Dnull
  • 创建一个简单maven项目:mvn archetype:generate -DgroupId=your group -DartifactId=your artifactId -DpackageName=your package name
  • 创建一个简单的maven web项目:mvn archetype:generate -DgroupId=your group -DartifactId=your artifactId -DpackageName=your package name -DarchetypeArtifactId=maven-archetype-webapp
  • 进入项目根目录,构建项目:mvn install
  • 运行构建的项目:java -cp target/simple-1.0-SNAPSHOT.jar com.ibm.java.App

3.理解一些名词

  • 插件:一个单个或者多个目标的集合
  • 目标:目标是maven中的工作单元,每个插件都自己的多个目标
  • 生命周期:mvn package中的package就是一个生命周期中的一个阶段。一个阶段是呗maven称为“构建生命周期”中的一个步骤。生命周期是包含在一个项目构建中的一系列有序的阶段的组合。默认maven生命周期:process-resources > compile > process-classes > process-test-resources > test-compile > test > prepare-package > package

4.仓库

  • 打开http://repo1.maven.org/maven2/,这是一个中央仓库,里面的文件都是按照/<groupId>/<artifactId>/<version>/<artifactId>-<version>.<packaging>的格式放置的。

5.创建web项目

  • 创建了一个简单的web项目之后,一般情况下,需要把项目打成war包放入Jetty或者Tomcat容器中,启动容器来进行测试。现在,可以在pom.xml文件中配置Jetty插件,直接在maven中运行web项目。
  • <plugin>
      <groupId>org.mortbay.jetty</groupId>
      <artifactId>maven-jetty-plugin</artifactId>
    </plugin>

    配置好之后,调用:mvn jetty:run

  • 启动jetty成功,访问localhost:8080会直接显示maven创建的默认index.jsp Hello World!

  • 这个时候,虽然你能访问index.jsp,但是如果创建一个简单的servlet因为编译时期需要依赖servlet包,所以需要加入servlet 依赖
<dependency>
   <groupId>javax.servlet</groupId>
   <artifactId>servlet-api</artifactId>
   <version>2.5</version>
   <scope>provided</scope>
</dependency>
  • 创建简单的servlet,在web.xml中配置,执行:mvn clean install,再次启动jetty,访问localhost:8080/demo

6.创建多项目,使用父pom

7.属性引用

  • 使用${env.property},引用环境变量中的值
  • 使用${settings.property},引用settings文件中的值
  • 使用${project.property},引用pom文件中的值
  • 使用${property},引用自定义的变量

8.scope依赖范围

  • compile,默认值,用于编译,用于打包
  • provided,用于编译,不打包,例如servlet api
  • runtime,用于运行和测试时运行,编译期不需要,例如JDBC驱动
  • test,用于测试的编译和运行
  • system,提供本地jar包的依赖,不推荐使用

9.依赖冲突的解决

  • 排除一个传递性依赖
    <dependency>
      <groupId>org.sonatype.mavenbook</groupId>
      <artifactId>project-a</artifactId>
      <version>1.0</version>
      <exclusions>
        <exclusion>
          <groupId>org.sonatype.mavenbook</groupId>
          <artifactId>project-b</artifactId>
        </exclusion>
      </exclusions>
    </dependency>

     

  • 多项目结构时,使用父POM统一管理依赖版本,使用dependencyManagement标签控制

10.构建生命周期

  • maven有三大标准生命周期
  • 清理生命周期 clean   pre-clean > clearn > post-clean
  • default生命周期
  • 站点生命周期 site  pre-site > site > post-site > site-deploy

写的太简单,以后再补充生产中出现的问题

© 著作权归作者所有

共有 人打赏支持
S
粉丝 0
博文 2
码字总数 902
作品 0
私信 提问
maven入门 (二)_私服安装与上传下载

本篇文章主要介绍maven的私服安装和 jar包的上传与下载。毕竟大家还是在公司需要上传jar包到自己公司私服的。 1.安装私服 下载链接: https://pan.baidu.com/s/17dbQny3d1VgKBA529BTwJA 密码:...

养码青年
05/19
0
0
一个月工作总结

从2015年6.27毕业到9.3正式来百世入职。 期间在一个小公司待过一段时间。 一,技术方面 1.Maven 学会了使用Maven 知道了Maven文件的基础结构。 如果使用Maven管理项目jar包依赖和版本管理 。...

-鹏
2015/10/19
118
2
使用Leopard Redis操作Redis

使用Leopard Redis操作Redis 学习如何在旧项目中使用Leopard Redis。 本指南将引导您完成使用Leopard Redis操作Redis。 How to complete this guide 你可以从头开始并完成每一个步骤,或者您可...

Leopard后端框架
2015/02/12
0
2
springboot 集成elasticsearch遇到的坑

最近开始学习elasticsearch,所以就想着在springboot里面集成一下elasticsearch,结果遇到了不少麻烦,下面总结一下,但愿大家和自己以后都少走弯路 首先声明下,本人开始学习elasticsearch...

Meet相识_bfa5
2017/11/07
0
0
求大神驻足,有关java路径的疑问

相信大神们在学习java的路上,遇到过不少有关路径的难题吧。我确实遇到不少,好像不同的环境的相对路径是不同。比如maven项目和普通的eclipse创建的项目。 你们有总结过并解开这些难题吗。求...

coco_J
2015/03/13
57
1

没有更多内容

加载失败,请刷新页面

加载更多

开源软件会被云杀死吗 ?

本文转载云头条,原作者:Michael Stiefel是Reliable Software公司的负责人,是一名软件架构和开发顾问。 文章要点 虽然开源开发不会消失,但商业开源厂商的未来不是很有希望。随着全面管理的...

linuxCool
25分钟前
1
0
OSChina 周三乱弹 —— 谈什么对象?睡什么觉?

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @胖达panda :最肯忘却古人诗,最不屑一顾是相思。分享童丽的单曲《红豆生南国》: 《红豆生南国》- 童丽 手机党少年们想听歌,请使劲儿戳(这...

小小编辑
30分钟前
81
5
stylus

stylus基础教程,stylus实例教程,stylus语法总结

miaojiangmin
今天
3
0
PHP生成CSV之内部换行

当我们使用PHP将采集到的文件内容保存到csv文件时,往往需要将采集内容进行二次过滤处理才能得到需要的内容。比如网页中的换行符,空格符等等。 对于空格等处理起来都比较简单,这里我们单独...

豆花饭烧土豆
今天
2
0
使用 mjml 生成 thymeleaf 邮件框架模板

发邮件算是系统开发的一个基本需求了,不过搞邮件模板实在是件恶心事,估计搞过的同仁都有体会。 得支持多种客户端 支持响应式 疼彻心扉的 outlook 多数客户端只支持 inline 形式的 css 布局...

郁也风
今天
8
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部