❤️“一篇文章教你解决maven”从环境到应用--非常值得阅读❤️(下)

简介: ❤️“一篇文章教你解决maven”从环境到应用--非常值得阅读❤️(下)

10.pom文件


新版的idea 2020.X,不能设置自动导入,我们修改pom文件后在后上方有个小图案是m右下角有个刷新的,点击即可。


pom.xml是Maven的核心配置文件


<?xml version="1.0" encoding="UTF-8"?>
<!--Maven版本和头文件-->
<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">
  <modelVersion>4.0.0</modelVersion>
<!--之前配置的GAV-->
  <groupId>com.hxl</groupId>
  <artifactId>javaweb-01-maven</artifactId>
  <version>1.0-SNAPSHOT</version>
<!--Package:项目的打包方式
  jar:java应用
  war:javaWeb应用-->
  <packaging>war</packaging>
  <name>javaweb-01-maven Maven Webapp</name>
  <!-- FIXME change it to the project's website -->
  <url>http://www.example.com</url>
<!--  配置-->
  <properties>
<!--    项目的默认构建编码-->
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<!--    编码版本,可以修改为1.8-->
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
  </properties>
<!--  项目依赖-->
  <dependencies>
<!--    具体依赖的jar包配置文件-->
<!--    Maven的高级之处在于他会帮你导入这个jar包所依赖的其他jar包-->
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.11</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
<!--  项目构建用的东西-->
  <build>
    <finalName>javaweb-01-maven</finalName>
    <pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
      <plugins>
        <plugin>
          <artifactId>maven-clean-plugin</artifactId>
          <version>3.1.0</version>
        </plugin>
        <!-- see http://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_war_packaging -->
        <plugin>
          <artifactId>maven-resources-plugin</artifactId>
          <version>3.0.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-compiler-plugin</artifactId>
          <version>3.8.0</version>
        </plugin>
        <plugin>
          <artifactId>maven-surefire-plugin</artifactId>
          <version>2.22.1</version>
        </plugin>
        <plugin>
          <artifactId>maven-war-plugin</artifactId>
          <version>3.2.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-install-plugin</artifactId>
          <version>2.5.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-deploy-plugin</artifactId>
          <version>2.8.2</version>
        </plugin>
      </plugins>
    </pluginManagement>
  </build>
</project>


  • Maven由于它的约定大于配置,我们之后可能会遇到我们写的配置文件无法被导出或者生效的问题,解决方案:


<!-- 在build中配置resources,来防止我们资源导出失败的问题-->  
<build>
        <resources>
            <resource>
                <directory>src/main/resources</directory>
                <includes>
                    <include>**/*.properties</include>
                    <include>**/*.xml</include>
                </includes>
                <filtering>true</filtering>
            </resource>
            <resource>
                <directory>src/main/java</directory>
                <includes>
                    <include>**/*.properties</include>
                    <include>**/*.xml</include>
                </includes>
                <filtering>true</filtering>
            </resource>
        </resources>
</build>


11.IDEA中的操作


微信图片_20211229163800.png


12.解决遇到的问题


  • Maven3.8.2爆红


  • 我们发现在setting.xml文件中我们配置了本地仓库和阿里云镜像。看到没问题之后我们直接修改环境变量


  • 将版本降一下。需要改的位置是M2_HOME和MAVEN_HOME


  • Tomcat闪退


  • 点击start.bat,点进去我们往下看会看到java环境的一些配置,由于环境不对会导致错误


  • 可以在最后:end前加一个pause


  • IDEA中每次都要重复配置MAVEN


在IDEA中的全局默认配置中去配置。


微信图片_20211229163924.png


微信图片_20211229163929.png


微信图片_20211229163937.png


在这个地方配置后,以后每次都是这样了。


  • Maven项目中Tomcat无法配置


  • Maven默认web项目中的web.xml版本太老了


微信图片_20211229164117.png


我们可以查看下面的路径


微信图片_20211229164121.png


  • 看一下里面的版本,将webapp里面的和tomcat的一致


  • Maven仓库的使用



  • 在搜索栏进行搜索;如果搜不到就查看一些其他的,还搜不到这时候就想一下,这是用Tomcat启动的,那是不是就去Tomcat中找一下相关的,然后大概的锁定,再去Maven中去搜,一般搜出来用的最多的就是正确的。点进去可以下载jar包也可以看到maven的依赖


  • 以HttpServlet为例,发现爆红我们在Tomcat中找到关于servlet的,再去Maven仓库中查找


<!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api -->
<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>javax.servlet-api</artifactId>
    <version>4.0.1</version>
    <!-- 这个是个范围,要把他删掉-->
    <scope>provided</scope>
</dependency>


再进去的时候缺少点东西。我们再下载一个jsp-api。我们进去的时候看一下下载哪一个,会看到有一个是2011年更新的,我们选择2018年更新的那个。


<dependency>
      <groupId>javax.servlet.jsp</groupId>
      <artifactId>javax.servlet.jsp-api</artifactId>
      <version>2.3.3</version>
    </dependency>


再次进去的时候就可以了。


  • 我们接下来创建一个页面


微信图片_20211229164618.png


package com.hxl;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
public class HelloServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //响应的类型html
        resp.setContentType("text/html");
        //这个地方是设置编码,因为有可能进入浏览器后成乱码
        resp.setCharacterEncoding("utf-8");
        //获取响应的输出流
        PrintWriter out = resp.getWriter();
        out.println("<html>");
        out.println("<head>");
        out.println("<title>Hello World!</title>");
        out.println("</head>");
        out.println("<body>");
        out.println("<h1>你好呀</h1>");
        out.println("</body>");
        out.println("</html>");
    }
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doGet(req, resp);
    }
}


<!DOCTYPE web-app PUBLIC
 "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
 "http://java.sun.com/dtd/web-app_2_3.dtd" >
<web-app>
  <display-name>Archetype Created Web Application</display-name>
<!--  web.xml中是配置我们web的核心应用-->
<!--  注册Servet-->
  <servlet>
    <servlet-name>HelloServlet</servlet-name>
    <servlet-class>com.hxl.HelloServlet</servlet-class>
  </servlet>
<!--  一个Servlet对应一个Mapping:映射-->
  <servlet-mapping>
    <servlet-name>HelloServlet</servlet-name>
<!--    请求路径-->
    <url-pattern>/hxl</url-pattern>
  </servlet-mapping>
</web-app>


header.html中是一个测试,可以随便写点内容。


  • 这样启动柜tomcat后,进入localhost:8080,会进入到index.jsp中。进入到localhost:8080/header.html是进入到了header.html中的内容;然后再进入到localhost:8080/hxl中是进入到我们HelloServlet中的内容。
相关文章
|
Java Maven
Maven【5】在IDEA环境中配置和使用Maven
Maven【5】在IDEA环境中配置和使用Maven
364 1
|
8月前
|
Java 应用服务中间件 Maven
在IntelliJ IDEA中如何配置使用Maven以创建Tomcat环境
所以,别担心这些工具看起来有些吓人,实际上这些都是为了帮助你更好的完成工作的工具,就像超市里的各种烹饪工具一样,尽管它们看起来可能很复杂,但只要你学会用,它们会为你烹饪出一道道美妙的食物。这就是学习新技能的乐趣,让我们一起享受这个过程,攀登知识的高峰!
513 27
|
8月前
|
Java 应用服务中间件 Apache
在IntelliJ IDEA中使用Maven配置Tomcat环境
此配置方法具有较高的实用性,简单易懂。遵循以上步骤,您将能顺利在IntelliJ IDEA中使用Maven配置Tomcat环境,从而进行Web项目的开发和调试。
978 18
|
Java 应用服务中间件 测试技术
Maven学习笔记(一):Maven基础(基于命令行的学习和应用)
Maven 是一款 Java 项目构建工具,主要用于管理 jar 包及其依赖关系。 本文主要了解Maven基础知识及基础应用,旨在为之后的进一步学习奠定基础。 内容上几近全为学习《尚硅谷2022版Maven教程》整理所得。 仅供参考。
848 82
Maven学习笔记(一):Maven基础(基于命令行的学习和应用)
|
Java Maven 数据安全/隐私保护
Nexus【应用 01】上传jar包到私有Maven仓库的两种方法:手动 Upload 和 mvn deploy 命令(配置+操作流程)
Nexus【应用 01】上传jar包到私有Maven仓库的两种方法:手动 Upload 和 mvn deploy 命令(配置+操作流程)
5133 0
pandora boot热点应用探索问题之maven-compiler-plugin耗时较长的问题如何解决
pandora boot热点应用探索问题之maven-compiler-plugin耗时较长的问题如何解决
197 0
|
IDE Java Linux
在Maven中设置JVM系统参数及Java应用调试实例
在Maven中设置JVM系统参数及Java应用调试实例
695 0
|
Java 应用服务中间件 Maven
使用IDEA搭建SpringMVC环境,Maven导入了依赖,但是运行报错 java.lang.ClassNotFoundException
使用IDEA搭建SpringMVC环境,Maven导入了依赖,但是运行报错 java.lang.ClassNotFoundException
319 1
|
存储 JavaScript Java
【Maven从入门到如土】快速使用 Maven:命令行环境
【Maven从入门到如土】快速使用 Maven:命令行环境
311 0
|
Java Linux Apache
win环境-maven的安装以及配置(idea中的配置,setting文件修改,环境变量配置)
win环境-maven的安装以及配置(idea中的配置,setting文件修改,环境变量配置)
658 2

推荐镜像

更多