IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> Maven入门宝典(二)Maven工程开发 -> 正文阅读

[Java知识库]Maven入门宝典(二)Maven工程开发

目录

一.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时的代码修改了下,原来如下:

<id>jdk-1.8</id> 

修改后:

<id>jdk18</id> 

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

之后再启动就好了 !

另一个问题:

大概意思是连接不上谷歌服务器。
解决方式:禁用 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 文件最上方是项目基本信息:
<groupId>com.first</groupId>
<artifactId>mavenDemo</artifactId>
<version>1.0-SNAPSHOT</version>

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

<properties> 中定义一些配置信息:
<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
 </properties>
<dependencies> 中定义依赖的 jar 包坐标:
由于项目是 web 项目,需要写 Servlet JSP ,所以需要引入 Servlet和 JSP 的依赖。查找依赖坐标的网站: https://mvnrepository.com/

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

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

?选择版本

?我这里选择3.0.1

?要把其中的<scope>provided</scope>去掉,后面再讲

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

最后<dependencies> 如下:

   <dependencies>
    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>javax.servlet-api</artifactId>
      <version>3.0.1</version>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>javax.servlet.jsp</groupId>
      <artifactId>jsp-api</artifactId>
      <version>2.2</version>
    </dependency>
  </dependencies>
为什么之前的 web 项目中没有引入 jsp servlet jar 包?
因为之前项目中使用的是 tomcat 中的 jsp servlet 中的 jar 包,在项目中没有引入。
<plugins> 中定义第三方插件:
web 项目依赖 tomcat 运行,所以添加 tomcat7 插件,在<plugins>中添加如下插件代码
        <!-- tomcat7 -->
        <plugin>
          <groupId>org.apache.tomcat.maven</groupId>
          <artifactId>tomcat7-maven-plugin</artifactId>
          <version>2.1</version>
          <configuration>
            <port>8080</port>
            <path>/</path>
            <uriEncoding>UTF-8</uriEncoding>
            <server>tomcat7</server>
          </configuration>
        </plugin>

四.解决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" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<h1>你好,程序员!</h1>
</body>
</html>
通过maven的tomcat插件启动服务器:
方式一:
输入命令,tomcat7:run,即可启动Tomcat

方式二:

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

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

六.依赖范围

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

最好再刷新一下maven

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

?

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2022-05-16 11:13:45  更:2022-05-16 11:16:15 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 21:45:18-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码