Maven
Maven是Apache的一款开源项目管理工具,使用项目对象pom.xml管理项目的构建。Maven中每个项目都相当于一个对象,对象(项目)与对象(项目)之间是有关系的(依赖、继承、聚合),实现Maven项目可以更方便的实现导jar包、拆分项目等。conf目录:下面有一个非常重要的配置文件,maven核心配置文件:settings.xml
不在本机的一切仓库,都是远程仓库:分别为中央仓库和本地私服仓库(公司自己搭建的)
默认远程仓库使用Apache提供的中央仓库mvnrepository.com/
本地仓库指本机的一份拷贝,用来缓存远程下载,包含你尚未发布的临时构件
在setting.xml中配置阿里云镜像
<mirror>
<!--指定镜像ID 可自己起名-->
<id>aliyun</id>
<!--匹配中央仓库 可自己改名-->
<mirrorOf>central</mirrorOf>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>
<mirror>
优先级别:
在setting.xml中配置JDK
<profile>
<id>jdk-15</id>
<activation>
<activeByDefault>true</activeByDefault>
<jdk>15</jdk>
</activation>
<properties>
<maven.compiler.source>15</maven.compiler.source>
<maven.compiler.source>15</maven.compiler.source>
<maven.compiler.compileVersion>15</maven.compiler.compileVersion>
</properties>
</profile>
在setting.xml中配置配置本地仓库
<localRepository>/Users/u/.m2/repository</localRepository>
- POM工程 逻辑工程,用在父级工程或聚合工程,用来做jar包的版本控制
- JAR工程 将会打包成jar, 即常见的本地工程 Java Project
- WAR工程 打包成war 发布在服务器上
maven目录结构
src/main/java java源代码
src/main/resources 资源文件
src/test/java 测试类
target 编译后内容放置的文件夹
pom.xml maven配置文件 配置项目之间的关系,包括依赖关系
maven项目性质
- 项目1依赖项目2,项目2依赖mybatis,项目1在pom.xml文件中引入项目2,项目1可以直接使用mybatis
1.1 第一原则
最短路径优先 A->B->C->D(2.0) A->E(1.0) 用E中的版本
1.2 第二原则
最先声明原则 A->B->D(1.0) A->B->C(1.0) 在pom.xml里最先看到B,用D的版本 - 排除依赖
<exclusion>
<groupId> ... </groupId>
<artifactId> ... </artifactId>
</exclusion>
pom配置
- 配置文件一般放在src/resources下,打包后放在target的class下,想把非resouces下的文件也打包到class下,需要配置。配置后设置路径下的资源问价都会被打包。
- 多个项目使用不同jdk
<build>
<plugins>
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.1</version>
<configuration>
<path>/shiro</path>
<port>8080</port>
<uriEncoding>UTF-8</uriEncoding>
<url>http://localhost:8080/shiro</url>
<server>Tomcat7</server>
</configuration>
</plugin>
<plugin>
<groupId>org.mortbay.jetty</groupId>
<artifactId>maven-jetty-plugin</artifactId>
<version>6.1.7</version>
<configuration>
<connectors>
<connector implementation="org.mortbay.jetty.nio.SelectChannelConnector">
<port>8888</port>
<maxIdleTime>30000</maxIdleTime>
</connector>
</connectors>
<webAppSourceDirectory>${project.build.directory}/${pom.artifactId}-${pom.version}</webAppSourceDirectory>
<contextPath>/</contextPath>
</configuration>
</plugin>
</plugins>
</build>
操作maven
- install
本地安装 包含编译、打包,安装到本地仓库
编译javac。 打包 将代码打包成jar,保存到本地仓库 - clean 清楚已编译的信息
- compile 只编译javac
- package 包括编译和打包两个部分。
install和package区别:
package完成打包、编译,但没把打包好的包部署到本地或远程maven仓库。 install完成了编译、单元测试、打包,部署到本地仓库但没有部署到远程仓库