2、Maven项目
2.1 基础配置
在此前的java程序需要导入各种不同的jar包,来实现项目的开发,但是这样往往很花费大量时间,所以创建了Maven来管理搭建项目,maven提供了自动化构建,省去了程序员大量重复的部署工作,简化了我们的开发,让我们更加专注与编写代码。简单来说,Maven 是专门用于构建和管理Java相关项目架构的工具,方便我们导入jar包。
Maven的核心思想
:约束大于配置.
- 下载安装
- 配置环境变量
- 在cmd中进行验证:输入 mvn -version 进行验证
-
修改下载镜像地址
建议把配置的镜像修改成阿里云,默认的镜像为国外,会导致下载缓慢。
在conf文件夹下的settings.xml文件的内添加以下代码:
<mirror> <id>alimaven</id> <name>aliyun maven</name> <url>http://maven.aliyun.com/nexus/content/groups/public/</url> <mirrorOf>central</mirrorOf> </mirror>
-
手动创建本地仓库:
在maven目录创建文件 repository
在conf文件夹下的settings.xml文件添加配置:目录/repository。
优点: 1、有统一的项目结构 pom.xml 用于维护当前项目所用jar包 java代码都放在 src/main/ 下面 测试代码都放在src/test/ 下面 2、把jar都统一放在一个仓库里面,后续的项目如果需要只要给出相应的依赖即可
2.2 IDEA集成
2.2.1 创建主项目
- IDEA创建Maven项目:
-
配置Maven
-
项目结构
2.2.2 创建子模块
删除主模块的src文件夹,然后创建一个module为子项目,子项目可以使用父模块的java
2.3 pom文件
pom文件是Maven工程的核心配置
<?xml version="1.0" encoding="UTF-8"?>
<!--Maven的版本和头文件信息-->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<!--创建项目时配置的坐标-->
<groupId>com.yu</groupId>
<artifactId>javawebs</artifactId>
<version>1.0-SNAPSHOT</version>
<!--子模块-->
<modules>
<module>demo1</module>
</modules>
<!--打包方式 :jar是java应用。war是web应用-->
<packaging>war</packaging>
<!--配置,可以统一配置编码或者依赖的一些版本-->
<properties>
<!--默认的编码方式和版本-->
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.7</maven.compiler.source>
<maven.compiler.target>1.7</maven.compiler.target>
</properties>
<!--导入项目依赖,会自动导入所依赖的其他jar包,但前提是scope的范围为compile的jar-->
<dependencies>
<dependency>
</dependency>
</dependencies>
<!--项目构建使用的一些配置-->
<build>
</build>
</project>
-
约定>配置>编码
<!--在build中配置resoureces,来防止我们资源导出失效的问题--> <build> <resources> <resource> <directory>src/main/resources/</directory> <includes> <include>**/*.properties</include> <include>**/*.xml</include> </includes> <filtering>true</filtering> </resource> <resource> <directory>src/main/java</directory> <includes> <include>**/*.properties</include> <include>**/*.xml</include> </includes> <filtering>true</filtering> </resource> </resources> </build>
-
Maven坐标:通过以下几个配置啦确定一个maven工程
groupid:公司或组织的域名倒序
artifactId:当前项目的模块名称
version:当前模块的版本 -
依赖管理:
<dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.11</version> <scope>test</scope> <!--依赖的范围compile(主程序测试都有效、可传递)、test(测试有效)、provided--> </dependency> </dependencies>
有效范围 compile test provided 主程序 √ × √ 测试程序 √ √ √ 参与部署 √ × × <!--依赖排除--> <dependency> <groupId>com.atguigu.maven</groupId> <artifactId>HelloFriend</artifactId> <version>0.0.1-SNAPSHOT</version> <type>jar</type> <scope>compile</scope> <exclusions> <exclusion> <groupId>commons-logging</groupId> <artifactId>commons-logging</artifactId> </exclusion> </exclusions> </dependency>
<!--统一声明版本 --> <properties> <spring-core>4.1.1.RELEASE</spring-core> </properties> <!--直接引用版本 --> <dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>${spring-core}</version> </dependency> </dependencies>
-
Maven生命周期
生命周期定义了各个构建环节的执行顺序,它们之间互相独立 1、Clean Lifecycle :清理工作。 pre-clean 执行一些需要在 clean 之前完成的工作 clean 移除所有上一次构建生成的文件 post-clean 执行一些需要在 clean 之后立刻完成的工作 2、Default Lifecycle:构建的核心部分,编译,测试,打包,安装,部署等等。 process-resources 复制并处理资源文件至目标目录,准备打包。 compile 编译项目的源代码。 process-test-resources 复制并处理资源文件至目标测试目录。 test-compile 编译测试源代码。 test 使用合适的单元测试框架运行测试。这些测试代码不会被打包或部署。 package 接受编译好的代码并打包,如 JAR、war等。 install 将包安装至本地仓库,以让其它项目依赖。 deploy 将最终的包复制到远程的仓库,以让其它开发人员与项目共享或部署到服务器上运行。 3、Site Lifecycle:生成项目报告,站点,发布站点。 pre-site 执行生成站点文档之前的工作 site 生成项目的站点文档 post-site 执行在生成站点文档之后的工作,为部署做准备 site-deploy 将站点文档部署到服务器上