一、maven能做什么?
【本质】:将原材料(各种Java本身的类,不包括jar包)生产成为可运行的工程项目。
Maven - 自动化构建工具,英文单词是专家内行的意思
1.方便管理jar包,jar包冲突?
2.打包web项目(节省jar包空间)
两大应用:
【依赖管理】maven的jar包放在jar包仓库,maven只存储jar包的坐标。(代码重用思想)
【一键构建】编译、测试、运行、打包、安装、部署 操作一体化
【POM:Project Object Model 工程对象模型
【pom.xml】:maven工程核心配置文件(装载依赖)[同动态web中的web.xml]
【部署】:把编译结果“拿到”服务器指定目录下
maven 的核心
1.依赖管理:
POM项目对象模型,里面配置的是 ①项目自身的信息 ②项目所依赖的jar包的信息 ③项目运行环境的信息:jdk、tomcat信息。
依赖的jar包又涉及到依赖管理模型:公司的名称、项目名称、版本号
2.一键构建:maven默认生命周期
二、maven结构:
【maven安装】:本身就是绿化版,我们需要做的事情是配置好相关的环境变量和settings
【maven目录】:
bin: | mvn.cmd命令 |
boot: | 类加载器 |
config: | settings.xml |
lib: | 有各种各样的jar包 |
maven工程标准目录结构
核心代码 src/main/java 配置文件 src/main/resources 测试代码 src/test/java 测试配置 src/test/resources 页面资源(jsp、css):src/main/webapp
配置系统变量
【1】MAVEN_HOME:就是maven的五脏都在的那个位置
【2】PATH:找到%MAVEN_HOME%\bin,里面有mvn的启动文件
【3】config/settings.xml中
/path/to/local/repo-->B:\Environment\maven\maven_repository
坐标:
groupid:com.公司/组织.项目名
artifactid:模块名
version:版本
常用命令:
mvn clean == 清除项目编译信息(每个人的编译结果不一样,在新的环境下运行需要清除原有的东西) mvn compile == javac,编译出新的.class文件保存在target目录里面 mvn test == main和test都编译了 mvn package == 打成了war包,在pom.xml中可以配置打成什么格式。 mvn install == 把项目打在了本地仓库 mvn deploy
几个小问题:
1.生命周期
编译,测试,打包,安装,发布
(清除生命周期)默认生命周期~~生老病死,(站点生命周期)
2.maven工程查找仓库的流程是什么?
pom.xml寻求依赖的jar包:一般的
先去本地仓库找jar包,再到远程仓库【私服】,在同一局域网就可以下载,最后才是*仓库。
①maven*仓库(地址:http://repo2.maven.org/maven2/)
②maven私服(公司局域网内的仓库,需要自己搭建)
③其他公共远程仓库(例如apache提供的远程仓库,地址:http://repo.maven.apache.org/maven2/)
三、应用:idea集成maven插件:
步骤:
基本配置
【1】先在setting中配置maven_home、settings.xml
在runner配置先从本地获取插件(加上-DarchetypeCatalog=internal
)
【2】使用骨架创建maven工程:
手动补齐resources作为资源根目录
不使用骨架模板构建maven工程:自带main(java、resources)、test目录
使用骨架,找到mavenwebapp的原型:maven-archetype-webapp
【3】指定web资源包
创建servlet,导入jar包==》pom.xml里面导入jar包(配置依赖的groupId群组Id、artifactId工程Id、version版本)
两种方式导入jar包:(一般都看不到)
【本地】项目名称:配置servlet-api、jsp-api、公司名称、版本号
【网络】https://mvnrepository.com/
依赖书写规范:
<dependency> <groupId>javax.servletgroupId> <artifactId>javax.servlet-apiartifactId> <version>3.1.0version> <scope>providedscope>dependency>
scope:
Tips:
servlet-api包冲突
maven一键构建在【集成插件】中
设置scope是提供了的provided
用完之后要停止项目,避免端口占用
使用live Templates模板 确定tomcat maven-compiler-plugin选定JDK
基本配置总结:
pom.xml是Maven项目的核心配置文件,位于每个工程的根目录,基本配置如下:<project > :文件的根节点 . <modelversion > : pom.xml使用的对象模型版本 <groupId > :项目名称,一般写项目的域名 <artifactId > :模块名称,子项目名或模块名称 <version > :产品的版本号 . <packaging > :打包类型,一般有jar、war、pom 等 <name > :项目的显示名,常用于 Maven 生成的文档。 <description > :项目描述,常用于 Maven 生成的文档<dependencies> :项目依赖构件配置,配置项目依赖构件的坐标<build> :项目构建配置,配置编译、运行插件等。
四、示例:maven工程获取mysql数据(使用maven访问持久层)
package com.xianzai.demo.dao.impl;import com.xianzai.demo.dao.StudentDao;import com.xianzai.demo.pojo.StudentModel;import java.sql.*;import java.util.ArrayList;import java.util.List;public class StudentImpl implements StudentDao { public List<StudentModel> findOne() { List<StudentModel> list = new ArrayList<StudentModel>(); try { String sql = "select * from stulist"; Class.forName("com.mysql.jdbc.Driver"); Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3308/hzyc98", "root", "mysql"); PreparedStatement ps = conn.prepareCall(sql); ResultSet rs = ps.executeQuery(); while (rs.next()) { StudentModel stu = new StudentModel(); stu.setCollege(rs.getString("college")); stu.setName(rs.getString("sname")); stu.setId(rs.getString("id")); list.add(stu); } System.out.println(list); rs.close(); ps.close(); conn.close(); } catch (Exception e) { e.printStackTrace(); } finally { } return list; }}