Maven入门
1. Maven下载与安装 Maven是什么 Maven是基于项目对象模型(POM project object model),可以通过一小段描述信息(配置)来管理项目的构建,报告和文档的软件项目管理工具 通过pom.xml文件的配置获取jar包,而不用手动去添加jar包 合理叙述项目间的依赖关系 Maven下载安装 http://maven.apache.org/download.cgi 安装 直接解压就可以 目录结构 bin 包含了Maven的运行脚本文件 boot Maven的依赖的类加载器 conf Maven的全局配置文件(settings.xml),定制Maven的运行行为 把C:\Users\64434\.m2\repository作为本地仓库的路径,可以通过核心配置文件来改 lib 依赖jar包 maven环境变量配置 配置的目的 想要在任何地方都能够运行mvn命令 配置两个一个Home 一个home/bin Home在新建,home/bin在path 打开命令行输入mvn -v 查看结果 2. Maven第一个工程 Maven规定了一套默认的项目格式 src/main/java 存放项目的.java文件 src/main/resources 存放项目资源文件,如spring、struts2配置文件,db.properties src/main/webapp 存放jsp,css,image等文件 src/test/java 存放所有测试.java文件,如JUnit测试类 src/test/resources 测试资源文件 pom.xml 主要要写的maven配置文件 target 项目由maven自动输出位置 创建第一个Maven项目 确保idea安装了Maven插件 创建Maven工程 new一个maven工程 下一步 添加 Jar包的坐标的组织,项目,版本. 记得勾选Auto-import自动加载勾选上 在pom.xml里添加 <dependencies> <!-- https://mvnrepository.com/artifact/junit/junit --> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.9</version> <scope>test</scope> </dependency> </dependencies> 自动下载junit的相关maven包. 添加Maven依赖jar包 会自动把jar依赖到项目当中 需要再添加插件就再输入dependency. 3. 配置本地仓库地址 Maven仓库 Maven所有的Jar包都是放到maven仓库当中 在项目当中是对仓库jar包的引用 Maven仓库分为三种 本地仓库 本地存放jar的目录 私服 私人搭建的服务器,一般在企业内部局域网使用 中央仓库 Maven内置了一个远程仓库的地址,它就是中央仓库 Maven找jar包的过程 Maven查找引入jar包时, 会先到本地仓库当中查找,没有找到现到私服中找,也没有就去到远程中央仓库查找. 找到后会下载到本地仓库,下次就不用到远程仓库了 最终都会把jar包下载到本地仓库 Maven工程最终引用的都是本地的jar包 设置本地仓库目录地址 默认本地仓库 C:\Users\renhao.chen\.m2\repository 修改本地仓库 把maven安装目录config中setting.xml复制一份到.m2文件夹下 打开setting.xml修改本地仓库地址 D:\MavenRepository 4. 阿里云镜像配置 阿里云镜像 <mirror> <id>alimaven</id> <mirrorOf>central</mirrorOf> <name>aliyun maven</name> <url>http://maven.aliyun.com/nexus/content/groups/public/</url> </mirror> 在setting.xml中配置 5. Maven常用命令和生命周期 Maven常用命令 validate 确保当前配置和 POM 的内容是有效的 clean 删除target目录下及其目录下的所有内容 compile 将java文件编译成二进制放到target目录当中 test 运行测试用例 package 打包工程 install 把maven打成的包发布到本地仓库当中 后一个执行时, 前面命令都会执行命令 6. Maven依赖Scope作用范围 <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.9</version> <scope>test</scope> </dependency> scope compile 默认值 他表示被依赖项目需要参与当前项目的编译,还有后续的测试,运行周期也参与其中,是一个比较强的依赖。打包的时候通常需要包含进去 test 依赖项目仅仅参与测试相关的工作,包括测试代码的编译和执行,不会被打包,例如:junit runtime 表示被依赖项目无需参与项目的编译,不过后期的测试和运行周期需要其参与。与compile相比,跳过了编译而已。例如JDBC驱动,适用运行和测试阶段 provided 打包的时候可以不用包进去,别的设施会提供。事实上该依赖理论上可以参与编译,测试,运行等周期。相当于compile,但是打包阶段做了exclude操作 system 从参与度来说,和provided相同,不过被依赖项不会从maven仓库下载,而是从本地文件系统拿。需要添加systemPath的属性来定义路径 7. Maven-创建Web工程 file new project maven,下面的maven-webapp 注意事项 generating project in batch mode 很慢,是应为maven获取archetype-catalog.xml导致 用浏览器打开http://repo1.maven.org/maven2/archetype-catalog.xml很慢 解决方法: 在用maven创建项目时在properties中添加 archetypeCatalog=internal,让maven读取本地配置即可
配置tomcat本地服务.设置项目部署为war包. 修改web.xml 把版本改为3.0 <web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0" metadata-complete="false"> <absolute-ordering/> <display-name>web</display-name> <welcome-file-list> <welcome-file>index.html</welcome-file> <welcome-file>index.jsp</welcome-file> <welcome-file>index.htm</welcome-file> </welcome-file-list> </web-app> 修改pom.xml 使用4.0.1的servlet使用@WebServlet注解. 8. Maven-使用Tomcat插件 pom.xml <build> <plugins> <plugin> <groupId>org.apache.tomcat.maven</groupId> <artifactId>tomcat7-maven-plugin</artifactId> <version>2.2</version> <configuration> <port>8081</port> <path>/</path> </configuration> </plugin> </plugins> </build> 这个plugins要写在系统的plugins外面. 在maven插件就有tomcat7. 对着右侧的tomcat7展开选tomcat7:run 使用Create. 不支持jrebel热部署. 如果使用插件需要自己重新部署. 9. Maven-代码生成器 第一步,添加代码生成器的依赖. pom.xml下面添加 添加在build下面和系统的plugins分开写 <plugins> <plugin> <groupId>org.mybatis.generator</groupId> <artifactId>mybatis-generator-maven-plugin</artifactId> <version>1.3.2</version> <configuration> <verbose>true</verbose> <overwrite>false</overwrite> </configuration> <dependencies> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.21</version> </dependency> </dependencies> </plugin> </plugins> 多了一个mybatis-generator,点击就能逆向生成 第二步,添加代码生成器配置文件generatorConfig.xml 第三步,指定表teacher 第4步,点击mybatis-generator:generate生成domain类teacher mapperTeacherMapper,TeacherMapper.xml 10. Maven-SSM整合添加依赖 在pom.xml中定义spring和mybatis的版本号. <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.target>1.8</maven.compiler.target> <!--定义版本号 ${org.springframework.version}--> <org.springframework.version>5.0.7.RELEASE</org.springframework.version> <org.mybatis.version>3.4.6</org.mybatis.version> </properties> 在pom.xml下面的配置时使用${org.springframework.version}采用统一的版本号,从上面定义中获取. <dependencies> <!--spring-test--> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-test</artifactId> <version>${org.springframework.version}</version> <scope>test</scope> </dependency> <!--spring-core--> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>${org.springframework.version}</version> </dependency> </dependencies> 11. Maven-SSM整合配置文件添加 application-mvc.xml mvc配置 application-mybatis.xml mybatis配置 applicationContext.xml spring配置 db.properties数据库信息 log4j.properties sqlMapConfig.xml 12. Maven-SSM整合三层架构. mapper.xml的文件必须放在resources下面,在下面创建一个com.itlike.mapper.不然扫描不到. TeacherController @Controller public class TeacherController { //注入服务层 @Autowired private TeacherService teacherService; @RequestMapping("/teacher") public String teacher(String name){ System.out.println(name); //调用服务层 teacherService.save(name); return "success"; } } TeacherServiceImpl @Service @Transactional public class TeacherServiceImpl implements TeacherService { //注入mapper @Autowired private TeacherMapper teacherMapper; @Override public void save(String name) { System.out.println("来到了服务层"); //调用mapper Teacher teacher = new Teacher(); teacher.setTeacherName(name); teacherMapper.insert(teacher); } }