Maven的具体使用和优点
1.Apache软件基金会提供的项目自动化构建和项目管理软件。
基于项目对象模型(POM)概念,Maven利用一个中央信息片段能管理一个项目的构建、报告、文档等步骤。
官方网站:http://maven.apache.org/
2.(1)方便jar包管理;
(2)开发工具不同,项目结构可能不同,maven可统一项目结构;
(3)每个项目都要用的核心代码包(自己写的工具包),单独列出一个工程叫核心包,打成一个jar包,让七八个工程直接引用jar包就行了,但若核心包升级了还得手动更新,maven可以解决该问题;
3.使用前提:
(1)下载
http://maven.apache.org/download.cgi
(2) 配置环境变量 (系统变量)
M2_HOME = maven根路径
PATH = maven根路径/bin
(3) 执行maven命令
mvn -v 显示maven版本信息
4.bin文件:可执行的文件,
bat文件:批处理文件;
5.maven工程
my-app
|-- pom.xml
`-- src
|-- main
| `-- java
| `-- com
| `-- mycompany
| `-- app
| `-- App.java
`-- test
`-- java
`-- com
`-- mycompany
`-- app
`-- AppTest.java
6.pom.xml
<?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>com.mycompany.app</groupId> <!--公司所做项目名称-->
<artifactId>my-app</artifactId> <!--模块的名称-->
<version>1.0-SNAPSHOT</version> <!--版本号-->
</project>
groupId:公司所做的项目的名称
artifactId:模块的名称
version:版本号
groupId + artifactId + version = 坐标
7.编译代码
>d:(切换到d盘)
>cd myapp (进入到某个文件)
>mvn compile
编译后产生target目录,里面存放的就是编译后的字节码文件
注意:编译只会编译main文件里的Java程序;所以不会编译test文件里的测试程序;
mkdir 新文件夹名称
8.执行单元测试
mvn test
http://mvnrepository.com/ (查询坐标)
在pom.xml添加对junit的依赖
<!--配置当前项目对第三方jar的依赖-->
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.2</version>
</dependency>
</dependencies>
9.清除target
mvn clean
10.打包 (Java源代码打成jar包)
mvn package
11.到本地仓库中
mvn install
12.修改本地仓库位置
默认位置在操作的系统的~/.m2文件夹中,修改方式如下: (~:当前用户的文件夹)
1. 取消mavenhome/conf/settings.xml配置文件中的注释的该行代码:
<localRepository>/path/to/local/repo</localRepository>
2. 将其中的路径修改为自己希望的路径
<localRepository>D:/maven/repo</localRepository>
3. 并将settings.xml文件拷贝一份到D:/maven目录中
13.maven查找依赖的顺序
1. 从本地仓库中查找所需要的依赖
2. 从私有仓库中查找所需要的依赖
3. 从中央仓库(http://repo.maven.apache.org/)中查找所需要的依赖
本地仓库→ 私有仓库→ 中央仓库
14.没有任何开发工具的情况下使用maven:
使用Archetype快速创建项目
mvn archetype:generate
在输出的交互式命令中输入坐标即可创建
或
mvn archetype:generate -DgroupId=com.kaishengit.pms -DartifactId=myapp2 -Dversion=1.0.0-
SNAPSHOT
15.eclipse开发工具安装插件:M2Eclipse,然后才能使用maven(版本在10以上该插件是自带的)
使用M2Eclipse插件创建项目
http://eclipse.org/m2e/
将下载好的插件→放入dropins文件夹(myeclipse安装路径中的)即可;
注意:Windows→preferences→installations(add配置好环境变量的maven路径)→user settings(首先将maven config文件夹里的settings.xml复制到本地仓库 的路径)settings.xml路径
16.先配好再建maven工程→maven build...→package(打包)→install(将该包发布到本地仓库)
在另一个项目中要引用刚才那个项目的包→在另一个项目的pom.xml中添加依赖(引用包的坐标)
17.maven的聚合 (多个maven项目想要同时执行maven的某个命令:先建一个新的maven项目,但pacakging 选择pom即该项目只有pom.xml文件)
<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.kaishengit</groupId>
<artifactId>all</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>pom</packaging>
<modules>
<module>../core</module> <!--通过该pom项目的路径找到core项目的路径-->
<module>../dao</module>
</modules>
</project>
18.scope
• compile——编译(默认值,在编译、打包时使用)
• provided——编译和测试时使用的依赖,打包时不加入,例如servlet-api.jar
• runtime——运行时依赖,编译时不依赖,例如mysql.jar
• test——只有测试时依赖,编译和打包时不使用,例如junit.jar
19.若在项目空间添加的Java文件在开发工具中刷新不出来:右键项目→properties→Java build path→source→add folder
20.webapp项目典型的结构(若结构不全自己可以补全,通过19)
---src
---main
---java(源代码文件)
---resources(etc配置文件)
---webapp(webRoot)
---test
---java
---resources
21.maven build → compile package(编译后打包的命令)
得复制到tomcat的webapp下麻烦
22.为了解决21的问题:jetty maven有个插件(wiki.eclipse.org/Jetty/Feature/Jetty_Maven_Plugin)
pom.xml中的build节点的Plugins节点中plugin节点中添加依赖:命令jetty:run
测试用jetty环境
23.改端口号:在pom.xml中添加
web项目
Jetty插件
<build>
<finalName>struts</finalName>
<plugins>
<plugin>
<groupId>org.mortbay.jetty</groupId>
<artifactId>jetty-maven-plugin</artifactId>
<configuration>
<scanIntervalSeconds>10</scanIntervalSeconds>
<webApp>
<contextPath>/</contextPath> <!--请求的路径-->localhost:9090/home.do
</webApp>
<connectors>
<connector implementation="org.eclipse.jetty.server.nio.SelectChannelConnector">
<port>9090</port> <!--服务器端口号-->
<maxIdleTime>60000</maxIdleTime>
</connector>
</connectors>
</configuration>
</plugin>
</plugins>
</build>
24.访问私服:http://url:端口号/nexus
25.依赖传递和冲突
• 依赖级别相同时,在dependency前面的会使用
• 依赖级别不相同时,依赖路径短的会使用
• 依赖传递只会传递compile级别的包
• 排除依赖
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-core</artifactId>
<version>2.3.15.1</version>
<exclusions>
<exclusion>
<groupId></groupId>
<artifactId></artifactId>
</exclusion>
</exclusions>
</dependency>
26.其他配置
<properties>
<junit.version>4.11</junit.version>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>${junit.version}</version>
<scope>test</scope>
</dependency>
</dependencies>
Maven的具体使用和优点的更多相关文章
- Maven实战——Gradle,构建工具的未来?
许晓斌-- 四月 05, 2011 Maven面临的挑战 软件行业新旧交替的速度之快往往令人咂舌,不用多少时间,你就会发现曾经大红大紫的技术已经成为了昨日黄花,当然,Maven也不会例外.虽然目前它基 ...
- Maven 项目在 Eclipse 的创建配置
第1步 New 菜单 Other.. -> Maven -> Maven Project ,然后单击 Next .如下图所示 第2步 在New Maven Project向导中,选择Cre ...
- maven实践--你所需要了解的maven
基本概念 是什么? Maven是一个强大的Java项目构建工具. 什么是构建工具? 构建工具是将软件项目构建相关的过程自动化的工具.构建一个软件项目通常包含以下一个或多个过程: 生成源码(如果项目使用 ...
- AutoConfig工具使用指南
转载:http://blog.csdn.net/fighterandknight/article/details/70245905 13.1. 需求分析 13.1.1. 解决方案 13.2. Auto ...
- 亲测:三个值得练手的Java实战项目
测试奇谭,BUG不见. 大家好,我是谭叔. 一提到编码,很多小伙伴便感到头疼,特别是半路转行的小伙伴或者没有系统学习过计算机基础的小伙伴. 对于想学而不知道怎么学的小伙伴,我可以分享下我的策略: 刷一 ...
- 创建Maven父子项目以及它们的优点
此文引用:https://blog.csdn.net/zxl8876/article/details/104180133 创建maven父子项目 第一步创建父项目: 新建一个普通的maven项目 删除 ...
- Maven的特点、优点-功能摘要
Maven功能摘要 以下是Maven的主要特点: 遵循最佳实践的简单项目设置 - 在几秒钟内启动新项目或模块 所有项目的一致使用 - 意味着新开发人员进入项目的时间不会增加 卓越的依赖管理,包括自动更 ...
- 分析maven的优点
1.依赖管理: 就是对jar包的管理. 2.项目的一键构建: 编译--->测试--->运行--->打包--->安装 运行一个maven工程(web工程)只需要一个命令:toma ...
- MAVEN学习-第一个Maven项目的构建
MAVEN安装成功之后就可以进行项目的构建和管理了: 为什么要用maven进行项目的构建和管理? 对于初学者来说一个最直接的也是最容易里的优点在于JAR包的管理,相对于以前开发一个项目的时候我们需要用 ...
随机推荐
- MyCat - 数据库中间插件
什么是MyCat 是目前最流行的分布式数据库中间插件 为什么使用MyCat 如今随着互联网的发展,数据的量级也是撑指数的增长,从GB到TB到PB.对数据的各种操作也是愈加的困难,传统的关系性数据库已经 ...
- Redhat下安装SAP的相关
Red Hat Enterprise Linux 6.x: Installation and Upgrade - SAP Note 1496410 Red Hat Enterprise Linux 7 ...
- 关于ABViewer的疑问解答
很多 CAD小伙伴都对 ABViewer 这款软件不陌生吧.ABViewer 是用来处理图纸和工程文档管理的一款通用软件.可以用它来查看,编辑,转换,测量和打印DWG和其他CAD文件,以及3D模型和光 ...
- Sign in with apple
UI: https://developer.apple.com/design/human-interface-guidelines/sign-in-with-apple/overview/ 审核: h ...
- Hive Lateral View
一.简介 1.Lateral View 用于和UDTF函数[explode,split]结合来使用. 2.首先通过UDTF函数将数据拆分成多行,再将多行结果组合成一个支持别名的虚拟表. 3.主要解决在 ...
- C#-NLog记录日志
Nuget获取包 配置文件 <?xml version="1.0" encoding="utf-8" ?> <nlog xmlns= &quo ...
- 自定义View(一),初识自定义View
看了无数资料,总结一下自定义View 先明白一个自定义View的三大流程 onMeasure() 测量,决定View的大小 onLayout() 布局,决定View在ViewGroup中的位置 onD ...
- Python with语句和__enter__、__exit__过程抽取思想
with语句的应用场景 编程中有很多操作都是配套使用的,这种配套的流程可以称为计算过程,Python语言为这种计算过程专门设计了一种结构:with语句.比如文件处理就是这类计算过程的典型代表. 使 ...
- 日常bug(1)
今天在写写代码的时候,前端找我,说我写的一个接口有可能有问题.导致前端的数据不能正常显示,我去看了一下,确实不能正常显示.问题的原因是本来前端循环遍历一个json里的数组,但是接下来的数据变成对象了. ...
- C++学习(1)—— 初识C++
1. 变量 作用:给一段指定的内存空间起名,方便操作这段内存空间 语法:数据类型 变量名称=变量初始值 #include<iostream> using namespace std; i ...