Maven浅析(上)
什么是MAVEN
基于项目对象模型(POM)
是一个项目管理工具,可以对项目的打包部署安装报告等做统一的管理
描述信息(三个坐标)
groupId
artifactId
versionId
Maven的windows安装
maven3.6 ------ > 最低为jdk1.8
ali_repo配置环境变量
原理与java相同
MAVEN的概念
库(repository)
中央库
maven社区维护,给全世界开发人员准备的库
远程库(私服)
公司内部开发项目的交流
可以分模块处理
本地库
为了后续的方便实用,将下载的资源放到本地的一个文件夹中
资源定位
定位标签
<groupId>域名倒写,一个公司的具体某一个项目
<artifactId>当前项目的一个模块
<version>表示一个项目的具体版本
<dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-beans</artifactId> <version>4.3.7.RELEASE</version> </dependency> </dependencies>
资源的结构
spring-beans-4.3.7.RELEASE.jar资源
spring-beans-4.3.7.RELEASE.pommaven资源的核心配置
spring-beans-4.3.7.RELEASE-javadoc.jar文档
spring-beans-4.3.7.RELEASE-source.jar源码
spring-beans-4.3.7.RELEASE.jar.sha1hash散列计算是否丢包
MAVEN的项目插件
在maven项目中可以在pom文件里制定当前项目可以使用的各种插件
源码包插件
作为项目运行时加载的插件资源,可以在pom文件(每个项目的pom文件)中的build标签里完成
execution:不需要的依赖包
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-source-plugin</artifactId> <version>3.0.1</version> <configuration> <attach>true</attach> </configuration> <executions> <execution> <phase>compile</phase> <goals> <goal>jar</goal> </goals> </execution> </executions> </plugin> </plugins> </build>
main方法的主清单配置插件
在项目中存在main方法,作为jar包的入口类,cpu需要加载运行,maven软件需要在打包时配置main方法所在的类路径,否则jar包无法正常运行
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <configuration> <archive> <manifest> <addClasspath>true</addClasspath> <mainClass>com.wiscom.App</mainClass> <!-- 此处为主入口--> </manifest> </archive> </configuration> </plugin>
tomcat的maven插件
这个插件的核心tomcat代码,就是tomcat7版本,没有tomcat8,没有tomcat9
<plugin> <groupId>org.apache.tomcat.maven</groupId> <artifactId>tomcat7-maven-plugin</artifactId> <version>2.2</version> <configuration> <!-- port --> <port>80</port> <!-- context path --> <path>/</path> <!-- utf-8 --> <uriEncoding>utf-8</uriEncoding> <useBodyEncodingForURI>utf-8</useBodyEncodingForURI> </configuration> </plugin>
eclipse整合maven
在maven中配置本地库ali_repo
..../maven3.6/confsettings.xml/settings.xml
\:需要转义
/:不需要转义
<localRepository>E:/software/ali_repo</localRepository>
maven依赖
需要知道依赖的名称
资源由三个标签来定义坐标
<groupId>:域名倒写,一个公司的具体某一个项目
<artifactId>:某一个模块的名称
<version>:资源的版本依赖的传递性
maven会将所有依赖的jar包导入
不需要的jar包可以使用
exclusion屏蔽
依赖的使用范围(scope)
一般只使用前两种
complie
从编译开始,打包,运行,安装,部署等等(默认值)
test
测试时候使用,打包,运行,安装,部署不在使用
runtime
除了编译时不使用,其他的都跟随
provide
编译和测试时有效,但是运行,打包,部署,安装不存在
system
与本地jar包有关,可以利用system范围指定一个本地路径的jar包
pom.xml
<dependency> <groupId>com.wiscom</groupId> <artifactId>test</artifactId> <version>1.0</version> <scope>system</scope> <systemPath>C:\\maven-test01-1.0-SNAPSHOT.jar</systemPath> </dependency>
Maven的生命周期
可以通过run as ---> maven build 生成原生命令
创建
mvn archetype:generate清空
mvn clean编译
mvn compile测试
mvn test打包
mvn package安装
mvn install发布
mvn deploy
创建出来的maven项目
src/main/java:编写工程代码文件夹
src/main/resources:配置文件存放位置,spring.xml/application.xml,properties
src/test/java:测试代码
src/test/resources:测试代码使用的配置文件(如果没有,默认使用src/main/resources内容)
@Test public void springCon(){ //通过加载配置文件,运行获取上下文对象 ClassPathXmlApplicationContext context= new ClassPathXmlApplicationContext ("classpath:spring/spring.xml"); //maven工程加载的配置文件和配置各种内容,需要通过classload加载 //普通java工程bin/WEB-INF/classes下就是加载路径 //指向target/classes,classpath //java的类加载器路径起始地址,classpath==target/classes HelloController bean1 = context.getBean(HelloController.class); HelloService bean2 = context.getBean(HelloService.class); HelloDao bean3 = context.getBean(HelloDao.class); String name="wanglaoshi"; System.out.println(bean1.sayHi(name)); System.out.println(bean2.sayHi(name)); System.out.println(bean3.sayHi(name)); } //持久层的测试案例 @Test public void userQuery(){ ClassPathXmlApplicationContext context= new ClassPathXmlApplicationContext ("classpath:spring/spring.xml"); //获取userController UserController uc=context.getBean(UserController.class); //查询user User user=uc.queryOne(3); System.out.println(user); }

浙公网安备 33010602011771号