maven+eclipse+tomcat开发环境搭建

eclipse mar2+maven 3.39+tomcat8 构建maven结构的web项目 实现热部署

带图片完整word版本: http://download.csdn.net/detail/mfc2003/9465383

目录结构:
在这里插入图片描述

  1. Maven安装配置
    Maven这个词可以翻译为“知识的积累”,也可以翻译为“专家”或“内行”。本书将介绍Maven这一跨平台的项目管理工具。作为Apache组织中的一个颇为成功的开源项目,Maven主要服务于基于Java平台的项目构建、依赖管理和项目信息管理。无论是小型的开源类库项目,还是大型的企业级应用;无论是传统的瀑布式开发,还是流行的敏捷模式,Maven都能大显身手。1

Maven是优秀的构建工具,能够帮我们自动化构建过程,从清理、编译、测试到生成报告,再到打包和部署。

Maven能帮助我们标准化构建过程。在Maven之前,十个项目可能有十种构建方式;有了Maven之后,所有项目的构建命令都是简单一致的,这极大地避免了不必要的学习成本,而且有利于促进项目团队的标准化。

Maven不仅是构建工具,还是一个依赖管理工具和项目信息管理工具。它提供了中央仓库,能帮我们自动下载构件。几乎任何Java应用都会借用一些第三方的开源类库,这些类库都可通过依赖的方式引入到项目中来。随着依赖的增多,版本不一致、版本冲突、依赖臃肿等问题都会接踵而来。手工解决这些问题是十分枯燥的,幸运的是Maven提供了一个优秀的解决方案,它通过一个坐标系统准确地定位每一个构件(artifact),也就是通过一组坐标Maven能够找到任何一个Java

类库(如jar文件)。Maven为全世界的Java开发者提供了一个免费的中央仓库,在其中几乎可以找到任何的流行开源类库。

1.1 Maven 是做什么用的?
Maven是一个项目管理和构建自动化工具。但是对于我们程序员来说,我们最关心的是它的项目构建功能。

最简单的时候场景是,在pom.xml里设置对第三方jar包的依赖,而不用所有用到的jar包都复制到工程lib目录,再配置javapath。再者说在自己引入的jar包会出现很多重复的包,导致版本冲突,而maven会自动管理依赖!

所以这里我们介绍的就是怎样用 maven 来满足我们项目的日常需要。
Maven 使用惯例优于配置的原则 。

它所有的项目都有如下的结构:

目录 目的
${basedir} 存放 pom.xml和所有的子目录
${basedir}/src/main/java 项目的 java源代码
${basedir}/src/main/resources 项目的资源,比如说 数据源配置文件,spring配置文件
${basedir}/src/test/java 项目的测试类,比如说 JUnit代码
${basedir}/src/test/resources 测试使用的资源

一个 maven 项目在默认情况下会产生 JAR 文件,另外,编译后 的 classes 会放在${basedir}/target/classes 下面, JAR 文件会放在 ${basedir}/target 下面。

1.2 下载

下载地址http://maven.apache.org/

下载 zip版本的,

解压放到d盘根目录改名为 maven

1.3 配置环境变量
设置环境变量MAVEN_HOME为 d:\maven,设置path 为 %MAVEN_HOME%\bin

mvn -v 查看 maven版本,如果能显示说明已经配置好了

1.4 第一个测试项目
1.4.1 创建项目
cd d:

mkdir temp

cd temp

#开始创建一个新项目(guroupId大项目名 artifactId子项目名 package生成的类的包名

mvn archetype:generate -DgroupId=com.hjs-DartifactId=test1 -Dpackage=com.hjs.controller -Dversion=1.0.1

#archetype是Maven插件的名称

#generate指定目标

Maven自带了很多模板,这里默认的是754 直接回车就是

然后选择版本默认6 直接回车

最后一个是让你确认项目信息 y 回车

然后maven会自动下载好多需要的文件,接着就会创建完毕

在d:\temp下会多一个文件夹 test1

里面有src目录和 pom.xml文件

Src的文件结构是固定的,类似这个结构

在 src/main/java下面会自动生成一个类文件 com.hjs.controller.App.java

App.java是maven自动生成的,前面的包名是我们mvn命令指定的

1.4.2 Maven 打包
Shell:>mvnpackage

Maven会生成一个target文件夹

1.4.3 测试运行
打包成功后会在target文件夹下生成 jar包,也会生成一个classes文件夹,我们用java –cp命令验证一下jar包中是否有App.class

也可以验证classes下面的.class文件

1.5 Pom.xml文件的使用
1.5.1 Pom.xml简单结构
Maven为我们创建的工程test1已经自动生成了pom.xml文件。

整个文件被project标签包起来

第5,6,7行是不是很熟悉?

Properties定义一些属性,也可以自定义变量!

1.5.2 变量的使用
比如下面有一个依赖 Junit3.8.1的版本是 3.8.1,我们可以这样配置,定义一个变量junit.version(名字可以随便写),以后如果pom.xml文件内容很多的话,我要把junit版本换成4.12直接改junit.version即可,而不用到后面去找

1.5.3 属性内部引用
我们可以在pom.xml文档里引用文档里的属性值

我可以在pom.xml其他位置,引用工程的子项目名:

而且我还可以在build内部其他地方继续调用finaName

${build.finaName}

1.5.4 包的依赖引用
重点来了!

一般我们开发的时候用的最多的就是这个,再也不用自己下载jar包了!

而且最重要的是,如我们引入 slf4j,它自己会下载依赖的 log-4j什么的,太爽了!

可以在eclipse或者myeclipse里查看依赖关系,比如我直接引入spring-web ,那么我们不需要再写spring-aop spring-context之类的了!

而直接写 spring-mvc的话,spring-web和 spring-core都不要写了!

1.6 Mvn的资源库
前面说到我们需要什么包就在pom.xml里写,问题是我怎么知道如何写呢?

比如我们要连数据库,就需要jdbc驱动

   <dependency>

                 <groupId>mysql</groupId>

                 <artifactId>mysql-connector-java</artifactId>

                 <version>5.1.35</version>

          </dependency>

这里groupid artifactId version为什么要写成这样?或者我怎么知道他叫什么名字 版本号是几多?

下载后,jar放哪去了?

下面我来告诉你们。

1.6.1 中央资源库
Maven默认的存放jar包的地方是

https://repo.maven.apache.org/maven2(也可能是 http://repo1.maven.org/maven2)

你进去后可以看到所有包,你可以一个一个下载jar

哈哈开玩笑了!

其实我们可以上http://mvnrepository.com/

比如我项目中要用google的Gson来解析json,那么我需要知道怎么在pom.xml写依赖。

在mvnrepository网站搜索框输入Gson

回车后,会找到好多版本的gson

假如我想要2.6.1的版本,就点2.6.1,会进入一个新界面,这里显示了不同方式获取GSON的脚本。比如maven , Ivy(没用过), gradle(android studio开发android用的是这个)

看到没有?要的东西来了, 默认是maven用的脚本,把这个复制到pom.xml即可

1.6.2 本地资源库
我们在Pom.xml里告诉maven要去中央资源库下载Gson2.6.1,那么它会下载到哪里呢?

默认会下载到 c:\users\登录名.m2 下面,拥有强迫症的我很不爽,我不喜欢把东西放C盘操作系统下。怎么办?

进入maven的目录,这里是d:\maven\conf, 打开settings.xml

里面有个注释掉的 标签

直接写上d:\mavenlib

D:\mavenlib是我存放包的目录,你们可以随便写一个存在的目录即可

然后命令行进入工程目录,编译一下项目,会自动下载编译需要的jar

Cd D:\temp\test1

mvn compile

回车后,系统会自动下载。你去d:\mavenlib下发现多了一个 com文件夹,一直进去到

Com.google.code.gson.gson.2.6.1发现jar包 都下载好了

如果需要下载jar的源代码和doc文档呢?

1.6.3 下载jar的同时 下载源代码
只需要在项目下执行

mvn dependency:sources

你会发现源代码也下来了

2 Eclipse配置Maven
当然我们开发的时候都会用IDE,比如eclipse和myeclipse jbuilder之类的。

下面我介绍一下eclipse中如何使用maven

2.1 使用自己的Maven
目前的eclipse-javee版本已经自带maven插件了,winows-preferences-左边maven可以看到安装好的maven

点击右边的Add,选定我们自己的maven目录

确认后,会多一个maven ,选中我们刚才新增的这个maven ,点右下方Apply

2.2 修改maven 本地资源库路径
前面我们说过,maven默认的本地库在C盘的.m2下马,我一般都是自己下载maven,maven库放到非系统盘。

先修改d:\maven\conf\settings.xml 把注销的写成d:/mavenlib

然后选择user settings,选定我们自己的settings.xml文件,

2.3 自动下载源代码
最后我们让eclipse 帮我们下载的时候同时下载源代码

3 引入maven项目
3.1 工程引入
如果需要引入maven格式的项目,只需在eclipse中选择file- -import

就会把项目导入到开发环境中,如果选择了下方的 add project to work set就会把工程复制到eclipse的workspace,然后编辑的就是新的workspace中的文件。否则是直接打开原来的项目文件(mars2复制不了?)。

你会发现工程文件都导好了,但是会发现jdk默认用的是1.5

3.2 修改maven的java编译级别
如果你在 java build path中修改为 1.7,右键工程—maven-update project后,又会变成1.5

那就加一段,使用maven-compiler-plugin来设置jdk编译版本。重新update project 就好了。

4 maven-web工程
新建maven普通工程,比maven-web工程还简单,直接下一步即可。我这里介绍maven新建web3.0的项目。

4.1 新建maven工程
Eclispe中选择file-new-mavenproject

直接选 use default workspace 下一步。

如果要放到别的目录, browse一下就好了。

在这个节目,会显示maven所有的项目模板,太多了!

我们这里在 Filter:中输入web webapp都可以,就过滤到只有一个了

然后下一步

输入项目信息,随便写

点 finish 后,eclipse会自动创建好工程,并且生成 pom.xml文件

4.2 添加文件夹
我们知道maven规定 src目录下面是 main/java main/resources test/java test/resources

Eclipse只给我们增加了 main/resources我们需要手工添加剩余三个

4.3 把web工程改为web3.0
Eclipse默认生成的web 是2.3的,而且我们调整为3.0还不允许!

右键工程-属性-project facets 修改 dynamic web module为3.0报错!

你也许会问,为什么eclipse最新的mars版本,创建的居然是2.3的,为什么新建maven工程的时候,那个 webapp模板只有1个1.0的,为什么不出一个新的? I sorry!

那就动手改吧!

4.3.1 修改pom.xml
前面介绍过的,设置maven的编译级别为1.7,因为web3.0要求javaee最低1.6,所以我们要用1.7的jdk

4.3.2 修改工程配置文件
在我们的项目路径下的.settings中修改配置文件,把2.3改为3.0, 1.5改为1.7

保存

4.3.3 修改web.xml
当前web.xml的文件头是2.3, 所以我们这里改为3.0的

<?xmlversion="1.0"encoding="UTF-8"?>

<web-appxmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance

xmlns=“http://java.sun.com/xml/ns/javaee

xsi:schemaLocation=“http://java.sun.com/xml/ns/javaeehttp://java.sun.com/xml/ns/javaee/web-app_3_0.xsd

id="WebApp_ID"version=“3.0”>

first

<welcome-file>index.html</welcome-file>

<welcome-file>index.jsp</welcome-file>

4.4 配置tomcat服务器
Eclipse选择window-preperence窗口中选择Server-RuntimeEnvironments,Add新窗口选择 tomcat的路径。

4.5 运行服务
右键工程—run as- run on server

会自动打开内置的浏览器

5 Tomcat热部署
上一步新建tomcat服务后,会发现左边工程目录会多一个servers目录

会把tomcat的配置文件全部复制一份到工程目录下

路径为:

D:\web2016.metadata.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps

运行后分发包会自动生成war格式的文件存放在这里

修改jsp文件后,直接刷新浏览器可以看到实时效果,实现热部署

5.1 使用自己的tomcat
现在eclipse是用了自己的一份配置文件,和我们自己装的tomcat使用的不是同一个配置。而且eclipse把项目部署的路径这么深,也不利于我们开发。

  1.    在eclipse下方的servers窗口,先启动server,然后右键server,然后选择open
    
  2.    默认 server Locations 是灰色的,你要把部署的项目右键 remove掉
    
  3.    然后上面就可以操作了,我选择第2项(根据实际情况选择)
    

第2项和第3项的区别:

如果选第2项

可以发布多个项目到tomcat,但是tomcat的conf/server.xml会被修改

每发布一个,自动增加一天虚拟目录,而且tomcat里如果已经存在我们自己写的虚拟目录,会被删除!

但是eclipse只有你选run on server的时候会被刷掉,只是启动停止 不会去刷server.xml

如果选第3项

不会去改server.xml,可能在其他地方做了链接,但是它也有弱点,你如果在开发的时候需要发布多个项目的话,它会报错,只有第一个有效,第2个就发布不上去了!

  1.    选择本地tomcat路径
    
  2.    选择webapps分发路径
    
  3.    然后 ctrl+s保存   
    

6 最后
现在终于可以愉快的使用eclipse了!再也不用在mac上装myeclipse碰到很多变态的问题了!

其实以前一直用myeclipse开发。但是myeclipse终究是收费的,说不定哪天被他们盯上让你缴费!

最重要的是最近搞了一个macpro,在上面装了 mysql tomcat webstorm androidstudio 当然还有 xcode了。 但就是装myeclispe2014装不上!

其实我mac也安装了双系统,有人会说直接在mac的windows上开发不就得了。哈哈,我只想我的笔记本是人民币14288元的那个高分辨率屏幕,myeclipse eclipse什么的在高清屏幕下面的图标你都看不清啊,而且整个画面都很模糊,有木有!

再最后:我也装了eclipse的tomcat插件 tomcatplugins3.5感觉已经没有装的必要了

     我也在maven 里配置了 maven-tomcat插件,也部署成功了,但是貌似无法动态更新,比如我改了一个jsp,本来刷新一下就能看到效果,结果呢,这个插件必须 maven build一下才行。如果项目大一点的话,这不是要浪费大把时间啊?

也许有办法搞定,但我还没找到,鉴于目前 eclipse上述方案可以满足开发需求!

                                   --by 抗战二十年[email protected]

------------------------------------------- maven setting.xml--------------------------

?xml version=“1.0” encoding=“UTF-8”?>

d:/mavenlib

true

false

false

<!--

   <id>optional</id>
  <active>true</active>
  <protocol>http</protocol>
  <username>proxyuser</username>
  <password>proxypass</password>
  <host>proxy.host.net</host>
  <port>80</port>
  <nonProxyHosts>local.net|some.host.com</nonProxyHosts>
</proxy>
-->
 <!-- 
<profile>
<id>downloadSources</id>
  <properties>
   <downloadSources>true</downloadSources>
   <downloadJavadocs>false</downloadJavadocs>
  </properties>
</profile>
-->

作者:抗战二十年_巴萨
来源:CSDN
原文:https://blog.csdn.net/mfc2003/article/details/50922129
版权声明:本文为博主原创文章,转载请附上博文链接!

猜你喜欢

转载自blog.csdn.net/qq_42658791/article/details/86499734