使用 Maven 构建应用

引言

  1. 掌握Maven的网络模型
  2. 学会POM文件的制作
  3. 掌握Maven的常用命令
  4. 了解模块化编程思想

Maven 简介

Apache Maven是一个软件项目管理和综合工具。
基于项目对象模型(POM)的概念,Maven可以从一个中心资料片管理项目构建,报告和文件。

为什么需要使用MAVEN

  • Maven之前我们经常使用Ant来进行Java项目的构建然后Ant仅是一个构建工具, 它并未对项目的中的工程依赖以及项目本身进行管理, 并且Ant作为构建工具未能消除软件构建的重复性, 因为不同的项目需要编写对应的Ant任务。

  • Maven作为后来者, 继承了Ant的项目构建功能, 并且提供了依赖关系, 项目管理的功能, 因此它是一个项目管理和综合工具, 其核心的依赖管理, 项目信息管理, 中央仓库, 约定大于配置的核心功能使得Maven成为当前Java项目构建和管理工具的标准选择。

Maven 安装配置

  1. 下载Apache Maven
    http://maven.apache.org/download.cgi
  2. 解压到指定文件夹,并且设置环境变量
    添加 M2_HOME 和 MAVEN_HOME、PATH
    添加 M2_HOME 和 MAVEN_HOME 环境变量到 Windows 环境变量,并将其指向你的 Maven 文件夹。
  3. 完成,以验证它,执行 mvn –version 在命令提示符下,如下图输出结果

Maven 仓库

中央仓库 = 私服,企业中通常的叫法

Maven 仓库

Settings.xml配置

settings.xml是maven的全局配置文件
Settings.xml中包含类似本地仓储位置、修改远程仓储服务器、认证信息等配置。

  • 配置优先级
    需要注意的是:局部配置优先于全局配置。 配置优先级从高到低:pom.xml> user settings > global settings 如果这些文件同时存在,在应用配置时,会合并它们的内容,如果有重复的配置,优先级高的配置会覆盖优先级低的。

  • 核心配置项示例:

<?xml version="1.0" encoding="UTF-8"?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" 
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
          xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
  <localRepository>d:\maven\repository</localRepository>
  <mirrors>
   <mirror>
        <id>nexus-aliyun</id>
        <mirrorOf>*</mirrorOf>
        <name>Nexus aliyun</name>
        <url>http://maven.aliyun.com/nexus/content/groups/public</url>
    </mirror> 
    <servers>   
        <server>
          <id>nexus-snapshots</id>
          <username>deployment</username>
          <password>zdsh123456</password>
        </server>
    </servers>  
  </mirrors>
</settings>
  • 设置本地仓库的地址
    <localRepository>d:\maven\repository</localRepository>
  • 下载镜像
    <mirror>....</mirror>
  • 中央仓库账号
    </server>... </server>

Maven pom文件

  • 基本配置项
<groupId>:组织
<artifactId>:项目/模块名称
<version>:版本号+类型
<packaging>:打包类型,默认是jar,可以配置成war、zip、pom类型。
<properties>:属性值标签,也叫变量标签。
<dependencies> :依赖标签
<distributionManagement> //发布管理
<repository>
<id>nexus-releases</id>
<name>Local Nexus Repository</name>
<url>http://10.105.7.100:8081/nexus/content/repositories/releases/</url>
</repository>
<snapshotRepository>
<id>nexus-snapshots</id>
<name>Local Nexus Repository</name>
<url>http://10.105.7.100:8081/nexus/content/repositories/snapshots/</url>
</snapshotRepository>
</distributionManagement>
  • 指定项目JDK版本
<build>
 <plugins>
 <plugin>
 <groupId>org.apache.maven.plugins </groupId>
 <artifactId>maven-compiler-plugin </artifactId>
 <version>2.1</version>
 <configuration>
 <source>1.8</source>
 <target>1.8</target>
 </configuration>
 </plugin>
 </plugins>
</build>
  • 指定编码字符集
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.encoding>UTF-8</maven.compiler.encoding>
</properties>

模块化编程

    <modules>
        <module>myshopx-web</module>
        <module>myshopx-api</module>
        <module>myshopx-common</module>
    </modules>
    <packaging>pom</packaging>

多环境配置文件切换

    <build>
        <resources>
            <!-- 需要过滤替换的资源 -->
            <resource>
                <directory>src/main/resources</directory>
                <filtering>true</filtering>
                <includes>
                    <include>JDBC.properties</include>
                </includes>
            </resource>
        </resources>
    </build>

    <profiles>
        <profile>
            <id>dev</id>
            <!-- 默认激活开发配制,使用config-local.properties来替换设置过虑的资源文件中的${key} -->
            <activation>
                <activeByDefault>true</activeByDefault>
            </activation>
            <build>
                <filters>
                    <filter>filters/dev.properties</filter>
                </filters>
            </build>
        </profile>
        <profile>
            <id>prd</id>
            <build>
                <filters>
                    <filter>filters/prd.properties</filter>
                </filters>
            </build>
        </profile>
    </profiles>

mvn clean package -Pdev --开发环境
mvn clean package -Pprd --投产环境

Maven 常用命令

mvn clean //清理项目
mvn package //打包项目
mvn install //打包并上传到本地仓库
mvn deploy //打包并发布到私服, 同时更新本地仓

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,686评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,668评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,160评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,736评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,847评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,043评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,129评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,872评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,318评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,645评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,777评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,470评论 4 333
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,126评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,861评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,095评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,589评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,687评论 2 351

推荐阅读更多精彩内容

  • 简介 Apache Maven是一个软件项目管理和理解工具。基于项目对象模型(POM)的概念,Maven可以从一个...
    我为峰2014阅读 2,001评论 0 1
  • 本文初衷 Maven 整理自己脑袋中、收藏中的那些资料,来一次清空,让自己重新开始。 整理这篇的起点是本人已经会使...
    UPUPMO阅读 6,092评论 8 198
  • Maven使用入门 1. Maven概述 Maven是什么?Maven项目对象模型(POM),可以通过一小段描述信...
    小小韩_小小红阅读 2,514评论 2 28
  • Maven概述 Maven定义Maven是一个项目管理和整合,统一管理jar包的工具;Maven为开发者提供了一套...
    THQ的简书阅读 796评论 0 0
  • maven常用命令介绍 这里主要是在eclipse中使用maven,因此只使用到了一部分命令,整理下来方便以后查阅...
    菜凯阅读 1,073评论 0 2