二、IDEA创建Maven项目

2年前 (2022) 程序员胖胖胖虎阿
152 0 0

一、IDEA配置maven

当导入maven项目的时候,首先需要按照如图进行maven的配置:指定使用的maven包、指定本地仓库和maven的settings.xml文件。
二、IDEA创建Maven项目然后在IDEA右侧栏,点击maven图标,在滑出的maven的界面选择Reimport All maven project下载jar包
二、IDEA创建Maven项目

二、使用maven创建JavaWeb项目

1.创建javaWeb项目

  • 打开IDEA,点击File —>>>New Project—>>弹出new Project界面
    二、IDEA创建Maven项目
  • 点击Next,在New Module界面设置
    二、IDEA创建Maven项目
  • 在此页面可以看到配置的maven信息、创建项目的信息
    二、IDEA创建Maven项目
  • 设置项目的名称和路径信息
    二、IDEA创建Maven项目
  • 点击Finish,就可以创建好项目,如果创建的项目的目录结构是不符合标准的maven结构,我们需要进行设置。
    二、IDEA创建Maven项目
    • 对于java目录,是需要设置Source Root目录。设置之后,maven编译的时候可以转为classes文件。可以右键点击Mark Directory as进行设置。
      二、IDEA创建Maven项目
    • 我们此时创建的项目的webapp,鼠标点击右键,不能创建jsp、html文件,显然这是有问题的。我们需要进行如下设置:点击File—>>>Project Structure,在弹出的页面进行设置:
      二、IDEA创建Maven项目
      二、IDEA创建Maven项目
    • 通过上述的设置,我们发现
      1.webapp的目录颜色改变了;2.webapp目录下新建Jsp、html文件了
      二、IDEA创建Maven项目

2.pom文件

<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">
  	<!-- pom文件的版本 -->
  <modelVersion>4.0.0</modelVersion>
	<!-- 企业域名倒序 -->
  <groupId>com.oneHeart</groupId>
  	<!-- 项目名称 -->
  <artifactId>maven_web2</artifactId>
  	<!-- 版本 snapshot快照版,在项目每次启动时会自动检查更新 release:1.1 -->
  <version>1.0-SNAPSHOT</version>
  <!-- 打包格式 jar:java project的打包,.jar文件 war:web project打包,打包为.war文件,可以直接在应用服务器中执行
pom:父级项目的打包格式 -->
  <packaging>war</packaging>
	<!-- 名称 -->
  <name>maven_web2 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>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>1.7</maven.compiler.source>
    <maven.compiler.target>1.7</maven.compiler.target>
  </properties>
	<!-- 依赖管理 一般出现在父级项目中,他用来规范继承关系的项目中使用的依赖的版本信息, 如果父项目中dependencyManagement,子项目中是不需要指定版本信息的 -->
	<!-- <dependencyManagement> dependencies如果定义在dependencyManagement中 规范父级别依赖
</dependencyManagement> -->
  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.11</version>
      	<!--scope:范围 
      	用于指定依赖的生命周期的 compile:编译、测试、运行有效,默认使用compile provided:编译、测试有效,运行无效(servlet依赖)
test:编译,测试有效,运行无效(junit,spring-test) runtime:测试、运行有效 system:与本机的系统变量相关,一致性差(不建议使用),编译测试有效。
import:从其他 pom 文件导入时有效 -->
      <scope>test</scope>
    </dependency>
  </dependencies>

  <build>
	  <!--
	項目最終部署的名稱
	-->
    <finalName>maven_web2</finalName>
    <pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
      <plugins>
     	<!--配置插件:
     		maven生命周期与一键构建使用的插件对应:clean、compile、test、package、install、deploy
     		-->
        <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>
			<!-- 配置JDK -->
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-compiler-plugin</artifactId>
				<configuration>
					<source>1.8.0_201</source>
					<target>1.8.0_201</target>
				</configuration>
			</plugin>
			<!-- tomcat插件,maven默认集成的tomcat6,
			tomcat6与JDK8搭配使用的时候会有版本冲突 -->
			<plugin>
				<groupId>org.apache.tomcat.maven</groupId>
				<artifactId>tomcat7-maven-plugin</artifactId>
				<configuration>
					<port>9991</port>
				</configuration>
			</plugin>
      </plugins>
    </pluginManagement>
  </build>
</project>

3.创建Servlet

@WebServlet("/helloServlet")
public class HelloServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        this.doPost(req, resp);
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("HelloServlet......");
        req.getRequestDispatcher("/hello.jsp").forward(req,resp);
    }
}

4.创建hello.jsp

在webapp目录下创建hello.jsp

5.运行Tomcat,访问Servlet

二、IDEA创建Maven项目
二、IDEA创建Maven项目

6.访问Servlet

浏览器输入:http:localhost:8080/maven_web2/helloServlet,则会跳转到hello.jsp页

7.遇到的问题

<1>webapp目录下无法创建jsp、html文件

解决措施:参照 3.创建Servlet进行将webapp设置成web

<2> Class com.oneHeart.Servlets.HelloServlet is not a Servlet

具体描述:javax.servlet.ServletException: Class com.oneHeart.Servlets.HelloServlet is not a Servlet。编译的时候不出错,运行项目的时候出现的错误,创建的Servlet被提示 不是Servlet。
原因:maven集成了tomcat,我们可以查看本地tomcat 的依赖包,发现包含:servlet-api、jsp-api,而我们在maven 的pom.xml文件中添加了相同名称 servlet-api、jsp-api 的jar包(创建Servlet的时候需要),
而在项目运行的时候,则我们添加的包会和maven集成的tomcat包相冲突。
解决的办法:我们需要将pom文件中,我们添加的 servlet-api、jsp-api 包只在编译之时生效,而不在运行的时候生效,避免发生jar包冲突。我们可以使用 provided 指定jar包作用范围为编译,只在编译时候生效。

<scope> provided </scope>

<3>.严重: Failed to initialize end point associated with ProtocolHandler [“http-bio-8080”]

java.net.BindException: Address already in use: JVM_Bind :8080
端口被占用异常,原因:之前启动了maven项目,未关闭。而后重新启动,就会出现端口被占用异常。

<4>.org.apache.jasper.JasperException: Unable to compile class for JSP

An error occurred at line: 1 in the generated java file
The type java.io.ObjectInputStream cannot be resolved. It is indirectly referenced from required .class files
二、IDEA创建Maven项目
问题描述:使用maven启动了Servlet之后,在浏览器访问对应的Servlet,Servlet可以正常访问,但是跳转页面会出现错误。
原因:maven集成的tomcat默认是tomcat6.0.29(如图所示),而java的jdk使用的是1.8,所以猜测这应该是tomcat与jdk版本不兼容引起的
解决措施:使用高版本的tomcat,在pom.xml文件中进行配置,配置好之后可以从Maven的Plugins执行tomcat7:run的命令。

<build>
  <plugings>
          <plugin>
                <groupId>org.apache.tomcat.maven</groupId>
                <artifactId>tomcat7-maven-plugin</artifactId>
                <version>2.2</version>
                <configuration>
                    <port>8080</port>
                    <path>/</path>
                </configuration>
            </plugin>
  </plugings>
</build>

<5>live Template,IDEA代码模板设置

二、IDEA创建Maven项目

三、使用mave创建Java项目

1.java项目与javaWeb项目的创建区别:二、IDEA创建Maven项目

使用maven创建java项目可以参考创建javaweb项目。

版权声明:程序员胖胖胖虎阿 发表于 2022年10月2日 上午6:08。
转载请注明:二、IDEA创建Maven项目 | 胖虎的工具箱-编程导航

相关文章

暂无评论

暂无评论...