Maven 初见及搭建

笔者今天复习了 Maven 相关的内容,没有搭建过的小伙伴们不要错过了,灰常灰常详细哦!

Maven

简介

Maven【[ˈmevən]】这个词可以翻译为"专家","内行"。 作为Apache组织中的一个颇为成功的开源项目, Maven主要服务于基于 java 平台的项目构建,依赖管理和项目信息管理。

无论是小型的开源类库项目,还是大型的企业级应用; 无论是传统的瀑布式开发,还是流行的敏捷开发,Maven都能大显身手。

项目构建

不管你是否意识到,构建(build)是每一位程序员每天都在做的工作。早上来到公司,我们做的第一件事就是从源码库签出最新的代码,然后进行单元测试,如果测试失败,会找相关的同事一起调试,修复错误代码。 接着回到自己的工作上来,编写自己的单元测试及产品代码。

仔细总结⼀下,我们会发现,除了编写源代码,我们每天有相当一部分时间花在了编译,运行单元测试,生成文档,打包和部署等繁琐且不起眼的工作上,这就是构建。 如果我们现在还手工这样做,那成本也太高了,于是有人用软件的方法让这一系列工作完全自动化,使得软件的构建可以像全自动流水线一样,只需要一条简单的命令,所有繁琐的步骤都能够自动完成,很快就能得到最终结果。

Maven的四大特性

依赖管理系统

Maven 为 Java 世界引入了一个新的依赖管理系统 jar 包管理 jar 升级时修改配置文件即可。在Java世界中,可以用 groupId、artifactId、version 组成的 Coordination(坐标)唯一标识一个依赖。

任何基于 Maven 构建的项目自身也必须定义这三项属性,生成的包可以是 Jar 包,也可以是 war 包或者 jar 包。一个典型的依赖引用如下所示:

<dependency>
 <groupId>javax.servlet</groupId> com.baidu
 <artifactId>javax.servlet-api</artifactId> ueditor echarts
 <version>3.1.0</version>
</dependency>

坐标属性的理解

Maven 坐标为各种组件引入了秩序,任何一个组件都必须明确定义自己的坐标。

groupId

定义当前 Maven 项目隶属的实际项目-公司名称。( jar 包所在仓库路径) 由于 Maven 中模块的概念,因此一个实际项目往往会被划分为很多模块。比如 spring 是一个实际项目,其对应的 Maven 模块会有很多,如spring-core,spring-webmvc等。

artifactId

该元素定义实际项目中的一个 Maven 模块-项目名,推荐的做法是使用实际项目名称作为 artifactId 的前缀。 比如: spring-bean, spring-webmvc等。

version

该元素定义 Maven 项目当前所处的版本。

多模块构建

项目复查时 dao service controller 层分离将⼀个项目分解为多个模块已经是很通用的一种方式。

在 Maven 中需要定义一个 parent POM 作为一组 module的聚合 POM。在该POM 中可以使用标签来定义一组子模块。parent POM 不会有什么实际构建产出。而 parent POM 中的 build 配置以及依赖配置都会自动继承给子module。

一致的项目结构

Ant 时代大家创建Java项目目录时比较随意,然后通过 Ant 配置指定哪些属于 source,那些属于 testSource 等。而 Maven 在设计之初的理念就是Conversion over configuration(约定大于配置)。其制定了一套项目目录结构作为标准的 Java 项目结构,解决不同 ide 带来的文件目录不一致问题。

一致的构建模型和插件机制

<plugin>
 <groupId>org.mortbay.jetty</groupId>
 <artifactId>maven-jetty-plugin</artifactId>
 <version>6.1.25</version>
 <configuration>
 <scanIntervalSeconds>10</scanIntervalSeconds>
 <contextPath>/test</contextPath>
 </configuration>
</plugin>

所有插件都以相同的形式添加到配置文件中

Maven的安装配置和目、目录结构

Maven的安装配置

检查JDK的版本

JDK版本1.7及以上版本

下载Maven

下载地址:http://maven.apache.org/download.html

配置Maven环境变量

解压后把 Maven 的根目录配置到系统环境变量中 MAVEN_HOME,将 bin 目录配置到 path 变量中。

注:maven 解压后存放的目录不要包含中文和空格。

检查 Maven 是否安装成功

打开 dos 窗口,执行 mvn -v

出现显示 Maven 版本相关,则配置成功

相关设置

修改 maven 解压之后的 conf 目录下的settings.xml。

1.1.修改默认仓库位置
打开maven⽬录 -> conf -> settings.xml
添加仓库位置配置
<localRepository>F:/m2/repository</localRepository>
注:仓库位置改为⾃⼰本机的指定⽬录,"/"不要写反
1.2.更换阿⾥镜像,加快依赖下载
<mirror>
 <id>nexus-aliyun</id>
 <mirrorOf>central</mirrorOf>
 <name>Nexus aliyun</name>
 <url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>

Maven命令

作为开发利器的 maven,为我们提供了十分丰富的命令,了解 maven 的命令行操作并熟练运用常见的 maven 命令还是十分必要的,即使譬如 IDEA 等工具给我提供了图形界面化工具,但其底层还是依靠 maven 命令来驱动的。

Maven的命令格式如下:    mvn [plugin-name]:[goal-name]

命令代表的含义:执行 plugin-name 插件的 goal-name 目标

常用命令

注意:运行 maven 命令的时候,首先需要定位到 maven 项目的目录,也就是项目的 pom.xml 文件所在的目录。否则,必以通过参数来指定项目的目录。

命令参数

上面列举的只是比较通用的命令,其实很多命令都可以携带参数以执行更精准的任务

-D 传入属性参数

mvn package -Dmaven.test.skip=true

以 -D 开头,将 maven.test.skip 的值设为 true ,就是告诉maven打包的时候跳过单元测试。同理, mvn deploy-Dmaven.test.skip=true 代表部署项目并跳过单元测试。

-P 使用指定的Profile配置

比如项目开发需要有多个环境,一般为开发,测试,预发,正式4个环境,在 pom.xml 中的配置如下:

<profiles>
 <profile>
<id>dev</id>
 <properties>
 <env>dev</env>
 </properties>
 <activation>
 <activeByDefault>true</activeByDefault>
 </activation>
 </profile>
 <profile>
 <id>qa</id>
 <properties>
 <env>qa</env>
 </properties>
 </profile>
 <profile>
 <id>pre</id>
 <properties>
 <env>pre</env>
 </properties>
 </profile>
 <profile>
 <id>prod</id>
 <properties>
 <env>prod</env>
 </properties>
 </profile>
</profiles>
......
<build>
 <filters>
 <filter>config/${env}.properties</filter>
 </filters>
 <resources>
 <resource>
 <directory>src/main/resources</directory>
 <filtering>true</filtering>
 </resource>
 </resources>
 ......
</build>

看起来很多,但是不用担心,我们不需要去记住这些东西,但要清楚每个节点所代表的意思

profiles 定义了各个环境的变量 id , filters 中定义了变量配置文件的地址,其中地址中的环境变量就是上面 profile 中定义的值, resources 中是定义哪些目录下的文件会被配置文件中定义的变量替换。

通过 maven 可以实现按不同环境进行打包部署,例如:

mvn package -Pdev -Dmaven.test.skip=true

表示打包本地环境,并跳过单元测试

总结:Maven 在系统里搭建就这样完成了,再根据大家的开发平台将 Maven 集成进去就可以了。

战士的意志要像礁石一样坚定,战士的性格要像和风一样温柔。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值