- 浏览: 496128 次
- 性别:
- 来自: 广州
文章分类
- 全部博客 (502)
- Java (70)
- Linux (10)
- 数据库 (38)
- 网络 (10)
- WEB (13)
- JSP (4)
- 互联网 (71)
- JavaScript (30)
- Spring MVC (19)
- HTML (13)
- CSS (3)
- AngularJS (18)
- Redis (5)
- Bootstrap CSS (1)
- ZooKeeper (4)
- kafka (6)
- 服务器缓存 (4)
- Storm (1)
- MongoDB (9)
- Spring boot (16)
- log4j (2)
- maven (3)
- nginx (5)
- Tomcat (2)
- Eclipse (4)
- Swagger (2)
- Netty (5)
- Dubbo (1)
- Docker (7)
- Hadoop (12)
- OAuth (1)
- webSocket (4)
- 服务器性能 (7)
- Session共享 (1)
- tieye修改 (1)
- 工作 (1)
- 有用的语录 (0)
- https (2)
- common (5)
- 产品开发管理 (1)
- CDN 工作原理 (1)
- APNS、GCM (1)
- 架构图 (3)
- 功能实现分析 (1)
- JMX (1)
- 服务器相关操作命令 (1)
- img02 (0)
- 服务器环境搭建 (9)
- goodMenuBook (1)
- CEInstantPot (0)
- 有用数据 (1)
- 百度地图WEB API (2)
- 正则表达式 (1)
- 样式例子 (2)
- staticRecipePressureCooker.zip (1)
- jCanvas (1)
- 网站攻击方法原理 (1)
- 架构设计 (3)
- 物联网相关 (3)
- 研发管理 (7)
- 技术需求点 (1)
- 计划 (1)
- spring cloud (11)
- 服务器开发的一些实用工具和方法 (1)
- 每天学到的技术点 (4)
- Guava (1)
- ERP 技术注意要点 (2)
- 微信小程序 (1)
- FineRepor (1)
- 收藏夹 (1)
- temp (5)
- 服务架构 (4)
- 任职资格方案 (0)
- osno_test (1)
- jquery相关 (3)
- mybatis (4)
- ueditor (1)
- VueJS (7)
- python (10)
- Spring EL (1)
- shiro (1)
- 前端开发原理与使用 (7)
- YARN (1)
- Spark (1)
- Hbase (2)
- Pig (2)
- 机器学习 (30)
- matplotlib (1)
- OpenCV (17)
- Hystrix (1)
- 公司 (1)
- miniui (4)
- 前端功能实现 (3)
- 前端插件 (1)
- 钉钉开发 (2)
- Jenkins (1)
- elasticSearch使用 (2)
- 技术规范 (4)
- 技术实现原理 (0)
最新评论
Maven 简单介绍
1.Maven以pom作为项目对象模型。
一个最简单的pom.xml
Maven聚合
1.聚合,对多个项目进行聚合,每个子项目就会变成一个模块(各个模块为一个Maven项目),在总的项目pom中可以用<modules>进行聚合在一起,总的项目输出为pom,当进行打包是就不用一个个打包了,在总项目打包就会为每个模块打包(当然也可以一个个进行构建)
2.就是一个Maven项目里包含多个Maven子项目(嵌套),以下为主体的pom.xml内容:
Maven继承
1.继承,父项目把依赖放到<dependencyManagement>,这样子项目依赖就不用再写版本号和作用范围了(写groupId、artifactId就可以了),用<parent>引入父项目就可以了,它会往上找到第一个<dependencyManagement>中的版本号,保证版本号的一致。
依赖传递
1.A依赖B,B依赖C,那么A就依赖C了(就是会加入C包)
2.A可用在引入B时用<exclusion>排除依赖C(就是不加入C包)
依赖冲突
1.就是同时引入了多个版本的同一个包
2.短路优先,就是可以最先加入到项目中的版本
3.同样路径,先声明先优先
maven 打包源代码
1.需要使用到插件,因为maven本身没有这个功能,但package,compile,install是有的,但也可以用指定的版本来完成
Maven相关命令(Eclipse中不用mvn)
mvn -v 查看maven版本
mvn compile 编译,编译项目.java文作
mvn test 测试,运行测试用例,生成测试报告
mvn package 打包,生成jar、编译好的.class、测试报告放到target目录中,生成工程目录的jar包
mvn clean 删除target目录和里面和文件(.class)
mvn install 安装jar包到本地仓库中,复制pom.xml,xxx.jar到本地maven仓库中,更改为项目指定的名字xxx.pom,xxx.jar,当然jar里面是有原来pom.xml文件的
mvn deploy 将jar包上传安装到服务器仓库中
maven生命周期(就是各功能(命令)会经历了那些阶段工作)
maven阶段描述
清理、编译(compile)、测试(test)、打包(package)、集成测试、验证、部署(install)
clean,清理项目生命周期
1.pre-clean,执行清理前的工作
2.clean,清理上一次构建生成的所有文件
3.post-clean,执行清理后的文件
default,构建项目生命周期
1.compile,编译
2.test,测试
3.package,打包
4.install,部署
site,生成项目站点生命周期
1.pre-site,在生成项目站点前要完成的工作
2.site,生成项目的站点文件
3.post-site,在生成项目站点后要完成的工作
4.site-deploy,发布生成的站点到服务器上
maven插件
1.maven执行的命令都是通过执行插件来完成的,插件也是一个maven项目,也是通过指定坐标来得到的
2.当然大多数命令Maven已经自带,没有的才要指定插件来完成
参考原文(pom.xml 配置详解):http://blog.csdn.net/longeremmy/article/details/9670619
参考原文(pom.xml详解):http://blog.csdn.net/adeyi/article/details/17259479
参考原文(maven可选依赖):http://www.tuicool.com/articles/yaeIV3
参考原文(Dependency介绍):http://elim.iteye.com/blog/2057317
参考原文(pom.xml 配置详解):http://www.cnblogs.com/skyme/archive/2011/08/19/2146145.html
参考原文(源码打包插件):http://www.tuicool.com/articles/NFvAbm
参考原文(源码打包插件):https://my.oschina.net/xiaokaceng/blog/210498
参考原文(源码打包插件):http://blog.csdn.net/chs_jdmdr/article/details/42419191
参考原文(modules、parent、properties以及import):http://www.cnblogs.com/youzhibing/p/5427130.html
参考原文(pom.xml 配置详解):http://www.cnblogs.com/yangxia-test/p/4409736.html
参考原文(deploy出错处理):http://www.javatang.com/archives/2010/01/23/4518375.html
参考原文(Maven仓库):http://juvenshun.iteye.com/blog/359256
参考原文(Maven module):http://www.cnblogs.com/xdp-gacl/p/4242221.html
参考原文(Maven最佳实践:划分模块):http://juvenshun.iteye.com/blog/305865
1.Maven以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/maven-v4_0_0.xsd"> <!-- //使用的maven的版本号 --> <modelVersion>4.0.0</modelVersion> <!-- //Mavem私服的配置,设定仓库,按设定顺序进行查找. //指定这个项目从那些仓库中进行下载,在settings.xml中写入是对所有maven项目 --> <repositories> <!-- //这里一般是仓库的镜像 --> <repository> <id>public</id> <name>Team Nexus Repository</name> <url>http://localhost:8081/nexus/content/groups/public</url> <snapshots> <!-- //snapshot版本构件下载的支持 --> <enabled>true</enabled> <!-- //maven的更新策略,always表示总是,never表示从不。daily(默认)表示每天,interval:X表示X分钟。 --> <updatePolicy>always</updatePolicy> </snapshots> <releases> <enabled>true</enabled> <updatePolicy>always</updatePolicy> </releases> </repository> </repositories> <pluginRepositories> <!-- //这里一般是仓库的镜像 --> <pluginRepository> <id>public</id> <name>Team Nexus Repository</name> <url>http://localhost:8081/nexus/content/groups/public</url> <snapshots> <enabled>true</enabled> <updatePolicy>always</updatePolicy> </snapshots> <releases> <enabled>true</enabled> <updatePolicy>always</updatePolicy> </releases> </pluginRepository> </pluginRepositories> <!-- //项目发布到私服配置,在工程中进行包发布到服务器配置 --> <distributionManagement> <repository> <!-- //这里ID要与settings.xml中server里的ID一致 --> <id>nexus-releases</id> <name>Team Nexus Release Repository</name> <!-- //这里URL不是镜像的URL,是仓库的URL --> <url>http://localhost:8081/nexus/content/repositories/releases</url> </repository> <snapshotRepository> <id>nexus-snapshots</id> <name>Team Nexus Snapshot Repository</name> <url>http://localhost:8081/nexus/content/repositories/snapshots</url> <!-- <uniqueVersion>false</uniqueVersion> --> </snapshotRepository> </distributionManagement> <!-- //Mavem私服的配置,设定仓库,按设定顺序进行查找. --> <!-- //定义变量 --> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <!-- //定义spring.version变量,下面使用是用"${spring.version}"就可以了 --> <spring.version>1.2.6</spring.version> <developer.organization><![CDATA[xy公司]]></developer.organization> </properties> <!-- //这个项目的maven坐标定义 //groupId,组织标识,例如:org.codehaus.mojo,在M2_REPO目录下,将是: org/codehaus/mojo目录。就是项目坐标 //artifactId,项目名称,例如:my-project,在M2_REPO目录下,将是:org/codehaus/mojo/my-project目录。就是项目模块坐标 //packaging,打包的格式,可以为:pom (就是pom.xml的复制(可能会进行编码转码)), jar , maven-plugin , ejb , war , ear , rar , par //version,版本号,例如:1.0,在M2_REPO目录下,将是:org/codehaus/mojo/my-project/1.0目录。格式为:主版本.次版本.增量版本-限定版本号。 //加SNAPSHOT发布时会放到SNAPSHOT版本管理处(版本后会有时间戳),加RELEASE或不加会入到RELEASE版本管理处 //name,这个项目的名称,项目的名称, Maven产生的文档用 //url,这个项目url,项目主页的URL, Maven产生的文档用 --> <groupId>com.proserver</groupId> <artifactId>CESmart</artifactId> <packaging>war</packaging> <version>0.0.1-SNAPSHOT</version> <name>CESmart</name> <url>http://www.midea.com.cn</url> <!-- //项目开发者所属组织 --> <organization> demo </organization> <!-- //项目开发者所属组织的URL --> <organizationUrl> http://hi.baidu.com/banseon </organizationUrl> <!-- //项目描述 --> <description></description> <!-- //项目开发者描述,参见developers/developer元素 --> <developers></developers> <!-- //项目的其他贡献者描述,参见developers/developer元素 --> <contributor></contributor> <!-- //项目license描述 --> <licenses></licenses> <!-- //这个项目依赖那些maven项目(就是别人放到仓库中的jar包(它也是一个maven项目,有它们的maven坐标)) //要用到别人那些项目就引用它的maven坐标 //maven会读取它们(jar包)里面的pom.xml文件,把它们项目依赖那些maven项目那会加载进来,这样你就可以引用别人的maven坐标就可以了,不用管它们的jar包 //scope,compile(default),provided,runtime,test,system,import,就是这个jar只能在那里使用 //1.compile,缺省值,适用于所有阶段,会随着项目一起发布。 //2.provided,类似compile,期望JDK、容器或使用者会提供这个依赖。 //3.runtime,只在运行时使用,如JDBC驱动,适用运行和测试阶段。 //4.test,只在测试时使用,用于编译和运行测试代码。不会随项目发布。 //5.system,类似provided,需要显式提供包含依赖的jar,Maven不会在Repository中查找它。 //6.import,实现多继承(因为每个项目都只能申明唯一的一个父项目),用在<dependencyManagement>中实现引入多个父项目 //exclusions,就是把那些包除外,不包含到本项目中,用于多版本的管理上 //type,指定依赖项的类型 //optional,依赖是否可选(默认false),当为true的时候,引入这个项目(A)的项目(B)是不会引入这个项目(A)引入的这个包(C)的,如果B要引入C就要求pom中自己引入了 //1.假设以上配置是项目A的配置,即:Project-A --> Project-B。在编译项目A时,是可以正常通过的。 //2.如果有一个新的项目X依赖A,即:Project-X -> Project-A。此时项目X就不会依赖项目B了。如果项目X用到了涉及项目B的功能,那么就需要在pom.xml中重新配置对项目B的依赖。 //3.配置可选依赖的原因:1、节约磁盘、内存等空间;2、避免license许可问题;3、避免类路径问题,等等。 //4.举例来说,一个类似hibernate的项目,它支持对mysql、oracle等各种数据库的支持,但是在引用这个项目时,我们可能只用到其对mysql的支持,此时就可以在这个项目中配置可选依赖。 --> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>${junit.version}</version> <scope>test</scope> <type></type> //使用maven什么插件来处理依赖 <optional></optional> <exclusions> <exclusion> <groupId>groupC</groupId> <artifactId>artifactC</artifactId> </exclusion> </exclusions> </dependency> </dependencies> <!-- //定义构建行为(就是如何构建项目(定义如何生成你想要的东西,如jar包、war包)) --> <build> <!-- --> <!-- //进行打包时在工程目录下的生成文件的文件名,install时会更改为项目坐标定义时的文件名,它们两个内容一样,名字不一样 --> <finalName>redis</finalName> </build> </project>
Maven聚合
1.聚合,对多个项目进行聚合,每个子项目就会变成一个模块(各个模块为一个Maven项目),在总的项目pom中可以用<modules>进行聚合在一起,总的项目输出为pom,当进行打包是就不用一个个打包了,在总项目打包就会为每个模块打包(当然也可以一个个进行构建)
2.就是一个Maven项目里包含多个Maven子项目(嵌套),以下为主体的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.youzhibing.account</groupId> <artifactId>account-aggregator</artifactId> <version>1.0.0-SNAPSHOT</version> <packaging>pom</packaging> //输出设置为POM <name>Account Aggrregator</name> <url>http://maven.apache.org</url> <modules> //要聚合的模块 <!-- //模块都写在此处 //项目所在的目录路径,如:"../task-sla" --> <module>account-register</module> <module>account-persist</module> </modules> </project>
Maven继承
1.继承,父项目把依赖放到<dependencyManagement>,这样子项目依赖就不用再写版本号和作用范围了(写groupId、artifactId就可以了),用<parent>引入父项目就可以了,它会往上找到第一个<dependencyManagement>中的版本号,保证版本号的一致。
父项目pom.xml中 <dependencyManagement> //依赖管理,不会引入到项目中,提供了一种管理依赖版本号的方式 <dependencies> <dependency> </dependency> </dependencies> </dependencyManagement> 子项目pom.xml中 <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.4.1.RELEASE</version> </parent>
依赖传递
1.A依赖B,B依赖C,那么A就依赖C了(就是会加入C包)
2.A可用在引入B时用<exclusion>排除依赖C(就是不加入C包)
依赖冲突
1.就是同时引入了多个版本的同一个包
2.短路优先,就是可以最先加入到项目中的版本
3.同样路径,先声明先优先
maven 打包源代码
1.需要使用到插件,因为maven本身没有这个功能,但package,compile,install是有的,但也可以用指定的版本来完成
<plugins> <plugin> <!-- //插件坐标 --> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-source-plugin</artifactId> <version>2.2.1</version> <executions> <!-- //执行行为控制 --> <execution> <!-- //定义一个任务的ID --> <id>attach-sources</id> <!-- //定义工作在那个阶段进行 --> <phase>package</phase> <goals> <!-- //类似执行mvn source:jar,就是要执行的命令 --> <goal>jar-no-fork</goal> </goals> </execution> </executions> </plugin> </plugins>
Maven相关命令(Eclipse中不用mvn)
mvn -v 查看maven版本
mvn compile 编译,编译项目.java文作
mvn test 测试,运行测试用例,生成测试报告
mvn package 打包,生成jar、编译好的.class、测试报告放到target目录中,生成工程目录的jar包
mvn clean 删除target目录和里面和文件(.class)
mvn install 安装jar包到本地仓库中,复制pom.xml,xxx.jar到本地maven仓库中,更改为项目指定的名字xxx.pom,xxx.jar,当然jar里面是有原来pom.xml文件的
mvn deploy 将jar包上传安装到服务器仓库中
maven生命周期(就是各功能(命令)会经历了那些阶段工作)
maven阶段描述
清理、编译(compile)、测试(test)、打包(package)、集成测试、验证、部署(install)
clean,清理项目生命周期
1.pre-clean,执行清理前的工作
2.clean,清理上一次构建生成的所有文件
3.post-clean,执行清理后的文件
default,构建项目生命周期
1.compile,编译
2.test,测试
3.package,打包
4.install,部署
site,生成项目站点生命周期
1.pre-site,在生成项目站点前要完成的工作
2.site,生成项目的站点文件
3.post-site,在生成项目站点后要完成的工作
4.site-deploy,发布生成的站点到服务器上
maven插件
1.maven执行的命令都是通过执行插件来完成的,插件也是一个maven项目,也是通过指定坐标来得到的
2.当然大多数命令Maven已经自带,没有的才要指定插件来完成
<build> <plugs> <plugin> <groupId>org.apache.maven.plugins</groupId>//对原码进行打包的插件 <artifactId>maven-source-plugin</artifactId> <version>2.4</version> <executions> //执行参数设置 <execution> <id>add-resource</id> <phase>package</phase> //执行package阶段时执行 <goals> //生成目标 <goal>jar-no-fork</goal> //生成目标命令 </goals> <configuration> //配置参数 <resources> //这个元素描述了项目相关的所有资源路径列表,例如和项目相关的属性文件,这些资源被包含在最终的打包文件里。 <resource> //这个元素描述了项目相关或测试相关的所有资源路径 <directory>src/main/java</directory>//描述存放资源的目录,该路径相对POM路径 <includes> //包含的模式列表,例如**/*.xml.(就是用于进行匹配那些文件要打到包里的) <include>**/*.xml</include> </includes> </resource> </resources> </configuration> </execution> </executions> </plugin> <plugs> </build>
参考原文(pom.xml 配置详解):http://blog.csdn.net/longeremmy/article/details/9670619
参考原文(pom.xml详解):http://blog.csdn.net/adeyi/article/details/17259479
参考原文(maven可选依赖):http://www.tuicool.com/articles/yaeIV3
参考原文(Dependency介绍):http://elim.iteye.com/blog/2057317
参考原文(pom.xml 配置详解):http://www.cnblogs.com/skyme/archive/2011/08/19/2146145.html
参考原文(源码打包插件):http://www.tuicool.com/articles/NFvAbm
参考原文(源码打包插件):https://my.oschina.net/xiaokaceng/blog/210498
参考原文(源码打包插件):http://blog.csdn.net/chs_jdmdr/article/details/42419191
参考原文(modules、parent、properties以及import):http://www.cnblogs.com/youzhibing/p/5427130.html
参考原文(pom.xml 配置详解):http://www.cnblogs.com/yangxia-test/p/4409736.html
参考原文(deploy出错处理):http://www.javatang.com/archives/2010/01/23/4518375.html
参考原文(Maven仓库):http://juvenshun.iteye.com/blog/359256
参考原文(Maven module):http://www.cnblogs.com/xdp-gacl/p/4242221.html
参考原文(Maven最佳实践:划分模块):http://juvenshun.iteye.com/blog/305865
相关推荐
### 一、Maven是什么 Maven是一款基于服务Java平台的自动化构建工具 **构建**就是以“Java源文件”、“框架配置文件”、“JSP”、“HTML”、“图片”等资源为“原材料”,去生产一个可以运行的项目的过程 ### ...
### Maven的简单使用 #### Maven简介 Maven是一款由Apache软件基金会提供的开源项目管理工具,主要用于Java项目的构建、依赖管理和项目信息管理。它基于项目对象模型(POM),通过一系列标准化的任务来帮助开发者更...
它的简单操作接口有助于团队快速构建和测试,同时,由于 Maven 能自动生成项目报告,团队成员可以实时获取反馈,加速迭代过程。Maven 还可以通过持续集成服务器,如 Jenkins,实现自动化构建和测试,确保代码质量。 ...
本实例将详细介绍如何创建和管理一个简单的Maven多模块项目。 首先,我们要理解Maven的模块关系。在Maven中,多模块项目是由一个父模块(Parent Module)和若干子模块(Child Modules)组成。父模块主要负责定义...
### Maven 中文介绍 #### Maven 是什么? Maven 是 Apache Maven 项目的一部分,它是一种用于 Java 项目的构建和管理工具。Maven 不仅仅是一个构建工具,更确切地说,它是一套项目管理和理解工具。Maven 提供了一...
在本项目中,我们将探讨如何将这三个框架与Maven进行简单整合,并在JDK 1.8和Tomcat 9的环境下运行。 首先,我们需要理解每个组件的作用: 1. **Spring**:这是一个全面的轻量级应用程序框架,提供了AOP(面向切面...
本文详细介绍了exec-maven-plugin的基本概念、配置方法、执行简单和系统脚本、捕获命令输出、条件执行、并发执行、使用环境变量、错误处理、高级配置、使用案例以及局限性。通过这些知识点,读者可以更加自信地在...
通过本文的介绍,我们可以了解到Maven的基本概念、安装配置、基本使用和深入应用详解。 Maven的基本概念包括POM(Project Object Model,项目对象模型)、标准集合(archetype)、项目生命周期和依赖管理系统。POM...
本示例将详细介绍如何使用Maven搭建一个基础的Web项目,并解决创建过程中可能出现的报错问题。 ### 一、Maven环境配置 首先,确保你已经安装了Java Development Kit (JDK),因为Maven是基于Java的。接着,下载Maven...
### Maven的介绍与应用 **Maven** 是一个在Java开发领域内被广泛采用的项目管理工具,由Apache软件基金会维护和支持。它以其强大的功能、灵活性以及对多种编程语言的支持而受到开发者的青睐。本文将从Maven的定义...
下面,我们将对Maven 3.5~3.6.3各版本的下载进行详细介绍。 Maven 3.5版本 Maven 3.5是Maven的稳定版,发布于2016年10月。该版本引入了许多新的功能和改进,例如: * 改进了DEPENDENCY MANAGEMENT机制,支持多个...
Maven in action.pdf Maven2+Eclipse开发J2EE.pdf ...Maven简单实用教程.docx OTNVD_WebLogicServerDevelopment_CN.pdf 《Maven实战》(国内首本Maven著作)(Maven的安装、配置及使用入门) 《Maven权威指南》.pdf.pdf
Maven通过引入项目对象模型(POM)、坐标系统、仓库、生命周期和插件等概念,使得构建过程可以自动化进行,只需要通过简单的命令,就可以完成编译、运行单元测试、生成文档、打包、部署等构建工作,从而大幅提高了...
Maven的设计原则是基于项目对象模型(Project Object Model,简称POM)的概念,使得开发者可以通过简单的XML配置文件来定义项目的结构和构建过程。 #### Maven的核心功能 1. **依赖管理**:Maven能够自动下载并...
【标题】"maven+springmvc简单实例demo"是一个基于Maven和Spring MVC框架的简易示例项目,旨在帮助开发者快速理解如何将这两个强大的工具结合使用来构建Java Web应用程序。Maven是Apache软件基金会开发的一个项目...
而"Maven模块化简单的SSH"这个标题意味着我们将探讨如何使用Maven构建工具来实现SSH(Spring、Struts和Hibernate)框架的模块化项目。 **Maven模块化** Maven是Apache软件基金会开发的一款项目管理和集成工具,它...
《Maven权威指南》是Java开发者必备的工具书,它全面而深入地介绍了Maven这一强大的项目管理和构建工具。Maven不仅仅是一个编译工具,更是Java开发过程中的一个中心枢纽,它简化了项目的构建、依赖管理和文档生成等...