目录
4.2.1 手工制作项目的目录结构或使用插件创建项目的目录结构
四.第一个Maven项目(手工制作)
4.1 Maven工程目录结构
4.2 手工制作Maven项目的步骤
4.2.1 手工制作项目的目录结构或使用插件创建项目的目录结构
1.手工制作项目的目录结构
非常简单,就是按照上图手工把项目结构创建出来
2.使用插件创建项目的目录结构
模板:
mvn archetype:generate
-DgroupId=src/main/java和src/test/java目录下的包
-DartifactId=项目名称
-DarchetypeArtifactId=maven-archetype-webapp -Dversion=0.0.1-snapshot
-DinteractiveMode=false
①创建java工程
mvn archetype:generate -DgroupId=com.itheima -DartifactId=java-project -DarchetypeArtifactId=maven-archetype-quickstart -Dversion=0.0.1-snapshot -DinteractiveMode=false
②创建web工程
mvn archetype:generate -DgroupId=com.itheima -DartifactId=web-project -DarchetypeArtifactId=maven-archetype-webapp -Dversion=0.0.1-snapshot -DinteractiveMode=false
4.2.2 在项目的src同层目录下创建pom.xml文件
pom.xml文件的内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<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">
<!--指定pom的模型版本-->
<modelVersion>4.0.0</modelVersion>
<!-- 打包方式,java工程打包为jar,web工程打包为jar-->
<packaging>war</packaging>
<!--本项目的坐标-->
<!--组织id-->
<groupId>com.itheima</groupId>
<!--项目id,就是你的项目名称-->
<artifactId>web01</artifactId>
<!--版本号 -->
<version>1.0-SNAPSHOT</version>
<!--设置当前工程的所有依赖-->
<dependencies>
<!-- 具体的依赖-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
</dependencies>
<!-- 构建-->
<build>
<!-- 设置的所有的插件-->
<plugins>
<!-- 具体的插件配置-->
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.1</version>
</plugin>
</plugins>
</build>
</project>
4.2.3 在cmd中使用Maven项目构建命令
可以一次执行多个命令,使用空格分隔。在命令提示符窗口输入以下命令:
1. mvn clean,清理(删除上次编译遗留的结果,即target文件)
2. mvn compile,编译java源程序,会在src的同级目录下生成target目录,里面存放字节码文件
3. mvn package ,打包(打包指令是先编译源程序,在编译测试程序,再执行测试程序,最后对源程序进行打包)
4. mvn install,安装(将源程序打包下载到本地仓库中,此步骤包括上述步骤)
5. mvn test,编译测试源程序Test,也会在src的同级目录下生成target目录,里面存放字节码文件
四.第一个Maven项目(IDEA生成)
4.1 idea中配置maven
首先在File的setting里配置Maven,配置内容包括maven的安装路径和setting.xml的路径
4.2 idea中创建一个maven项目
在new Moudle里找到下图
4.2.1 手工创建
4.2.2 根据原型创建
Java项目的原型结尾是quickstart,web项目的原型结尾是webapp
4.3 web项目安装Tomcat插件
若创建的是web项目,则给web项目安装tomcat7插件
在中央仓库找出插件坐标,复制到pom.xml中,具体代码如下
<!-- 构建-->
<build>
<!-- 设置的所有的插件-->
<plugins>
<!-- 具体的插件配置-->
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.1</version>
</plugin>
</plugins>
</build>
五.依赖管理
5.1 依赖配置
在setting.xml文件中配置
<!--设置当前工程的所有依赖-->
<dependencies>
<!-- 具体的依赖-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
</dependencies>
5.2 依赖传递
5.2.1 依赖传递分类
因为依赖具有传递性,所以延伸出二种依赖,这二种依赖都是相对的
1.直接依赖:在当前项目中通过依赖配置建立的依赖关系。
2.间接依赖:被依赖的资源如果依赖其他资源,当前项目间接依赖其他资源。
5.2.2 依赖传递冲突问题
路径优先:当依赖中出现相同的资源时,层级越深,优先级越低,层级越浅,优先级越高。
声明优先:当资源在相同层级被依赖时,配置顺序靠前的覆盖配置顺序靠后的。
特殊优先:当同级配置了相同资源的不同版本,后配置的覆盖先配置的。
5.3 可选依赖
可选依赖是指对外隐藏当前所依赖的资源--不透明,在pom.xml中配置,如下图
5.4 排除依赖
排除依赖指主动断开依赖的资源,被排除的资源无需指定版本,在pom.xml中配置,如下图
5.5 依赖范围
5.5.1 scope标签
依赖的jar默认情况可以在任何地方使用,可以通过scope标签设定其作用范围(scope标签放在依赖资源的坐标下边)
<scope>compile</scope> 默认
<scope>test</scope> 测试程序范围内有效(test文件夹范围内)
<scope>provided</scope> 主程序范围内有效(main文件夹内)
<scope>runtime</scope> 是否参与打包
如下图:
5.5.2 依赖范围的传递性(了解):
带有依赖范围的资源在进行传递时,作用范围将受到影响,如下图