Maven 简介
一.Ant
1.Ant 和 Maven 都是项目构建工具
2.在项目的运行编辑打包等过程都需要依赖于 ant 构建工具
二. 分布式
1. 传统项目部署:
1)新建一个项目,通过不同的包区分不同的模块.
2)把这一个项目发布服务器的 tomcat 中
2. 分布式项目部署.(适用于高负载情况下)
1)把一个完整的项目拆分成多个项目,把拆分后的项目分别部署到对应的服务器(tomcat)中的过程就叫做分布式项目部署.
把传统项目包换成一个单独的项目
三.maven 简介
1.基于 Ant 的构建工具,Ant 有的功能 Maven 都有,额外添加了其他功能.
2.配置maven
3.运行原理图.
1)本地仓库:计算机中一个文件夹,自己定义是哪个文件夹.
2)中央仓库:网上地址 https://repo1.maven.org/maven2/
下载速度慢--> 配置国内镜像
3)保证 JDK 版本和开发环境一致,如果不配置 是JDK1.4 或 JDK1.5
3.1 配置以上三个内容:
注:eclipse默认走小范围,配置全局不配置局部默认走局部配置。
3.2 settings.xml中需要配置的内容
1)设置本地仓库
示例语法
<localRepository>D:/maven/r2/myrepository</localRepository>
2)修改 JDK 版本 (JDK1.7)(保证 JDK 版本和开发环境一致)
<profile> <id>jdk-1.7</id> <activation> <activeByDefault>true</activeByDefault> <jdk>1.7</jdk> </activation> <properties> <maven.compiler.source>1.7</maven.compiler.source> <maven.compiler.target>1.7</maven.compiler.target> <maven.compiler.compilerVersion>1.7</maven.compiler.compilerVersion> </properties> </profile>
3)修改镜像地址(不使用 nexus 时配置)
阿里云镜像
<mirror> <id>alimaven</id> <name>aliyunmaven</name> <url>http://maven.aliyun.com/nexus/content/groups/public/</url> <mirrorOf>central</mirrorOf> </mirror>
4.坐标
每一个jar文件都有一个唯一坐标.通过坐标可以精确确定是哪个jar
坐标组成
GroupID: 公司名.公司网址倒写
ArtifactID: 项目名
Version: 版本
5.pom
英文名称(Project Object Mode)
项目对象模型
把 project 当作对象看待.
通过 maven 构建工具可以让对象(项目)和对象(项目)之间产生关系
6.网址(查看坐标): http://mvnrepository.com/
四.新建 Maven 项目
1. New-->Maven project
2. 勾选复选框,表示创建一个简单 Maven 项目(不应用任何模板)
3. 填写项目信息
Packaging: 项目的类型,最终会被打包成什么类型.
jar:java 项目
war:web 项目
pom:逻辑父项目
只要一个项目有子项目必须是 pom 类型.
五. Maven 项目目录结构(jar 类型)
1. src/main/java 真实目录的快捷目录,写 java 代码
2. src/main/resources 存放配置文件的快捷目录
虽然看见 resources 但是里面所有配置文件最终会被编辑放入到 classes 类路径.
3. src/test/java 写测试 java 代码
4. src/text/resources 测试的配置文件夹
5. pom.xml maven 的配置文件
当前项目所依赖的其他项目或 jar 或插件等
六. Maven 项目之间的关系
1. 依赖关系
1)标签<dependency>把另一个项目的 jar 引入到当过前项目
2)自动下载另一个项目所依赖的其他项目
<dependencies> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>${servlet-version}</version> </dependency> </dependencies>
2. 继承关系.
1)父项目是 pom 类型
2)子项目jar或war,如果子项目还是其他项目的父项目,子项目也是 pom 类型.
3)有继承关系后,子项目中出现<parent>标签
如果子项目的<groupId>和<version>与父项目相同,在子项目中可以不配置<groupId>和<version>
4)父项目 pom.xml 中是看不到有哪些子项目.在逻辑上具有父子项目关系.
<parent> <groupId>com.su</groupId> <artifactId>parent</artifactId> <version>0.0.1-SNAPSHOT</version> </parent>
3. 聚合关系.
1)前提是继承关系.父项目会把子项目包含到父项目中.
2)子项目的类型必须是 Maven Module 而不是 maven project
3)新建聚合项目的子项目时,点击父项目右键新建 Maven Module
4)具有聚合关系的父项目,在 pom.xml 中存在<modules>
<modules> <module>child2</module> </modules>
5)具有聚合关系的子项目,在 pom.xml 中存在<parent>
<parent> <groupId>com.su</groupId> <artifactId>parent</artifactId> <version>0.0.1-SNAPSHOT</version> </parent>
4. 聚合项目和继承项目区别
1)在语意上聚合项目父项目和子项目关系性较强
2)在语意上单纯继承项目中父项目和子项目关系性较弱
5. <dependencyManagement> 写在父项目
1)作用:声明可能使用到的所有 jar包
2)子项目中只需要有坐标的<groupid>和<artifactid>,<version>继承父项目
3)在父项目中用<properties>把所有版本号进行统一管理
4)父项目 pom.xml
<properties>子标签名称自定义
${名字} 引用标签的值
<properties> <spring-version>4.1.6.RELEASE</spring-version> </properties> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>${spring-version}</version> </dependency> </dependencies> </dependencyManagement>
5)子项目
<dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> </dependency> </dependencies>
七. 创建 war 类型项目
1. 创建 mavenproject 时选择 packaging 为 war
2. 在 webapp 文件夹下新建 META-INF 和 WEB-INF/web.xml
3. 在 pom.xml 中添加 javaee 相关的三个 jar
<scope>jar包的有效范围, provided 表示编译期生效,不会打包发布到 tomcat 中
<dependencies> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.0.1</version> <scope>provided</scope> </dependency> <dependency> <groupId>javax.servlet.jsp</groupId> <artifactId>jsp-api</artifactId> <version>2.2</version> <scope>provided</scope> </dependency> <dependency> <groupId>jstl</groupId> <artifactId>jstl</artifactId> <version>1.2</version> </dependency> </dependencies>
4. 配置 tomcat 插件
<build> <plugins> <plugin> <groupId>org.apache.tomcat.maven</groupId> <artifactId>tomcat7-maven-plugin</artifactId> <version>2.2</version> <configuration> <!-- 控制 tomcat 端口号 --> <port>80</port> <!-- 项目发布到 tomcat 后的名称 --> <!-- / 相当于把项目发布名称为 ROOT --> <!-- /abc --> <path>/</path> </configuration> </plugin> </plugins> </build>
5. 启动项目:右键项目-->run as-->maven build-->Goals 中输入 cleantomcat7:run
八. 资源拷贝插件
1.maven 默认只把 src/main/resources 里面的非.java 文件进行编译到classes 中
2.如果希望 src/main/java 下的文件也被编辑到 classes 中,在 pom.xml中配置
下面内容配置在<build>中
<resources> <resource> <directory>src/main/java</directory> <includes> <include>**/*.xml</include> </includes> </resource> <resource> <directory>src/main/resources</directory> <includes> <include>**/*.xml</include> <include>**/*.properties</include> </includes> </resource> </resources>
九. 热部署
1. 修改 tomat/conf/tomcat-users.xml 添加
<rolerolename="manager-gui"/> <rolerolename="manager-script"/> <user username="tomcat" password="tomcat" roles="manager-gui,manager-script"/>
2. 在 maven 项目的 pom.xml 中 tomcat 插件的<configuration>里配置
<plugins> <plugin> <groupId>org.apache.tomcat.maven</groupId> <artifactId>tomcat7-maven-plugin</artifactId> <version>2.2</version> <configuration> <!-- 控制 tomcat 端口号 --> <port>80</port> <!-- 项目发布到 tomcat 后的名称 --> <!-- / 相当于把项目发布名称为 ROOT --> <!-- /abc --> <path>/jqk</path> <username>tomcat</username> <password>tomcat</password> <url>http://192.168.139.128:8080/manager/text</url> </configuration> </plugin> </plugins>
3. 右键项目-->run as-->maven build(如果以前写过,则选择第二个)-->输入
tomcat7:deploy 第一次发布
tomcat7:redeploy 不是第一次发布
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 单元测试从入门到精通