一、创建Maven工程
1、在项目当中创建Maven工程
Next
Next
Next
Finish
无法创建Maven项目解决办法:
在pom.xml当中
<dependency>
<groupId>commons-httpclient</groupId>
<artifactId>commons-httpclient</artifactId>
<version>3.1</version>
</dependency>
2、创建一个Java类会自动引入jar
package com.itzheng.demo2.com.itzheng.demo2;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import org.apache.commons.httpclient.DefaultHttpMethodRetryHandler;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpException;
import org.apache.commons.httpclient.HttpStatus;
import org.apache.commons.httpclient.methods.GetMethod;
import org.apache.commons.httpclient.params.HttpMethodParams;
public class App {
private static String url = "https://www.bilibili.com/416beec0-8ac2-467d-a6c7-07b31a70ebcf";
public static void main(String[] args) {
// Create an instance of HttpClient.
HttpClient client = new HttpClient();
// Create a method instance.
GetMethod method = new GetMethod(url);
// Provide custom retry handler is necessary
method.getParams().setParameter(HttpMethodParams.RETRY_HANDLER, new DefaultHttpMethodRetryHandler(3, false));
try {
// Execute the method.
int statusCode = client.executeMethod(method);
if (statusCode != HttpStatus.SC_OK) {
System.err.println("Method failed: " + method.getStatusLine());
}
// Read the response body.
byte[] responseBody = method.getResponseBody();
File file = new File("C:\\Users\\ZHENG\\Desktop\\tuo.png");
FileOutputStream fos = new FileOutputStream(file);
fos.write(responseBody);
fos.close();
// Deal with the response.
// Use caution: ensure correct character encoding and is not binary data
System.out.println(new String(responseBody));
} catch (HttpException e) {
System.err.println("Fatal protocol violation: " + e.getMessage());
e.printStackTrace();
} catch (IOException e) {
System.err.println("Fatal transport error: " + e.getMessage());
e.printStackTrace();
} finally {
// Release the connection.
method.releaseConnection();
}
}
}
二、Maven的优点
1、maven到jar包仓库寻找jar
(1)优先找本地的仓库当中的jar
(2)本地仓库找不到,侧从私服上查找,找到后下载到本地仓库
(3)私服上找不到,侧从中央仓库查找,找到后下载到私服,最后下载到本地。
最终maven都会把jar下载到本地仓库当中,maven工程再引用本地仓库的jar包
2、一键构建
什么是构建?
只指的是项目从编译–测试–运行–打包----安装整个过程都交给maven进行管理,这个过程称为构建。
maven将项目构建的过程进行标准化,每个阶段使用一个命令完成,下图展示了构建过程的一些阶段,后面章节详细介绍每个阶段,这里先大概了解一下:
三、Maven的仓库和本地仓库的配置
1、Maven 仓库
Maven 的本地仓库,在安装 Maven 后并不会创建,它是在第一次执行 maven 命令的时候才被创建。
运行 Maven 的时候,Maven 所需要的任何构件都是直接从本地仓库获取的。如果本地仓库没有,它会首先尝试从远程仓库下载构件至本地仓库,然后再使用本地仓库的构件。
2、配置本地仓库
(1)创建仓库文件:文件名称为repository
。
(2)修改配置文件
这里的路径是上面创建仓库的路径
3、中央仓库
Maven 中央仓库是由 Maven 社区提供的仓库,其中包含了大量常用的库。
中央仓库包含了绝大多数流行的开源Java构件,以及源码、作者信息、SCM、信息、许可证信息等。一般来说,简单的Java项目依赖的构件都可以在这里下载到。
中央仓库的关键概念:
这个仓库由 Maven 社区管理。
不需要配置。
需要通过网络才能访问。
要浏览中央仓库的内容,maven 社区提供了一个 URL:http://search.maven.org/#browse。使用这个仓库,开发人员可以搜索所有可以获取的代码库。
4、远程仓库
如果 Maven
在中央仓库中也找不到依赖的文件,它会停止构建过程并输出错误信息到控制台。为避免这种情况,Maven
提供了远程仓库的概念,它是开发人员自己定制仓库,包含了所需要的代码库或者其他工程中用到的 jar 文件。
举例说明,使用下面的 pom.xml
,Maven 将从远程仓库中下载该 pom.xml
中声明的所依赖的(在中央仓库中获取不到的)文件。
5、私服:私人搭建的服务器。一般在企业内部的局域网中使用
6、最终maven都会把jar下载到本地仓库,maven工程再引用本地仓库的jar包。
四、Maven的目录结构规范
五、Maven的常用命令
maven常用命令
(一) maven常用命令:
1.mvn clean
清空产生的项目(target里)
2.mvn compile
编译源代码
切换到对应Java项目的目录下
3.mvn install
在本地repository中安装jar(包含mvn compile,mvn package
,然后上传到本地仓库)
生成对应的jar文件
4.mvn deploy
上传到私服(包含mvn install
,然后,上传到私服)
(二)把pom
文件中配置的依赖jar包打进来,打成一个包:要用maven-assembly-plugin
这个插件,在pom
文件加如下配置
5.mvn package
打包
生成jar
将打包好的jar放置到本地仓库
6.mvn test
运行测试
在target
test-classes
7.mvn site
产生site
8.mvn test-compile
编译测试代码
9.mvn -Dtest package
只打包不测试
10.mvn jar:jar
只打jar包
11.mvn test -skipping compile -skipping test-compile
只测试而不编译,也不测试编译
12.mvn deploy
13.mvn source.jar
源码打包
六、Maven的生命周期
1、Maven有【三套】【相互独立】的生命周期
Maven有三套独立的生命周期,不了解的话很容易将Maven的生命周期看作一个整体。
(1)清理生命周期(Clean Lifecycle):在进行真正的构建之前进行一些清理工作。
(2)默认生命周期(Default Lifecycle):构建的核心部分:编译、测试、打包、部署等等
(3)站点生命周期(Site Lifecycle):生成项目报告、站点,发布站点。
相互独立的意思就是说,你可以仅仅调用clean来清理工作目录,可以仅仅调用site来生成站点,这三个生命周期之间相互独立,并不存在强依赖关系。
当然了,也可以将三个生命周期组合使用,直接运行mvn clean install site来一起运行这三套生命周期。
七、使用eclipse配置maven
1、配置maven插件,高版本自带
Window->Preferences
2、设置maven仓库的位置
3、Maven重构缩阴
八、使用Maven建立工程
1、创建maven工程helloworld
点击Finish
2、自动生成web
目录结构
3、修改maven工程的jdk版本
在pom.xml当中添加以下代码片段
<configuration>
<!-- 原码版本 -->
<scorce>1.8</scorce>
<!-- 编译目标版本 -->
<target>1.8</target>
<!-- 指定编码 -->
<encoding>utf-8</encoding>
</configuration>
刷工程
工程项目改变了jdk版本,并且将不会报错
没事刷两下
4、修改创建maven的时候的默认jdk版本
(1)在maven的安装路径下
调整全局JDK版本,在settings.xml下配置
<profile>
<id>jdk1.8</id>
<activation>
<activeByDefault>true</activeByDefault>
<jdk>1.8</jdk>
</activation>
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
</properties>
</profile>
九、创建Servlet工程
1、创建Servlet类
Next
Finish
2、创建好一些Servlet工程会包一些错误
缺少一些jar
3、快速添加jar
点击Add
自动在pom.xml
当中添加对应的配置
4、创建jsp页面
这里没有报错,但是有时候就会报错
5、配置编译jsp对应的jar
6、在Servlet当中写入
package com.itzheng.web;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Servlet implementation class HelloServlet
*/
public class HelloServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("进入到HelloServlet....");
//请求转发
request.getRequestDispatcher("/index.jsp").forward(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
}
7、修改index.jsp页面
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
第一次使用maven工程,进入index.jsp页面
</body>
</html>
8、运行项目
(1)pom.xml添加配置文件
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>tomcat-maven-plugin</artifactId>
<version>2.2</version>
<configuration>
<!-- 访问端口 -->
<project>8080</project>
<!-- 项目路径 -->
<path>/helloworld</path>
<!-- 编码 -->
<uriFncoding>utf-8</uriFncoding>
</configuration>
</plugin>
</plugins>
</build>
(2)运行项目
编译项目
运行项目
访问http://localhost:8080/helloword/HelloServlet
运行成功
(3)依赖在作用:运行的时候可能会出错,需要设置一下依赖
十、Maven项目整合struts2
1、创建Maven的Progect
2、修改maven工程的jdk版本
在pom.xml当中添加以下代码片段
<configuration>
<!-- 原码版本 -->
<scorce>1.8</scorce>
<!-- 编译目标版本 -->
<target>1.8</target>
<!-- 指定编码 -->
<encoding>utf-8</encoding>
</configuration>
刷工程
工程项目改变了jdk版本,并且将不会报错
3、创建Action类
Finish
完成添加
成功自动引入jar包
4、写配置文件
(1)在src/mian/resources创建xml文件
在struts.xml当中配置对应的
<?xml version="1.0" encoding="UTF-8"?>
<struts>
<package name="default" namespace="/" extends="struts-default">
<action name="helloAction" class="com.itzheng.web.action.HelloAction">
<result>/index.jsp</result>
</action>
</package>
</struts>
(2)在web.xml当中配置过滤器
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5">
<display-name>mavenstruts</display-name>
<filter>
<filter-name>struts</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
5、启动
自动在pom.xml当中添加一段代码
在这个晚间当中添加一些配置
(3)在webapp下创建index.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
第一次使用maven工程,进入index.jsp页面
</body>
</html>
(4)在pox.xml当中配置struts对应的
添加jsp对应的API
运行项目访问成功