java:类文件
resoutces:静态文件
webapp:页面文件
test:测试类文件
pom.xml:Maven配置文件
在pom.xml文件中加入以下内容
- <build>
- <plugins>
-
- <plugin>
- <groupId>org.apache.tomcat.mavengroupId>
- <artifactId>tomcat7-maven-pluginartifactId>
- <version>2.2version>
- <configuration>
-
- <url>http://192.168.8.129:8080/manager/texturl>
- <username>adminusername>
- <password>adminpassword>
-
- <path>/${project.artifactId}path>
- <port>8080port>
- configuration>
- plugin>
- plugins>
- build>
(1)Maven的项目类型有三种:
jar: 相当于我们之前使用idea创建的java项目。打包主要打包java文件。
war: web项目类型。打包时除了src中内容,还会包含webapp目录,要比jar类型文件打包的内容更多。
pom: 在聚合项目中使用。聚合项目中如果一个项目为父项目,项目类型应该为pom类型。当项目类型为pom类型时,表示该项目除了会配置pom.xml以外不会有任何其他类或资源文件。
(2) 如何修改项目类型
jar
可以使得非.java文件在编译后依然保留。
下面就是让所有的.txt文件保留
- <build>
- <resources>
- <resource>
- <directory>src/main/java</directory>
- <includes>
- <include>**/*.txt</include>
- </includes>
- <filtering>true</filtering>
- </resource>
- <resource>
- <directory>src/main/resources</directory>
- <filtering>true</filtering>
- </resource>
- </resources>
- </build>
(1)依赖关系:当一个项目需要使用到其他项目的内容时,就可以使用依赖。
使用方式:通过坐标引入jar包。
主要用途:使用jar包中的类
依赖传递:b依赖于a,不仅会引入a,还会引入a所依赖的jar包。
依赖重复问题:
路径不同间接依赖中maven采用的是路径最短者优先.
路径相同间接依赖中maven 采用的是依赖定义顺序从上到下.
mysql
mysql-connector-java
8.0.28
(2)继承关系:继承下项目分为父子关系。父项目的<
packaging>
打包方式可以为jar | pom,无论是jar还是pom,子项目只能继承父项目的pom.xml,并不能继承src/main下的内容。
com.bjsxt
projectparent
1.0-SNAPSHOT
依赖管理
在继承关系下父项目的依赖,子项目会全部继承。通过父项目的设置,子类可以选择继承哪些依赖。
在父项目中可以通过
管理父项目中的依赖,子项目则可以指定继承那些依赖,当子项目需要这个依赖时坐标
可以省略。
在父项目中可以通过
管理父项目中的插件,子项目则可以选择继承哪些插件。
mysql
mysql-connector-java
8.0.28
使用属性标签管理版本
是
的子标签。
名称是自定义的,里面的8.0.27是自己填写的。
可以在
标签的
中通过${属性标签名}获取到定义的属性值。
8.0.27
mysql
mysql-connector-java
${mysql-version}
(3)聚合关系:在一个父项目中创建多个模块,所有的模块都是独立的,可以独立运行。且父项目不需要install,子模块就可以继承父项目的pom中的依赖。
Maven有三套相互独立的生命周期(Lifecycle ):
Clean Lifecycle:做一些清理工作;
Default Lifecycle:构建的核心部分、编译、测试、打包、部署等;
Site Lifecycle:生成项目报告、站点、发布站点;
其中Default Lifecycle包含如下阶段:
validate
- 验证项目是否正确并且所有必要的信息都可用
compile
- 编译项目的源代码
test
- 使用合适的单元测试框架测试编译的源代码。这些测试不应该要求打包或部署代码
package
- 将编译后的代码打包成可分发的格式,例如 JAR。
verify
- 对集成测试的结果进行任何检查,以确保满足质量标准
install
- 将包安装到本地存储库中,作为本地其他项目的依赖项
deploy
- 在构建环境中完成,将最终包复制到远程存储库以与其他开发人员和项目共享
常用指令 | 指令含义 |
---|---|
mvn help:system | 打印系统属性和环境变量 |
mvn clean | 删除target目录,清理所有之前所有编译的内容。手动删除target目录和运行此命令是等效的。 |
mvn validate | 验证项目是否可用 |
mvn compile | 编译项目,生成target目录 |
mvn test | 执行测试。执行测试时会自动运行src/test/java 目录下所有/*Test.java、/Test.java、**/TestCase.java 文件,采用约定方式执行。 |
mvn package | 打包项目 |
mvn deploy | 发布项目 |
mvn verify | 校验包是否正确 |
mvn install | 安装到本地仓库 |
mvn site | 生成站点。但是需要添加插件才能使用。 |
在pom.xml中
标签有一个
子标签,表示当前依赖的域(域:有效范围)。
取值 | 解释 |
---|---|
compile | 默认值,不配置scope时的取值,表示依赖参与整个项目的编译、打包、测试、发布。也就是说:编译时需要使用、测试时需要使用、最终打包时会包含。属于一种强依赖。 |
provided | 只是编译时生效,项目最终被打包时不会包含该依赖。常见servlet的依赖时需要配置。 |
runtime | 运行时生效。表示编译时不参与,但是参与项目的测试、打包。该依赖被打包时会被包含。 |
test | 只在测试时生效,这个包中的类只能在src/main/test中使用。常用在junit依赖时需要被配置。 |
system | 类似provided,但是需要结合systemPath属性,表示依赖不是来源于本地库,而是来源于其他目录。使用较少,在一些特殊项目中才可能被使用。 |
使用方式
junit
junit
4.13.2
test
注意:在导入servlet-api和jsp-api时一定要设置scope为provided,表示只在编译时生效。
原因:我们项目中需要导入servlet-api和jsp-api作为编译时使用。如果这两个依赖设置scope为compile,打包后在tomcat中就出现了两个servlet-api和jsp-api,访问servlet时会报错。