一. Maven项目结构
一个Maven项目结构符合以下展示:
|
|_______src文件夹
|
|_______main文件夹
|
|_________java文件夹
|
|____实体类
|
|____Util
|
|____Dao
|
|_____Service
|
|
|_________resources文件夹
|____java工具类运行时要读取配置文件
|
|_______test文件夹
|
|________java文件夹
|_______测试类
|
|________resources文件夹
|_______测试类要读取配置问价
|
|_______pom.xml
在创建完一个Maven工程后,目前是这样的结构:
java文件夹下用于存放java源程序以及源码,test包下则是Maven生成的测试文件夹
接下来创建resources文件夹用于存放资源文件或者配置文件:
二. pom文件理解
从maven的三个作用来讲:
1.用来向Maven工具进行自我介绍
<modelVersion>4.0.0</modelVersion>
<groupId>com.bjpowernode</groupId>
<artifactId>ProjectA</artifactId>
<version>1.0</version>
<name>ProjectA</name>
2.用来向maven索要jar包:
在<dependencies></dependencies>中书写要依赖的jar包
<dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.11</version> <scope>test</scope> </dependency> </dependencies>
Maven Repository: Search/Browse/Explore (mvnrepository.com) 通过这个网站可以查询到项目jar包完整的信息,直接复制粘贴到pom.xml文件中就行。
3.用来向maven索要项目构建周期服务:
在<build></build>中,记录了项目周期构建服务
(1)什么是项目周期构建服务?简单来说,maven为maven项目提供了一整套行之有效的构建插件,依赖maven和这些插件,开发人员在maven工程的设计中,实际的工作可以交由插件完成。
打开右边栏的maven小页,点击lifecycle,以下展示的就是maven项目周期构建服务
clean放后再讲。
vadlidate, 用于检测当前项目的pom.xml文件的配置标签是否书写正确。并在控制台输出检查结果
compile,将src/main 下的被标记为sourceRoot的文件夹下的所有java文件编译为class文件,并被maven自动存入工程中的target文件夹下。
在编译前,没有target文件夹
编译后,出现了target文件夹,存放着编译好的class文件
test:这个命令自动将src/test/java文件夹中所有的java文件编译为class文件并保存到target中。然后自动运行每一个测试方法。tip:自动调用了compile,运行了test中的测试方法
package:将target中classes文件所有的类文件打成jar包或则war包。
并存放到target文件中,就在targets文件夹中(先编译测试通过测试后在打jar包,package)
至于是打包成jar包还是war包则是依据pom.xml文件中的<packaging></packaging>标签指定
install:将target中jar包添加到maven工具的本地仓库中。Maven工具会自动在当前计算机生成一个本地仓库(这里就是放在你已经指定好的本地仓库)。用于对当前计算机中的Maven工程提供jar包支持.(非常重要,是将你自己创建的jar包放于maven的仓库)
deploy:将target中jar或则war包推送到远程的Maven仓库
clean:将target文件所有的内容都清除(包括targets文件夹)
(2)pom文件中的build标签中的<resources>标签:
<resources>。这个标签的应用有:修改工程项目文件位置;
修改工程项目文件位置:一般来说,当我们创建了maven项目后,在main文件夹下会有一个resources文件夹用于存放工程资源文件,在maven中也会自动去寻找相应的位置来获取工程资源配置文件。然而通过directory标签,我们可以任意指定资源文件夹位置
<resources>
<!--可以写多个resource标签,如图所示-->
<resource>
<directory>要指定的文件夹目录</directory>
<includes>
<include>**/*.xml</include> <!--存在与指定文件夹下的任意位置,任意名称的xml文件-->
<!--可以写多个include标签-->
</includes>
</resource>
</resources>
(3)build标签下的plungin标签:
Maven是通过pom.xml来执行任务的,其中的build标签描述了如何来编译及打包项目,而具体的编译和打包工作是通过build中配置的 plugin 来完成。当然plugin配置不是必须的,默认情况下,Maven 会绑定以下几个插件来完成基本操作。
(4)jar包依赖原则:(同一个jar包不同版本)
依赖路径最短优先原则:谁的路径最近就用哪个jar包(比如,本地导入jar包和导入的其他香奴中存在的jar包,本地导入的路径近)
相同路径新导入优先: 相同路径优先使用新导入的jar包