Maven项目管理利器
来源:互联网 发布:培训学校收费软件 编辑:程序博客网 时间:2024/05/22 07:49
一、maven的目录结构
- -src
- -main
- -java
- -test
- -java
- -main
- -pom.xml
二、 maven常用命令
- mvn -v 查看maven版本
- mvn -compile 编译程序
- mvn -clean 删除target
- mvn -install 安装jar包到本地仓库中
三、 创建目录的两种方式
- archetype:generate 按照提示进行选择
- archetype:generate
-Dgroup=组织名,公司网址的反写+项目名
-DartifactId=项目名-模块名
-Dversion=版本号
-Dpackage=代码所存在的包名
四、Maven中的坐标和仓库
构件坐标
- groupId:公司名字+项目名
- artifactId:项目名+模块名
- varsion:版本号
仓库
- 本地仓库
- 远程仓库
- 镜像仓库
五、更改仓库默认路径
安装路径conf文件夹下settings.xml文件 打开找到这段备注是的代码:
<!-- localRepository | The path to the local repository maven will use to store artifacts. | Default: ${user.home}/.m2/repository <localRepository>/path/to/local/repo</localRepository> -->
复制粘贴出来
<localRepository>/path/to/local/repo</localRepository>
将localRepository便签内的值替换成新路径即可。
六、完整的项目构件过程
清理、编译、测试、打包、集成测试、验证、部署。
六、Maven的生命周期
完整的项目构件过程
清理、编译、测试、打包、集成测试、验证、部署。
maven三套独立的生命周期
clean 清理项目 1.pre-clean 执行清理前的工作 2.clean 清理上一次构建生成的所有文件 3.post-clean 执行清理后的文件default 构建项目(最核心) compile test package installsite 生成项目站点 1. pre-site 在生成项目站点前要完成的工作 2. site 生成项目的站点文档 3. post-site 在生成项目站点后要完成的工作 4. site-deploy 发布生成的站点到服务器上
七、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"> <!--指定了当前pom的版本--> <modelVersion>4.0.0</modelVersion> <groupId>com.tiakon.maven.demo</groupId> <artifactId>HoictasStudio-MavenDemo01</artifactId> <version>1.0-SNAPSHOT</version> <!-- 第一个0表示大版本号 第二个0表示分支版本号 第三个0表示小版本号 0.0.1 snapshot 快照 alpha 内部测试 beta 公测 Release 稳定 GA 正式发布 --> <!-- 打包方式:默认是jar,可选war、zip、pom <packaging></packaging> --> <!--指定编码格式--> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <!-- 项目名 <name></name> 项目地址 <url></url> 项目描述 <description></description> 开发人员列表 <developers></developers> 许可证信息 <licenses></licenses> 组织信息 <organization></organization> --> <!--依赖列表--> <dependencies> <!--依赖项--> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>RELEASE</version> <!--<type></type>--> <!--依赖范围--> <!--<scope></scope>--> <!--设置依赖是否可选(默认)false--> <!--<optional></optional>--> <!--排斥依赖传递列表--> <!-- <exclusions> <exclusion> </exclusion> </exclusions> --> </dependency> </dependencies> <!--依赖的管理,作用主要定义在父模块中,对子模块进行管理--> <!-- <dependencyManagement> <dependencies> </dependencies> </dependencyManagement> --> <!--对构件的行为提供相应的支持--> <build> <!--插件列表--> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-source-plugin</artifactId> <version>3.0.1</version> <executions> <execution> <phase>package</phase> <goals> <goal> jar-no-fork </goal> </goals> </execution> </executions> </plugin> </plugins> </build> <!--通常用于子模块对父模块pom的继承--> <!--<parent></parent>--> <!--用来聚合运行Maven项目,指定多个模块一起编译--> <!-- <modules> <module></module> </modules> --></project>
八、依赖范围
三种classpath
1. 编译2. 测试3. 运行
maven提供了6种可选依赖范围:
compile: 默认范围,编译测试运行都有效。
provided: 在编译和测试时有效。(比如说在开发JavaEE时,你在本地运行的servlet,
是需要调用已添加到项目中的servlet-api.jar这个jar包的。这个过程就包含了编译【就是
把Java文件编译成class文件的过程中也要调用】和测试【测试就是在本地运行】,那么他说
的运行是指,整个项目已开发完成,编译、测试通过后,将class文件或包含有class文件的war包
发布到服务器上的Tomcat中运行,这时启动项目,就可以直接调Tomcat中的servlet-api.jar,
不必再将自己的jar包添加到项目中去。也就是说当你选择provided时,项目发布时Maven不会将
你添加的jar包,加入到项目中。)runtime: 在测试和运行时有效。(典型例子:JDBC驱动的实现。)
- test: 只在测试是有效。
system: 类似provided,与本机系统相关联,可移植性差。
import: 导入范围,他只是用在dependencyManagement中,表示从其他的pom中导
入dependecy的配置。(以下引用官网案例并不难理解。)
Importing Dependencies<project> <modelVersion>4.0.0</modelVersion> <groupId>maven</groupId> <artifactId>B</artifactId> <packaging>pom</packaging> <name>B</name> <version>1.0</version> <dependencyManagement> <dependencies> <dependency> <groupId>maven</groupId> <artifactId>A</artifactId> <version>1.0</version> <type>pom</type> <scope>import</scope> </dependency> <dependency> <groupId>test</groupId> <artifactId>d</artifactId> <version>1.0</version> </dependency> </dependencies> </dependencyManagement> <dependencies> <dependency> <groupId>test</groupId> <artifactId>a</artifactId> <version>1.0</version> <scope>runtime</scope> </dependency> <dependency> <groupId>test</groupId> <artifactId>c</artifactId> <scope>runtime</scope> </dependency> </dependencies></project>
假设A是前面示例中定义的pom,那么最终结果将是相同的。所有管理的依赖项都将被合并到B中,除了在这个pom中定义的d之外。
九、依赖传递
【C依赖B,B依赖A,那么C就依赖A】
十、依赖冲突
1.短路优先:
C->B->A->X1(jar)C->B->X2(jar)
【C依赖B,B依赖A,A和B都包含同一个不同版本的Jar,则取B的依赖版本。(c的pom.xml中不必注明jar坐标)】
2.先声明先优先
如果路径相同长度相同,则谁先声明,先解析谁。
【C依赖A和B,A和B都包含同一个不同版本的Jar,谁依赖在前取谁的依赖版本。】
十一、聚合和继承
聚合
创建一个新的maven容器,在pom.xml中添加如下代码
<modules> <module>../hongxing-bge</module> <module>../hongxing-nage</module> <module>../hongxing-shanji</module></modules>
输入clean install命令后,即可同时安装多个jar到本地仓库中
[INFO] hongxing-bge ............................... SUCCESS [ 2.745 s][INFO] hongxing-nage .............................. SUCCESS [ 0.556 s][INFO] hongxing-shanji ............................ SUCCESS [ 0.526 s][INFO] hongxing-aggreation ........................ SUCCESS [ 0.078 s]
继承
parent—>pom.xml
<properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <junit.version>3.8.1</junit.version> </properties> <dependencyManagement> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>${junit.version}</version> <scope>test</scope> </dependency> </dependencies> </dependencyManagement>
child继承了parent
child—>pom.xml
<parent> <groupId>com.dlf.hongxing</groupId> <artifactId>hongxing-parent</artifactId> <version>0.0.1-SNAPSHOT</version> </parent> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> </dependency> </dependencies>
- 项目管理利器-maven
- 项目管理利器-Maven
- 项目管理利器--Maven
- Maven项目管理利器
- 项目管理利器-maven
- 项目管理利器Maven
- 项目管理利器-maven
- 项目管理利器Maven
- Maven项目管理利器
- 项目管理利器--Maven
- 项目管理利器—maven
- 项目管理利器maven入门笔记(2)
- 项目管理利器——maven
- 项目管理利器maven学习总结
- 项目管理利器—maven(二)
- 项目管理利器(Maven)——Maven的生命周期
- 项目管理利器maven入门笔记(1)
- 项目管理利器(Maven)——pom.xml解析
- OpenStack之安装nova
- VMware + Linux + Xshell 连接环境设置(心得体会)
- Spring自动装配的方法
- linux 下awk 的使用
- Redis 使用入门
- Maven项目管理利器
- 地图集web项目_技术学习(二)_bootstrap分页的例子
- python os模块的使用
- kubernetes组件kubelet之源码分析 启动流程
- 轻松理解c和c++
- 原来你是这样子的OpenAI!来看看它背后那些有趣的人和事
- 9月热文精选,为你的假期加点料
- webpack超级详细的教程(转载)
- MySQL基础习题锻炼(一)