Maven笔记
来源:互联网 发布:通用电气矩阵 编辑:程序博客网 时间:2024/05/23 05:09
Maven笔记
- Maven笔记
- 安装maven
- maven的目录结构
- maven脚本命令
- 名词解释
- pom文件解析
- 依赖冲突
安装maven
- 去官网下载。
- 解压即可。
目录结构:
bin:maven的可执行脚本。
boot:maven的类加载器框架,maven使用它来加载自己的类库。
conf:配置文件目录,重要的setting.xml
lib:maven运行时所用的类库 - 配置环境变量
(若果是多人使用的电脑,应在用户变量中配置)
配置m2_home
配置path:%m2_home%\bin
maven的目录结构
- -src
- -main
- -test
- -resource
-pom.xml
maven脚本命令
mvn compile : 编译 产生的class文件放在生成target文件夹下
mvn test : 执行测试用例
mvn package:打包 在target目录下会看到生产的jar包
mvn clean : 删掉以前生产的target
mvn install : 安装生产的jar到本地仓库。这样其他依赖该jar的项目就可以获取到该jar了。
maven编译的流程是:开始编译–>发现需要依赖–>去项目的pom文件中找依赖的坐标–>先去本地仓库中–>本地仓库如果没有,联网去中央仓库找。
名词解释
- 构件:maven中用到的依赖包,项目的称呼
- 坐标:构件的定位表示。groupId+artifactId+version
- 仓库:顾名思义。分为本地仓库和远程仓库。
远程仓库的地址是在这里写的:D:\apache-maven-3.3.3\lib\maven-model-builder-3.3.3.jar\org\apache\maven\model\pom-4.0.0.xml中
<repositories> <repository> <id>central</id> <name>Central Repository</name> <url>https://repo.maven.apache.org/maven2</url> <layout>default</layout> <snapshots> <enabled>false</enabled> </snapshots> </repository> </repositories>
- 镜像仓库:有时默认的远程中央仓库会很慢,一般我们会用国内的镜像仓库,配置方法是:conf/setting.xml
<mirrors> <mirror> <id>maven.net.cn</id> <mirrorOf>central</mirrorOf> <name>cnResponsitory</name> <url>http://maven.net.cn/content/groups/public</url> </mirror> </mirrors>
地址貌似已经失效
<morrorOf>
中也可以使用通配符
- 更改本地仓库位置
默认放在.m2/respository
修改方法:setting.xml中:
<localRepository>/path/to/loca/repo</localRepository>
改为自己的位置
pom文件解析
<project> <!--maven版本的4.0.0是固定的--> <modelVersion>4.0.0</modelVersion> <!--maven2.0必须是这样写,现在是maven2唯一支持的版本--> <!-- 基础设置 --> <!-- 坐标 --> <groupId>项目名</groupId> <artifactId>模块名</artifactId> <version>版本号,一般由三个数字组成,大版本号.分支版本号.小版本号+snapshot快照/relaease/GA发布版等</version> <packaging>打包方式,默认jar,还有war,zip等</packaging> <!-- 非必须的项目描述信息 --> <name>项目描述名</name> <url>项目地址</url> <description>项目描述</description> <inceptionYear>...</inceptionYear> <licenses>...</licenses> <organization>...</organization> <developers>...</developers> <contributors>...</contributors> <!-- 用来对父pom的继承--> <parent>...</parent> <!-- 依赖列表 --> <dependencies> <dependency> <!-- 依赖的坐标 --> <groupId> <artifactId> <version> <type> <!-- 依赖应用的范围 --> <!-- maven提供了三种classpath,编译,测试和运行。对应的scope提供了6种值compile,provided,runtime,test,system,import。--> <scope>test</scope> <!-- 设置依赖是否可选,默认false --> <optional>true/false</optional> <!-- 排除依赖传递列表--> <!-- 依赖排除的意思是,A依赖B,B由依赖C。那么A就会把C加到自己的依赖列表中,但是其实A根本用不到C,那么就可以用这个排除--> <exclusions> <exclusion> 放要排除的坐标 </exclusion> </exclusions> </dependency> </dependencies> <!-- 依赖管理,并不会真正执行,一般放在父pom中,供子pom继承,子pom中用<parent>继承--> <dependencyManagement>...</dependencyManagement> <!-- 聚合项目,不用自己一个个编译了--> <modules>...</modules> <properties>...</properties> <!--构建设置 --> <!-- 放插件列表 --> <build> <!-- 例子去maven官网拿的Apache > Maven > Plugins > Apache Maven Source Plugin > Configuring Source Plugin--> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-source-plugin</artifactId> <version>2.4</version> <configuration> <outputDirectory>/absolute/path/to/the/output/directory</outputDirectory> <finalName>filename-of-generated-jar-file</finalName> <attach>false</attach> </configuration> </plugin> </plugins> </build> <reporting>...</reporting> <!-- 环境设置--> <issueManagement>...</issueManagement> <ciManagement>...</ciManagement> <mailingLists>...</mailingLists> <scm>...</scm> <prerequisites>...</prerequisites> <repositories>...</repositories> <pluginRepositories>...</pluginRepositories> <distributionManagement>...</distributionManagement> <profiles>...</profiles></project>
- scope值的说明:
- compile : 默认,对编译,测试,运行都有效。
- provided: 编译+测试。如用在servlet的api上。因为发布时用的web容器已经提供了这些api。
- runtimr : 测试 + 运行。 如jdbc
- test : 测试
- system : 编译 + 测试 ,会管理系统,不可移植
- import : 只会用在<\dependencyManagement>中。表示这是引入的依赖。
依赖冲突
maven通过两个原则来解决依赖冲突
1,短路优先
2,先声明优先
0 0
- maven 笔记-maven安装
- Maven 笔记
- maven 笔记
- maven笔记
- maven 笔记
- maven 笔记
- Maven笔记
- Maven 笔记
- maven笔记
- maven笔记
- Maven笔记
- maven 笔记
- Maven 笔记
- maven笔记
- maven笔记
- Maven笔记
- maven笔记
- MAVEN笔记
- HDU 5280 Senior's Array
- 英语学习--chap12 名词性从句
- 关于“如何检测节点网络中是否存在闭环之java实现”的程序bug修复
- java多线程基础知识总结
- stl非变易算法(二)
- Maven笔记
- Android触控屏幕Gesture(GestureDetector和SimpleOnGestureListener的使用教程)
- HDU 3743 Frosh Week
- Java - this的用法
- C语言+二维数组+非递归实现扫雷游戏(代码贴过来后无缩进,尽请谅解,工程完成度:85%)
- [LeetCode][Java] Search for a Range
- 效率较高的Oracle数据库之间数据同步(非dblink)
- java dos
- POJ 3169 Layout(差分约束-Bellman-Ford)