一、Maven是干什么的?

我相信只要你写过足够多的代码,就...
肯定有思考过写一个脚本方便把项目自动打包成war并部署到服务器;
肯定有思考过对于一个web项目用什么样的文件结构才比较合适,怎么样才算得上是best practice;
也许还想过弄个中心仓库免去每次都要自己网上手动找包的麻烦 ...
 - - - - - - - - - - - - -
Maven正是一个做这些事情的工具。如果你真的尝试做过上面的事情,就很容易理解Maven了。
那么自己弄和用Maven有什么区别呢?借用《Maven编程实战》里的一个的比喻,建立高度自定义的构建系统(自己写脚本)就像买组装PC,虽然其乐无穷,但是耗时费力,结果也不一定很好,并且实际项目中也不可能给你这么多时间。使用Maven就像购买品牌PC,省时省力,而且直接就是best practice,还能得到Maven社区的大量支持 ...

二、用Maven的好处

个人觉得用Maven最大的好处在于:统一了各种规范(流程和项目结构)+依赖管理。

补充一些理由:

  1. 让你在IDEA和Eclipse等各种集成环境中切换毫无压力
  2. 方便大家合作写代码,节约了学习成本,因为各种东西都已经约定、统一好了
  3. 并且这些约定还是best practice,不仅成熟、稳定,还好用!
  4. 资料多、支持多,随便去GitHub上看Java项目,Maven结构的尤其多
  5. 节省时间。腾出自己网上到处下jar包的时间,做更有价值的事情
  6. 自动化打包部署,有效减少鼠标键盘的磨损度、缓解脱发等不良症状。。。
  7. 手动省略号。。。。

总之。Maven绝对是个懒人必备的工具。不过,在刚开始,你不得不花一点时间来适应、学习它(很快就会变成习惯!)。只需少许的时间就能掌握这样一件神器,显然非常划算。

三、Maven与命令行

跟着官方教程操作一遍差不多就好了。。稍微记录一下↓

▲运行mvn package后得到jar包的实际结构(注意resource的位置):

▲哪里找包:https://mvnrepository.com/

▲生成简单java项目原型:

mvn -B archetype:generate \
-DarchetypeGroupId=org.apache.maven.archetypes \
-DgroupId=com.mycompany.app \
-DartifactId=my-app

▲生成简单java web项目原型:

mvn archetype:generate \
-DarchetypeGroupId=org.apache.maven.archetypes \
-DarchetypeArtifactId=maven-archetype-webapp \
-DgroupId=com.mycompany.app \
-DartifactId=my-webapp

▲跳过测试:

mvn clean install -DskipTests

▲只跑特定的测试mvn test -Dtest=[ClassName]#[MethodName],例:

$ mvn test -Dtest=ProfileDAOTest#saveProfile 

▲pom.xml参考(其实是方便自己copy...)

<?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>org.sample.webapp</groupId>
<artifactId>web-test-01</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>war</packaging> <properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<!-- -source 1.5 中不支持 try-with-resources-->
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties> <dependencies>
<!-- https://mvnrepository.com/artifact/junit/junit -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-api -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.25</version>
</dependency>
<!-- https://mvnrepository.com/artifact/ch.qos.logback/logback-classic -->
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.2.3</version>
<scope>test</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/ch.qos.logback/logback-core -->
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-core</artifactId>
<version>1.2.3</version>
</dependency>
<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.38</version>
</dependency>
<!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.zaxxer</groupId>
<artifactId>HikariCP</artifactId>
<version>2.7.8</version>
<scope>compile</scope>
</dependency>
</dependencies>
</project>

pom.xml

四、Maven与IntelliJ IDEA

本来想写点什么,发现官网都准备好了。。feature-rich integration for Maven以及https://www.jetbrains.com/help/idea/maven-support.html

不过我觉得还是应该以命令行为主,集成环境里的操作作为辅助,这样,IDEA就成了一个高级代码编辑器,之后换其它开发环境也很容易适应。

▲以图表方式查看项目依赖关系:

▲Maven怎么和web开发结合可以参考这个:https://www.imooc.com/learn/587

Maven笔记 #01# 入门的更多相关文章

  1. Echarts和Highcharts学习笔记01——入门了解

      Echarts是国内百度团队开发的(开源),基于Canvas,适合数据量较大的情况: Highcharts是国外的(商用需授权),基于SVG,方便自己定制,但能使用的图表类型有限: Echarts ...

  2. Redis 笔记 01:入门篇

    Redis 笔记 01:入门篇 ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ...

  3. Bootstrap笔记--快速入门

    首先是Bootstrap的简介: 业余了解:下面这个网址可以查询IP地址的地理位置 下面学习:(具体可以参考Bootstrap中文网) 栅格系统 Bootstrap 提供了一套响应式.移动设备优先的流 ...

  4. DBFlow框架的学习笔记之入门

    什么是DBFlow? dbflow是一款android高性的ORM数据库.可以使用在进行项目中有关数据库的操作.github下载源码 1.环境配置 先导入 apt plugin库到你的classpat ...

  5. SaToken学习笔记-01

    SaToken学习笔记-01 SaToken版本为1.18 如果有排版方面的错误,请查看:传送门 springboot集成 根据官网步骤maven导入依赖 <dependency> < ...

  6. Redis:学习笔记-01

    Redis:学习笔记-01 该部分内容,参考了 bilibili 上讲解 Redis 中,观看数最多的课程 Redis最新超详细版教程通俗易懂,来自 UP主 遇见狂神说 1. Redis入门 2.1 ...

  7. Python学习--01入门

    Python学习--01入门 Python是一种解释型.面向对象.动态数据类型的高级程序设计语言.和PHP一样,它是后端开发语言. 如果有C语言.PHP语言.JAVA语言等其中一种语言的基础,学习Py ...

  8. maven实战(01)_搭建开发环境

    一 下载maven 在maven官网上可下载maven:http://maven.apache.org/download.cgi 下载好后,解压.我的解压到了:D:\maven\apache-mave ...

  9. 软件测试之loadrunner学习笔记-01事务

    loadrunner学习笔记-01事务<转载至网络> 事务又称为Transaction,事务是一个点为了衡量某个action的性能,需要在开始和结束位置插入一个范围,定义这样一个事务. 作 ...

随机推荐

  1. 【设计模式】用追MM来解释23种设计模式,转

    创建型模式 1.FACTORY—追MM少不了请吃饭了,麦当劳的鸡翅和肯德基的鸡翅都是MM爱吃的东西,虽然口味有所不同,但不管你带MM去麦当劳或肯德基,只管向服务员说“来四个鸡翅”就行了.麦当劳和肯德基 ...

  2. 《全栈性能Jmeter》-3JMeter体系结构

  3. 20165321 实验一Java开发环境的熟悉-2

  4. vue中使用hotcss--stylus

    页面中一直闪动这个. 后面改成scss后还是这样.还不知道原因

  5. cocos2d CCNode类(节点属性大全)

    1 CCNode是cocos2d-x中一个很重要的类,CCNode是场景.层.菜单.精灵等的父类.而我们在使用cocos2d-x时,接触最多的就是场景.层.菜单.精灵等.所以有必要先弄懂CCNode类 ...

  6. (已解决)iOS真机运行 Xcode报错(libpng error: CgBI: unhandled critical chunk)

    Cocos2d-x加载图片资源出现libpng error: CgBI: unhandled critical chunk Xcode7.3 设置Remove Text Metadata From P ...

  7. RabbitMq入门详解

    因为项目中需要用到RabbitMq,所有花时间研究了下,虽然博客园已经有前辈写了关于RabbitMq的文章.但还是有必要研究下! 什么是RabbitMq? 百度解释:MQ全称为Message Queu ...

  8. 定义一个Rectangle类,该类提供getLength和getWidth方法。

    import java.util.Comparator; /** * 定义一个Rectangle类,该类提供getLength和getWidth方法.利用图1-18中的findMax例程编写 * 一种 ...

  9. 简易C# socket

    服务器 using System; using System.Net; using System.Net.Sockets; using System.Text; using System.Thread ...

  10. oracle中实现自增id

    在一些数据库(例如mysql)中,实现自增id只要在建表的时候指定一下即可, 但是在oracle中要借助sequence来实现自增id, 要用上自增id,有几种方式: 1.直接在insert语句中使用 ...