赞
踩
Maven是一个项目管理工具,主要用于Java项目的管理。它提供了项目对象模型(POM),一个用于描述项目的基础、源代码、构建配置、依赖关系等信息的XML文件,使得开发人员能够使用统一的方式来构建和管理项目。
Maven可以更加高效地进行Java项目的开发和管理,减少重复劳动和错误,提高开发效率和质量。
apache-maven-3.3.9-bin.zip
,该版本配合jdk1.8
。mvn.cmd
。settings.xml
。M2_HOME
的名称, 指定它的值是Maven工具安装目录。M2_HOME=D:\work\maven_work\apache-maven-3.3.9
。%M2_HOME%\bin
。JAVA_HOME
,指定jdk路径。mvn -v
。出现如下内容,maven安装,配置正确。
具体操作步骤可以查看:Maven安装与配置
Maven构建是一个自动化的项目构建过程,它基于项目对象模型(POM)来管理项目的构建生命周期、依赖关系以及插件等。
当执行Maven构建时,Maven会根据POM文件中的配置和依赖关系,按照构建生命周期的顺序执行相应的插件任务。例如,编译阶段会执行编译源代码的任务,测试阶段会运行项目的测试用例,打包阶段会将项目打包成可执行的JAR文件或WAR文件等。
Maven构建的生命周期是Maven实现自动化构建的基础,它定义了一系列有序的构建阶段(phase),每个阶段都有特定的目标和任务。这些阶段按照预设的顺序依次执行,以完成整个项目的构建过程。
Maven构建的生命周期可以分为以下三大类:
Clean生命周期:
Default生命周期(这是Maven最常用的生命周期):
Default生命周期是最核心的生命周期,它涵盖了从编译、测试到打包、部署等完整的构建流程。
Site生命周期:
Site生命周期主要用于生成和发布项目站点,帮助开发人员和用户了解项目的文档、报告和相关信息。
Maven的生命周期提供了一种标准化、自动化和可扩展的项目构建机制,帮助开发人员高效地构建和管理Java项目。
通过Maven构建,可以确保项目的构建过程是一致和可重复的,减少了手动构建过程中的错误和不确定性。同时,Maven的标准化和自动化特性也提高了开发效率,使得团队之间的协作更加顺畅。
这些核心概念共同构成了Maven的核心功能,使得Maven能够成为一个强大的项目管理工具,帮助开发人员高效地构建和管理Java项目。
每一个Maven项目在磁盘中都是一个文件夹(项目-Hello)
Hello/
---/src
------/main # 放你主程序java代码和配置文件
----------/java # 你的程序包和包中的java文件
----------/resources # 你的java程序中要使用的配置文件
------/test # 放测试程序代码和文件的(可以没有)
----------/java # 测试程序包和包中的java文件
----------/resources # 测试java程序中要使用的配置文件
---/pom.xml # Maven的核心文件(Maven项目必须有)
疑问: 使用mvn compile命令会编译src/main目录下的所有java文件,并同时会检查文件完整,会下载插件。
Maven工具执行的操作是需要很多插件(jar文件)完成的,下载的jar文件叫做插件,是完成某些功能的组件,内部是Java类。
下载的插件位置是默认仓库(本机仓库),是setting.xml
文件中的默认位置。
执行mvn compile, 结果是在项目的根目录下生成target目录(结果目录),Maven编译的Java程序,最后的.class文件都放在target目录中。
设置本机存放资源的目录位置(如何设置本机仓库):
/conf/settings.xml
文件中。settings.xml
。<localRepository>
的位置,指定你的目录(不要使用中文目录)D:\work\maven_work\maven_repository
仓库存放Maven使用的 jar包 和项目使用的 jar包
仓库的分类:
Maven仓库的使用不需要人为参与,如果需要使用mysql驱动。
Maven首查本地仓库,再查私服,再查镜像,再查中央仓库,按照顺序一层一层查询。
你在写项目的中的用到的所有依赖(jar),必须在本地仓库中有。没有必须通过Maven下载, 包括provided的都必须下载。
你在servlet需要继承HttpServlet( provided) ,你使用的HttpServlet是Maven仓库中的。当你的写好的程序, 放到 tomat服务器中运行时, 此时你的程序中不包含servlet的jar,因为tomcat提供了 servlet的.jar
Maven的POM(Project Object Model,项目对象模型)是一个XML文件,通常命名为pom.xml,它是Maven项目的核心配置文件。POM定义了项目的所有属性,包括项目的名称、版本、依赖关系、构建配置等。使用pom.xml,我们可以轻松地管理项目的构建和依赖关系,从而更专注于业务逻辑的开发。
<groupId>公司域名的倒写</groupId>
<artifactId>自定义项目名称</artifactId>
<version>自定版本号</version>
<dependencies>
<!--依赖 java代码中 import -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.9</version>
</dependency>
</dependencies>
统一设置依赖中的属性,如上面的版本号,名字等。
包括构建插件、源代码目录、输出目录。
scope:表示依赖使用的范围,也就是在maven构建项目的那些阶段中起作用。scope的值有compile,test,provided,默认是compile
maven构建项目:编译、测试、打包、安装、部署 过程(阶段),根据scope可以设置在某个阶段某个依赖生效。
例如:junit的依赖范围是 test
<dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.11</version> <scope>test</scope> 测试的时候才有效 </dependency> <dependency> <groupId>a</groupId> <artifactId>b</artifactId> b.jar <version>4.11</version> 不写但也是全局使用,compile在每个阶段 </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.1.0</version>servlet.jar <scope>provided</scope> 提供者 </dependency>
Maven插件是由Maven构建工具本身提供的,用于自动化和重复性的任务。插件是由Maven构建工具通过解析pom.xml文件中的插件配置来加载的。它们极大地扩展了Maven的核心功能,使得开发者能够更方便地进行项目构建、测试、打包等操作。
Maven插件由三部分组成,分别是Mojo类、Goal类和Pom类。Mojo类是插件的核心,它包含了插件的主要逻辑;Goal类是Mojo类的实现,它定义了插件的目标;Pom类则用于配置插件的元数据。
Maven为大多数构建步骤编写并绑定了默认插件。例如,针对编译的插件有maven-compiler-plugin,针对测试的插件有maven-surefire-plugin等。这些插件在大多数情况下都能满足开发者的需求,但当有特殊需要时,也可以配置插件以定制构建行为,甚至自己编写插件。
插件可以在自己的项目中设置,最常使用的是maven编译插件。设置项目使用的 jdk 版本时通过编译插件指定。pom.xml
文件<build>
中设置。
<build> <!-- 配置插件 --> <plugins> <!-- 配置具体的插件 --> <plugin> <groupId>org.apache.maven.plugins</groupId> <!-- 插件的名称 --> <artifactId>maven-compiler-plugin</artifactId> <!-- 插件的版本 --> <version>3.8.1</version> <!-- 配置插件的信息 --> <configuration> <!-- 告诉maven 我们写的代码实在jdk1.8上面编译的 --> <source>1.8</source> <!-- 我们的程序应该运行在1.8的jdk上 --> <target>1.8</target> </configuration> </plugin> </plugins> </build>
单元测试(测试方法):用的是junit, junit是一个专门测试的框架(工具)。
junit测试的内容: 测试的是类中的方法, 每一个方法都是独立测试的。方法是测试的基本单位(单元),判断你类是否正确,可以测试你的每一个方法是否达到了预期功能。Maven借助单元测试,批量的测试你类中的大量方法是否符合预期的。
首先加入依赖,在pom.xml加入单元测试依赖:
<!-- 单元测试 -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
在maven项目中的src/test/java目录下,创建测试程序。 推荐的创建类和方法的提示:
例如你要测试HelloMaven,创建测试类 TestHelloMaven。
@Test
public void testAdd(){
// 测试HelloMaven的add方法是否正确
}
其中testAdd叫做测试方法,它的定义规则
然后运行测试方法,查看测试结果。
默认没有使用resources的时候, Maven执行编译代码时, 会把 src/main/resource
目录中的文件拷贝到 target/classes
目录中。对于 src/main/java
目录下的非java文件不处理,不拷贝到 target/classes
目录中。
程序有时候需要把一些文件放在 src/main/java
目录中,当在执行 Java程序时,需要用到 src/main/java
目录中的文件,需要告诉Maven在 mvn compile
src/main/java
目录下的程序时,需要把文件一同拷贝到 target/classes
目录中。此时就需要在 <build>
中加入 <resources>
。
<build>
<resources>
<resource>
<directory>src/main/java</directory><!--所在的目录-->
<includes><!--包括目录下的.properties.xml 文件都会扫描到-->
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<!—filtering 选项 false 不启用过滤器, *.property 已经起到过滤的作用了 -->
<filtering>false</filtering>
</resource>
</resources>
</build>
在IDEA中设置Maven,让IDEA和Maven结合使用。IDEA中内置了Maven,一般不使用内置的, 因为用内置修改IDEA的设置不方便。使用自己安装的Maven, 需要覆盖IDEA中的默认的设置。
1、确保机器上安装了Maven。
2、确保Maven在机器上的环境已经正确配置。
前两步可以参照安装和配置章节。
3、确保IDEA正确配置了Maven的地址。
settings.xml
文件位置,一般为安装路径下的 conf/settings.xml
位置。settings.xml
文件中配置好的仓库路径。
赞
踩
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。