您的位置:首页 > 编程语言 > Java开发

Java EE 学习:IDEA + maven + spring 搭建 web(1)

2018-02-27 21:12 387 查看

Java EE 学习(5):IDEA + maven + spring 搭建 web(1)

参考:http://www.cnblogs.com/lonelyxmas/p/5397422.html https://www.cnblogs.com/ostrich-sunshine/p/7070747.html
  http://www.ctolib.com/docs-IntelliJ-IDEA-c--159047.html(IDEA 使用教程,写的不错哟~~)
          孔老师的《SpringMVC视频教程
记录: 本节主要完成 使用 maven 管理 spring + 项目 包,搭建 maven+spring 的 web 项目平台。
前提: 已安装并配置好  - Intellij IDEA 16.3.5 Ultimate - JDK 1.8.0_45 - Maven 3.3.9 - Tomcat 8.5.12 - MySql 5.7 - Spring 4.0.0- Bootstrap 3.3.5 (可有可无)
不清楚的可参考 

1. 创建 Maven 项目

对于不使用Maven的开发者,可以直接建一个简单的Web项目。使用Maven的话,请按照图进行操作。
(1)File->New Project 可进入以下界面:首先选择左边栏Maven,再配置JDK(一般如果之前添加了JDK的话会自动填充,如未添加的话点击旁边的New将JDK目录导入即可)。勾选“Create from archetype“,然后选中4处蓝色位置webapp,点Next。
 


(2)Next 后进入如下界面:这里需要填写GroupId和ArtifactId还有Version,这三个属性目的是标识你的项目的唯一性,比如Tomcat的GroupId是org.apache,即它是apache组织的项目,ArtifactId是tomcat,项目名为tomcat,而我当前使用的Version是7.0.68。这些只在发布时有用,在此可以随便填写,填好后点Next。



 (3)Next 后,进入如下界面(配置 maven ):打开Maven home directory,可以发现IntelliJ IDEA已经集成了Maven 2和Maven 3两个版本,如果使用默认集成的maven的话,选择Buldled(Maven 3),直接点击Next。



我们也可以导入本地新安装的较新的Maven版本,点击蓝色箭头右边的 ... 按钮将Maven路径导入即可,点击Next:



(4)Next 后进入如下界面:填写项目名(可与上面 ID 相同,也可不同),选择项目保存路径,点击Finish:
 


 说明:(1)相比较于多 Module 项目,小项目就无需搞得这么复杂。只有一个 Module 的结构 IntelliJ IDEA 也是支持的,并且 IntelliJ IDEA 创建项目的时候,默认就是单 Module 的结构的。
(2) 如上图,在输入 Project name 的时候,Module name 和 Module file Location 自动进行改变,同时 Project location 和 Module file Location 完全一样,这也就表示,Project 目录和 Module 目录是同一个,所以此时 Project 目录下就会有 src 目录,但是我们应该明白其本质还是 Module 的目录。
(5)finish 后,进入如下界面,maven会在后台生成web项目,这需要等待一定的时间,视网络环境而定,经验发现用较新版本的maven项目生成更快,使用IDEA集成的maven可能会等待很长一段实践。



左边红框中展示了该项目的文件结构。可以发现:
(1)如上图标注 1 所示,.idea 即为 Project 的配置文件目录。
        如上图标注 2 所示,.iml 即为 Module 的配置文件目录。  
通过上面的了解我们也知道 Inte
da9d
lliJ IDEA 项目的配置变动都是以这些 XML 文件的方式来表现的,所以我们也可以通过了解这些 XML 文件来了解 IntelliJ IDEA 的一些配置。也因为此特性,所以如果在项目协同中,我们要保证所有的项目配置一致,就可以考虑把这些配置文件上传到版本控制中。如果把这些文件加入到版本控制之后,那又有一点是需要考虑的,那就是协同者 Checkout 项目下来之后,按自己的需求进行项目配置的之后,项目的 XML 文件也会跟着变化。此时协同者的这些变化的文件就不应该再上传到版本控制中。至于如何更好地控制这些不想随时提交的文件,在接下来的版本控制专讲中会进行详细讲解。
(2)在src/main下创建了以下文件夹:
recources文件夹:一般用来存放一些资源文件
webapp文件夹:用来存放 web 配置文件以及 jsp 页面等,这已经组成了一个原始的 web 应用。
注意:选择 右边红框 的 Enable-Auto-Import,可以在每次修改 pom.xml 后,自动的下载并导入 jar 包,这一点在后面详述。

2. 新建 source 文件夹并命名为 Java,并设置:

(1) 按 ctrl+alt+shift+s,或者File->Project Structure,或点击如下:查看项目结构



 
出现如下图:



(2)选择Modules,在SpringMVCDemo的src\main文件夹中新建一个文件夹,取名为java:



接着,选中java文件夹,点击上面的 Make as:Sources,该文件夹就会变成蓝色,用以保存java代码,按OK,结束配置。



3.Maven自动导入jar包(添加项目包):包括 Spring 包(使用 spring 框架),测试包,日志包 等... 

既然我们要用 SpringMVC 开发,那肯定少不了 SpringMVC 的相关 jar 包。如果不使用 Maven 的话,那就需要去官网下载相关的jar包,然后导入到项目中。现在使用 maven 的话,就不需要上网找jar包了。具体容我一一道来。
 
    Maven所做的工作其实很简单,就是自动把你需要的jar包下载到本地,然后关联到项目中来。maven的所有jar包都是保存在几个中央仓库里面的,其中一个最常用的是Maven Repository,即,你需要什么 jar 包,它就会从仓库中拿给你。那么如何告诉 maven 需要什么 jar 包呢?我们看看工程目录,能找到一个 pom.xml 文件(这个文件在刚创建好项目时就已经展现在了大家面前),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/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion>
<groupId>com.example</groupId>
<artifactId>testWeb</artifactId>
<packaging>war</packaging>
<version>1.0-SNAPSHOT</version>
<name>testWeb Maven Webapp</name>
<url>http://maven.apache.org</url>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<finalName>testWeb</finalName>
</build>
</project>

    我们可以看到这个文件包含了我们之前定义的本项目的gropId等信息,这些信息是该项目的标识,我们不要去改动它们。
    重点看<dependencies>标签,翻译过来是”依赖“的意思,也就是说把对每个包的需求都称为一个依赖<depedency>,定义在<dependencies>中。在每个<depedency>中,你需要提供的是所需 jar包的 groupId、artifactId、version 这三个必要信息。比如上面我们看到引入可一个 junit 包,格式如下:

<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>

    这是单元测试包,提供了三个基本信息,第4个 scope 对其他包来说是非必需的。所有jar包的引入都要满足这个格式。那么如何查看这些 jar 包的3个信息呢,可能刚接触是开发者还不是很熟悉,这个时候就需要查阅仓库了。比如我们需要引入 Spring 核心 jar 包 spring-core,打开Maven Repository搜索spring-core,进入如下界面:



 点击进入红框选中的 Spring Core,如下所示,可以看到各版本的使用情况:



   选择使用最多版本 4.3.7.RELEASE,可以看到其dependency写法如下红框所示:



 
  我们将其复制到 pom.xml 中的 <dependencies> 中:



    这样,Maven 就会开始自动下载 jar 包到本地仓库,然后关联到你的项目中,下载完成后,我们展开工程目录中 External Libraries:



    可以发现,虽然我们只写了一个依赖,但是它导入了两个jar包,也就是说,导入某个jar包时,与它密切相关的 jar 包也会同时被导入进来。
    除了 spring-core,我还要 spring-context,复制 spring-core 的 <dependency>,将 spring-core 改为 spring-context,如下:
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>4.3.7.RELEASE</version>
</dependency>
    下载完成后,查看External Libraries,会不会发现,瞬间导入了好多jar包(当然不是瞬间,这得看你的网速了)呢:



    这就是 Maven 的强大之处,如果你需要使用 testWeb 开发网站的话,只需记住几个重要的包的名字,就可以轻松将所有包导入项目中。
    长话短说,现在我们要进行 testWeb 的开发,请把你的 pom.xml 变成下面的样子,当然不要改你的 grupId 等信息(从modelVersion 到 url 都不要动):
(1) 添加公用版本信息(可以不添加,直接将版本写入即可)
<properties>
<spring.version>4.3.7.RELEASE</spring.version>
<hibernate.version>5.2.10.Final</hibernate.version>
</properties>
(2)接着,请在<dependencies>中加入以下依赖:

        <dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>

<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring.version}</version>
</dependency>

<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${spring.version}</version>
</dependency>

<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-jpa</artifactId>
<version>1.11.1.RELEASE</version>
</dependency>

<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
<version>${hibernate.version}</version>
</dependency>

<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-c3p0</artifactId>
<version>${hibernate.version}</version>
</dependency>

<dependency>
<groupId>com.mchange</groupId>
<artifactId>c3p0</artifactId>
<version>0.9.5.2</version>
</dependency>

<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>

<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.39</version>
</dependency>

将<build>改成如下形式:

<build>
<finalName>springmvcdemo</finalName>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.8</source>   <!-- 此处的 1.8 指的是 JDK 的版本,目前一般为 1.7 或 1.8 -->
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>

 
我的 完整的 pom.xml 文件如下:


完整的 pom.xml 文件 
我们可以发现,除了导入了spring相关jar包,还有一些其他的包,这些包都是有作用的,我们后面慢慢说。如果不使用Maven请自行下载spring、hibernate、mysql、jstl等相关jar包然后导入到工程中。至此,jar包的导入就完成了
 
此处补充下 Maven 快速排查依赖包冲突
(1)如下图,点击 箭头所指按钮,
出现左边的项目依赖结构图,通过此图我们可以很好的观察项目的依赖依赖情况。
如下标注1 所示,我们可以直接在依赖结构图上编辑依赖,常用的就是此排除功能。



 (2)如下图所描述,一般我们出现红色线的时候是都要进行排除的,防止出现因为版本不同的依赖包造成无法编译。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: