Maven入门宝典(二)Maven工程开发

Maven入门宝典(二)Maven工程开发,第1张

目录

一.Idea配置Maven插件

二.构建Maven工程

三.pom文件配置

四.解决Unable to import maven project报错

五.编写代码

六.依赖范围


一.Idea配置Maven插件 在使用 Idea 开发项目时,可以整合 Maven 插件进行一键构建和依赖管理。 Idea 自带 Maven 插件,我们也可以指定自己下载的 Maven 件。 依据图片指示,选择本地 maven 安装目录,指定 settings 配置文件。

File-->Settings-->

注意本地仓库位置如果没自动检测则需要自己配置。配置时别忘了点击override。

之后,点击 File — New Projects Settings(因idea的版本不同,也可能是Other Settings) — Settings for NewProjects ,再像上面一样设置一遍 Maven ,使得新创建的项目也可以使用同样的 Maven 配置。

二.构建Maven工程 接下来我们构建一个 Maven Web 工程: 1 打开 idea ,选择创建一个新工程

配置GroupId和ArtifactId

 点击next,出现下面的页面,一般不用改,点击next,

 然后配置项目名(一般不用改,和ArtifactId一样)和项目存放路径

 点击Finish。

然后我的idea就报了一个错误,说是不能导入maven项目,应该是选中的那个模板

Unable to import maven project:

 问题解决:

看了这两篇文章:

IDEA Unable to import maven project: See logs for details (maven的坑)_Certain_的博客-CSDN博客_see

IDEA Maven 报 Unable to import maven project解决方案_仰望晴空的网痴的博客-CSDN博客

但是我照着修改之后却仍然Unable to import maven project:

又胡乱捣鼓了大半天,我把我上篇文章给maven配置jdk8时的代码修改了下,原来如下:

jdk-1.8 

修改后:

jdk18 

然后又在标签的中的路径最后加了个/,已在上篇文章中修改,原来没有/

之后再启动就好了 !

另一个问题:

大概意思是连接不上谷歌服务器。
解决方式:禁用 android support 插件重启即可。
 

成功启动:

一小会功夫下载一些

看看项目结构:

手动添加 src/main/java 目录,此时该目录还不能写 Java 代码。 6 src/main/java 目录设置为 Java 代码目录。右键java文件夹: 设置之后会发现java文件夹下可以创建java文件 同理在main下创建resources文件夹(用于存放配置文件),右键--》Mark Drractory as -->Resources Root 再在src下创建test文件夹,然后在test下创建java和resources文件夹,用上面相同的方法分别设置为Test Sources Root 和 Test Resources Root 即可。 配置完成的项目结构如下:

三.pom文件配置

pom.xml文件配置了maven项目的所有信息。

pom 文件最上方是项目基本信息:
com.first
mavenDemo
1.0-SNAPSHOT

war
groupId groupId 一般定义项目组名,命名规则使用反向域名。例如com.itbaizhan artifactId artifactId 一般定义项目名,命名使用小写字母。项目发布后,它的坐标是 groupId+artifactId version version 定义版本号。版本号一般有三段,第一段:革命性的产品升级。第二段:新功能版本。第三段:修正一些 bug packaging packaging 定义打包方式。

中定义一些配置信息:

    UTF-8
    1.8
    1.8
 
中定义依赖的 jar 包坐标: 由于项目是 web 项目,需要写 Servlet JSP ,所以需要引入 Servlet和 JSP 的依赖。查找依赖坐标的网站: https://mvnrepository.com/

在这里当要引入依赖时发现仍出现Unable to import maven project的问题,哎,麻了。

先说如何引入,登陆上面的网址,在搜索框搜索想要的api,比如我要引入servlet,输入servlet

 选择版本

 我这里选择3.0.1

 要把其中的provided去掉,后面再讲

同样的方法添加jsp,搜索jsp即可,我选择2.2版本,复制代码时也把provided去掉

最后 如下:

   
    
      javax.servlet
      javax.servlet-api
      3.0.1
      provided
    
    
      javax.servlet.jsp
      jsp-api
      2.2
    
  
为什么之前的 web 项目中没有引入 jsp servlet jar 包? 因为之前项目中使用的是 tomcat 中的 jsp servlet 中的 jar 包,在项目中没有引入。 中定义第三方插件: web 项目依赖 tomcat 运行,所以添加 tomcat7 插件,中添加如下插件代码
        
        
          org.apache.tomcat.maven
          tomcat7-maven-plugin
          2.1
          
            8080
            /
            UTF-8
            tomcat7
          
        
四.解决Unable to import maven project报错

在经过上面的修改无果后,我准备重装Idea,idea2019和maven版本可能不兼容了,所以我又参考了下面的文章,下载了比较新的idea2022.1

IntelliJ IDEA 2022.1最新激活破解教程(永久激活,亲测有效) - 异常教程

最新IDEA专业版安装教程(2021.3.2)_C.DLording的博客-CSDN博客_idea专业版安装教程

注意host文件位置:C:\Windows\System32\drivers\etc

我看了看,好像我的host文件之前并没有为idea配置过,所以开始放心破解过程。

亲测有效!

五.编写代码 接下来编写 Servlet Jsp 代码: MyServlet.java:
package com.first.servlet;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebServlet("/demo1")
public class MyServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //跳转到一个jsp页面
        req.getRequestDispatcher("hello.jsp").forward(req,resp);
    }
}

hello.jsp:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>


    Title


你好,程序员!


通过maven的tomcat插件启动服务器: 方式一: 输入命令,tomcat7:run,即可启动Tomcat

方式二:

可以看到右上角已经配置完成

访问发现状态码500,请看下节。

六.依赖范围 访问 servlet 后,发现报 500 异常,这是为什么呢? 这是由于项目中引入了 Servlet Jsp jar 包,而在项目运行时,Tomcat 要使用它自带的 Servlet Jsp jar 包,这样就造成了 jar 包冲 突。但如果项目不引入 Servlet Jsp jar 包,则根本无法通过编 译。 此时可以设置依赖的作用范围解决该问题,设置 Servlet Jsp jar包只在编译期起作用,运行时不起作用,这样不仅可以通过编译, 还能在运行时避免 jar 包冲突。 通过在 中添加 ,可以设置依赖的作用范围,有以下取值: compile 默认范围。表示该依赖在编译和运行时生效,项目打包时也会将该依赖打包进去。 provided 使用此依赖范围的 Maven 依赖,编译和测试时有效,但在运行时无效。典型的例子是 servlet-api ,在运行时 Web 容器已 经提供依赖,就不需要 Maven 重复地引入一遍。 runtime runtime 范围表明编译时不需要生效,而只在运行时生效。典型的例子是 JDBC 驱动包,编译时只需要 JDK JDBC 接口即 可,只有运行项目时才需要具体的 JDBC 驱动。 test test 范围表明使用此依赖范围的依赖,只在编译和运行测试代码的时生效,程序的正常运行不需要此类依赖。典型的例 子就是 JUnit ,它只有在编译测试代码及运行测试的时候才需 要。 system 如果有些你依赖的 jar 包没有 Maven 坐标的,它完全不在Maven 体系中,这时候你可以把它下载到本地硬盘,然后通 system 来引用。(不推荐使用) 所以对于Servlet和Jsp依赖,我们添加依赖范围为provided即可。
  
    
      javax.servlet
      javax.servlet-api
      3.0.1
      provided
    
    
      javax.servlet.jsp
      jsp-api
      2.2
      provided
    
  

最好再刷新一下maven

重启项目,即可正常访问 Servlet Jsp

 

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/924092.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-16
下一篇 2022-05-16

发表评论

登录后才能评论

评论列表(0条)

保存