快速学习Maven构建项目(二)
4、Maven命令的生命周期:
- Clean 生命周期:clean
- Default 生命周期:compile、test-compile、test、package、install
- Site 生命周期:site命令,生成项目描述文档静态网页
- 不同生命周期的指令可以一起执行,例如先clean再compile
5、Maven命令的执行顺序:
a) 在相同生命周期中的命令才会受执行顺序的影响;
b) Default生命周期中的命令执行顺序:
compile <- test-compile <- test <- package <- install;
Part2.Maven入门程序
1、第一次使用要配置Maven,引用本地Maven,使用本地settings.xml配置文件。War包。最好选上create simple project
2、在src -> main -> webapp 下创建WEB-INF目录,并在目录下创建web.xml;
3、修改Maven默认编译级别:
a)全局编译级别 -> 修改settings.xml
b)项目级别修改 -> 项目对应的pom.xml
4、Java Resources -> src/main/java 下写代码,创建包和Servlet;
5、添加 servlet-api;
6、在servlet-api中添加scope标签,值为:proviede;
a)如果不加此标签有很大几率报错,因为tomcat中也有servlet-api的包导致冲突;
7、运行:发生错误,原因是maven默认使用tomcat6.xx,不支持@webServlet注解(tomcat7及以上才支持);
a) 解决方案1:需要去web.xml中配置Servlet;
b) 解决方案2:配置高版本tomcat插件;
8、最后测试,启动服务,在地址栏输入请求,显示结果;
如何解决web.xml未找到的问题?
Webapp目录下新建一个WEB-INF文件夹,随便找一个web.xml复制进来。
或者右击项目名称 –> “Java EE Tools” –> “Generate Deployment Descriptor Stub”;
如何修改JDK版本?
Pom.xml中添加如下文件:
<build>
<plugins> <!-- 插件列表-->
<plugin> <!-- 通过坐标获取插件-->
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.0</version>
<configuration>
<source>1.8</source> <!-- 设置JDK版本-->
<target>1.8</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId> <!--相当于tomcat-->
<artifactId>servlet-api</artifactId>
<version>2.5</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jsp-api</artifactId>
<version>2.0</version>
<scope>provided</scope>
</dependency>
</dependencies>
Eclipse中Maven项目pom.xml文件没有错,但一直有红叉的解决办法
- 鼠标右击maven项目,选择Maven,在弹出的界面中点击Update Project
- 在弹出的界面中勾选Force Update of Snapshots/Releases进行强制更新
手动添加插件和依赖,配置tomcat7插件(默认:tomcat6)
- 创建一个简单的maven工程
- 在console中添加Maven Repositories(Maven仓库)
- 在maven仓库中选择Local Respository 右键Rebuild Index(生成索引),第一次比较慢
- Pom.xml中右键Maven -> add Plugin(插件), 在Enter groupId or ...添加compile,选择下面的3.8.0 (此步添加编译插件) ,在plugin中添加<configuration> <source>1.8</ source> <target>1.8</ target><encoding>UTF-8</encoding></configuration>
- 重复第4步,搜索servlet,添加org.apache.tomcat tomcat-servlet-api 7.x.x jar 设置<scope>provided</scope>
- 也可以在下方的dependencies中添加jsp(版本同tomcat)和junit(4.9)的依赖。jsp设置<scope>provided</scope>
- 添加tomcat 7插件:第一次先到tomcat官网,查看maven tomcat,2013年更新的就是最新的了,复制<plugin>里2.2版本的那段到tomcat即可
- Run as -> Build Maven... -> tomcat7:run 组合命令 clean tomcat7:run
- 在tomcat7-maven-plugin的config设置中,可以设置端口号:<port>8081</port> 路径:<path>/...</path>
- 第一次运行后可以选择run as -> Build Maven从里面选以前执行过的命令
想添加本地仓库中没有的包怎么办?
方法:
打开maven.aliyun.com/mvn/search寻找
然后ctrl + F寻找,点击复制maven依赖
Scope作用域(依赖范围)
Maven中的依赖,会根据程序所处的阶段和场景发生变化,所以maven用scope属性来做限制;
- Compile(默认值):在编译、运行、测试、打包时都有效
- Provided:编译、测试时有效,运行、打包无效;
- Test:仅在测试时有效;(一般Junit 作用域添加test)
- Runtime:测试、运行、打包时有效
- System:不推荐使用,使用system作用域时不会去本地仓库寻找依赖,要指定本地路径;
Maven 3.5.4和tomcat 7 热部署
热部署:在tomcat运行时将项目部署上去;
- 开启tomcat热部署:
- 修改tomcat -> conf -> tomcat-users.xml配置文件;
- 在tomcat-users标签中添加以下代码:
<role rolename="manager"/>
<role rolename="manager-gui"/>
<role rolename="manager-script" />
<user username="admin" password="admin" roles="manager,manager-gui,manager-script"/>
- 启动tomcat;
- 修改项目中pom.xml,在tomcat7的插件上添加以下代码:
<configuration>
<url>http://localhost:8080/manager/text</ url >
<username>sunyong</ username >
<password>572739652</ password >
</configuration>
- 右键项目 -> run as -> maven build... 在goals中使用tomcat7:deploy 或者 tomcat7:redeploy来进行热部署;tomcat7:deploy 第一次部署时使用
tomcat7:redeploy 非第一次部署时使用
- 部署完毕,打开浏览器测试;
eclipse启动tomcat后localhost:8080无法访问问题/maven热部署403错误
https://blog.youkuaiyun.com/new_clumsybird/article/details/51881754
https://www.cnblogs.com/DarrenChan/p/6858661.html