Eclipse 使用Maven 构建Web项目的最佳方式,我认为没有之一

简介: 版权声明:欢迎转载,请注明沉默王二原创。 https://blog.csdn.net/qing_gee/article/details/78923193 我接触Maven特别的晚,大概是在2017年的11月份,现在是2017年12月28日,也就是说别的开发者已经坐上了飞机,而我还是骑着牛(事实上我的确还没有坐过飞机,也没有骑过牛,尽管我已经28岁了)。
版权声明:欢迎转载,请注明沉默王二原创。 https://blog.csdn.net/qing_gee/article/details/78923193

我接触Maven特别的晚,大概是在2017年的11月份,现在是2017年12月28日,也就是说别的开发者已经坐上了飞机,而我还是骑着牛(事实上我的确还没有坐过飞机,也没有骑过牛,尽管我已经28岁了)。但子曰:“朝闻道夕死可矣”,尽管我一点都不想死,也并没有精通Maven,但我已经在正式成为Maven大家庭的一员了——荣幸之至!

我是一名忠实的保守主义者,如果一件工具没有彻彻底底的伤透我的心,我是会一直使用下去的。就像,别人爱上了IntelliJ IDEA,我还是忠于Eclipse;别人爱上了Maven,我还是通过Eclipse新建Java project或者dynamic Web project;别人爱上了Restful,我还是通过Eclipse新建Web service。我就像行走在新干线上的一头牛,就要被日新月异的IT技术淘汰了!但我不甘于被淘汰,我想要迎头赶上,所以我选择折腾Maven,直到Maven被我所用。

我折腾Maven也不是一时半会的事了,持续有一个月的时间,但也就是终于弄明白怎么使用Maven新建一个Web项目了。

我偷偷的告诉你,我爱上Maven的原因是——

1)Maven项目可以直接查看到源码(点击源码的时候Maven后台就会自动下载source包到Maven仓库),而不像传统的项目要加载source源码包。

这里写图片描述

传统的方式:

这里写图片描述

2)使用SVN down一个完整的项目,再也不必等啊等,尤其jar包很多的时候,Maven第一次会在本地下载一个仓库,时间会稍微久一点(毕竟第一次嘛,时间久一点是应该的,以后就不会了)。默认的地址是:C:\Users\abc.m2\repository(Windows为例)

这里写图片描述

3)新增jar太方便,直接在pom.xml文件中追加对应的jar包配置就可以,关键是还有Maven仓库的镜像可以参照。

地址为:http://mvnrepository.com/

这里写图片描述

只要左键点击Maven tab页的内容,就已经复制了内容,连Ctrl C都省了,真是不要太人性化!复制好后,将内容粘贴到pom.xml文件的<dependencies>节点下就可以了。

我爱上Maven也是基于这三点因素,至于Maven的命令嘛,不在我们本章的学习范围之内,我们的目的——就是通过Eclipse来新建Maven Web项目。

一、下载Eclipse

很奇怪,不知道为什么,最新版的Eclipse(也就是氧气版(oxygen))无法自动化加载完成一个Maven项目,为此,我还专门研究了一篇文章「Eclipse导入Maven项目,实在算得上是历经千辛万苦 」(现在这篇文章可以废弃了,参照本篇教程即可),当时真是费了老大的劲,几乎崩溃——就在边缘。

最后,我选择了macs版本的Eclipse,并在此版本的Eclipse导入Maven web项目成功。

地址:http://www.eclipse.org/downloads/eclipse-packages/

这里写图片描述

至于neon版本行不行,你可以试试,我是看Mars版本下载的最多,所以选择后退的版本比较多。

二、下载Maven

有了Eclipse,接下来就要准备Maven。

地址:https://maven.apache.org/download.cgi

这里写图片描述

下载zip版本,解压后,配置maven的系统path路径。像配Java那样。

win10的截图:

这里写图片描述

配置完成后,启动cmd,输入mvn -v,看看能否有结果?

我电脑上以前配置的3.5.0版本:

这里写图片描述

三、Eclipse关联Maven

Eclipse是支持Maven的,下载好Eclipse后,就会有Maven的选项。

这里写图片描述

默认的仓库地址如上图。

四、Eclipse新建Maven项目

工欲善其事必先利其器,我们的准备工作已经做完了,接下来就是新建Maven的web项目了。

Eclipse也有这个选项,但是™的新建出来的web版本是2.5的,并且转换3.0的时候还报错!实在是坑,我就想问问Eclipse团队为啥不好好整一个!!!!!!!

这里写图片描述

鉴于此,我新建了一个SpringMVC 版本的的空的Web项目,其结构图如下:

.
├── pom.xml
└── src
├── main
│ ├── java
│ │ ├── application-context.xml
│ │ ├── cmower.properties
│ │ ├── com
│ │ │ └── cmower
│ │ │ └── spring
│ │ │ └── IndexController.java
│ │ ├── context-dispatcher.xml
│ │ └── log4j.properties
│ ├── resources
│ └── webapp
│ ├── 404.jsp
│ └── WEB-INF
│ ├── pages
│ │ └── index.jsp
│ └── web.xml
└── test
├── java
└── resources

13 directories, 9 files

GitHub地址:https://github.com/qinggee/Maven4Web

这里写图片描述

点击「copy or download」把项目copy到本地。

这里写图片描述

使用eclipse导入:

这里写图片描述

这里写图片描述

完成后,效果图:

这里写图片描述

关键要看pom.xml:

<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.cmower</groupId>
    <artifactId>Maven4Web</artifactId>
    <packaging>war</packaging>
    <version>0.0.1-SNAPSHOT</version>
    <name>Maven4Web Maven Webapp</name>
    <url>http://maven.apache.org</url>

    <developers>
        <developer>
            <id>cmower</id>
            <name>maweiqing</name>
        </developer>
    </developers>

    <properties>
        <javax.servlet.version>3.1.0</javax.servlet.version>
        <spring.version>3.2.8.RELEASE</spring.version>
        <spring.security.version>3.2.3.RELEASE</spring.security.version>
        <jstl.version>1.2</jstl.version>
        <mysql.connector.version>5.1.30</mysql.connector.version>
        <jdk.version>1.7</jdk.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>${javax.servlet.version}</version>
            <scope>provider</scope>
        </dependency>

        <!-- Spring 3 dependencies -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</artifactId>
            <version>${spring.version}</version>
            <exclusions>
                <exclusion>
                    <groupId>commons-logging</groupId>
                    <artifactId>commons-logging</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-web</artifactId>
            <version>${spring.version}</version>
        </dependency>

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

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

        <!-- jstl for jsp page -->
        <dependency>
            <groupId>jstl</groupId>
            <artifactId>jstl</artifactId>
            <version>${jstl.version}</version>
        </dependency>

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

        <!-- https://mvnrepository.com/artifact/log4j/log4j -->
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.16</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-api -->
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>1.7.25</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-log4j12 -->
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
            <version>1.7.25</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/commons-logging/commons-logging -->
        <dependency>
            <groupId>commons-logging</groupId>
            <artifactId>commons-logging</artifactId>
            <version>1.1.1</version>
        </dependency>
    </dependencies>

    <build>
        <finalName>Maven4Web</finalName>
        <plugins>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>2.3.2</version>
                <configuration>
                    <source>${jdk.version}</source>
                    <target>${jdk.version}</target>
                </configuration>
            </plugin>

        </plugins>

        <resources>
            <resource>
                <directory>src/main/java</directory>
                <includes>
                    <include>**/*.xml</include>
                </includes>
            </resource>
        </resources>
    </build>
</project>

运行项目:

这里写图片描述

pom的英文全称应该是Project Object Model(项目对象模型)。pom.xml,一个将项目编译、测试、部署等步骤联系在一起加以自动化的XML,通常放置在项目的根目录下。它是Maven 项目的灵魂文件,它的作用主要是用来配置项目、开发者的信息,管理项目的依赖包、编译环境等。

pom.xml文件的第一部分通常是:

<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>
</project>

其中的modelVersion是4.0.0,这是当前仅有的,可以被Maven2&3同时支持的POM版本,它是必须的。

pom.xml文件的第二部分通常是:

<groupId>com.cmower</groupId>
<artifactId>Maven4Web</artifactId>
<packaging>war</packaging>
<version>0.0.1-SNAPSHOT</version>
<name>Maven4Web Maven Webapp</name>
<url>http://maven.apache.org</url>
<developers>
    <developer>
        <id>cmower</id>
        <name>maweiqing</name>
    </developer>
</developers>
  1. groupId : 组织标识,本书的所有源码均为com.cmower。
  2. artifactId : 项目名称,本例子为Maven4Web。
  3. packaging : 打包的格式,Java Web项目为war包。
  4. version : 版本号,通常以0.0.1为起始版本号。
  5. name:项目的名称, Maven产生的文档用
  6. url:项目主页的URL, Maven产生的文档用
  7. developers:项目的开发者,可以有多个。

pom.xml文件的第三部分通常是:

<properties>
    <spring.version>3.2.8.RELEASE</spring.version>
    <jdk.version>1.7</jdk.version>
</properties>

用来定义一些可能需要变动又经常使用的版本号变量,比如说Spring的版本号定义为3.2.8.RELEASE。

pom.xml文件的第四部分通常是:

<dependencies>
    <!-- Spring 3 dependencies -->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-core</artifactId>
        <version>${spring.version}</version>
        <exclusions>
            <exclusion>
                <groupId>commons-logging</groupId>
                <artifactId>commons-logging</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
</dependencies>

元素描述了项目相关的所有依赖, 这些依赖组成了项目构建过程中的一个个环节。每次更改pom.xml文件保存后,新增或者改动的依赖将会自动从Maven 定义的仓库中(比如阿里云镜像库)下载到本地仓库。

有了Maven的帮助,新增项目依赖的JAR包实在是太方便了。比如说我们使用Fastjson
来进行JSON解析和生成,那么要添加Fastjson的JAR包到项目的构建路径中,该怎么做呢?

第一步,进入MavenRepository网站(地址为 http://mvnrepository.com),在 search 文本域中输入com.alibaba(groupId)或者 fastjson(artifactId),然后点击「search」按钮,结果如下:

fastjson

第二步,点击Fastjson的链接进入到Fastjson的主页,可以看到所有版本的Fastjson,选择一个使用率最高的,目前是1.2.41版本。使用率高在一定程度上表明这个版本的JAR包最稳定,它已经得到了广大程序员的认可。

第三步,在1.2.41版本的Fastjson页,只需要左键轻轻地在 「Maven」选项卡内点一下,就已经把Fastjson的依赖信息复制到粘贴板了,不再需要「Ctrl+C」哦——非常的人性化。

第四步,将Fastjson的依赖信息粘贴到pom.xml文件的<dependencies>节点下,然后按下快捷键「Ctrl+S」保存。紧接着,依次展开Maven4Web → Java Resources → Libraries → Maven Dependencies 节点,你可以看到 fastjson-1.2.41.jar 已经悄悄地添加进来了。

另外,元素主要用于解决版本冲突问题。上例中在计算spring-core的依赖传递时, 排除commons-logging的依赖构件集。

pom.xml文件的第五部分通常是:

<build>
    <finalName>Maven4Web</finalName>
    <plugins>

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>2.3.2</version>
            <configuration>
                <source>${jdk.version}</source>
                <target>${jdk.version}</target>
            </configuration>
        </plugin>
    </plugins>

    <resources>
        <resource>
            <directory>src/main/java</directory>
            <includes>
                <include>**/*.xml</include>
            </includes>
        </resource>
    </resources>
</build>
  1. 元素用于构建项目需要的信息。
  2. 元素用于指定该项目使用的插件列表。比如本例中指定了编译源代码的“maven-compiler-plugin”插件。
  3. 元素描述了项目相关的所有资源路径列表。比如本例中指定的xml文件,这些资源被包含在最终的打包文件里。

生活不易,写作不易,传道不易,我们需要你的关注:

沉默王二

相关文章
|
7天前
|
前端开发 Python
前后端分离的进化:Python Web项目中的WebSocket实时通信解决方案
在现代Web开发领域,前后端分离已成为一种主流架构模式,它促进了开发效率、提升了应用的可维护性和可扩展性。随着实时数据交互需求的日益增长,WebSocket作为一种在单个长连接上进行全双工通讯的协议,成为了实现前后端实时通信的理想选择。在Python Web项目中,结合Flask框架与Flask-SocketIO库,我们可以轻松实现WebSocket的实时通信功能。
19 2
|
2月前
|
开发者 Java 安全
Struts 2 实战秘籍:Action 驱动业务,配置文件成就高效开发!
【8月更文挑战第31天】Struts 2 框架作为 Apache 软件基金会的顶级项目,广泛应用于企业级 Web 应用开发。其核心组件 Action 类处理用户请求,而配置文件定义请求与 Action 类间的映射关系。掌握 Action 组件的最佳实践包括继承 `ActionSupport` 类、实现 `execute` 方法及使用类型安全的方法;配置文件的最佳实践则涉及组织 Action 到包中、定义全局结果及使用通配符映射。遵循这些最佳实践,可构建高效、可维护的 Web 应用程序。
31 0
|
2月前
|
Java 数据库连接 Spring
Struts 2 插件开发竟如魔法盛宴,为框架注入超能力,开启奇幻编程之旅!
【8月更文挑战第31天】在Web开发中,Struts 2插件开发允许我们在不改动框架核心代码的前提下,通过创建实现特定接口的Java类来扩展框架功能、调整其行为或促进与其他框架(如Spring、Hibernate)的集成,从而更好地满足特定业务需求。遵循良好的设计原则与实践,能够确保插件的高效稳定运行并提升整体项目的可维护性。具体步骤包括创建项目、定义插件类、实现初始化与销毁逻辑,并将插件部署至应用中。
45 0
|
2月前
|
前端开发 Java UED
告别页面刷新时代:Struts 2 Ajax技术揭秘,轻松实现动态加载,Web应用焕然一新!
【8月更文挑战第31天】在Web应用开发中,用户体验至关重要。为减少页面刷新带来的不适,Ajax技术应运而生。Struts 2作为流行的Java EE框架,通过内置的Ajax支持简化了无刷新页面动态加载的实现。本文通过对比传统请求响应模式,展示了Struts 2如何轻松实现Ajax功能,提升了用户体验和开发效率,并灵活地实现了数据交换。然而,使用Ajax时还需注意SEO和跨域请求等局限性。
33 0
|
2月前
|
开发者 安全 SQL
JSF安全卫士:打造铜墙铁壁,抵御Web攻击的钢铁防线!
【8月更文挑战第31天】在构建Web应用时,安全性至关重要。JavaServer Faces (JSF)作为流行的Java Web框架,需防范如XSS、CSRF及SQL注入等攻击。本文详细介绍了如何在JSF应用中实施安全措施,包括严格验证用户输入、使用安全编码实践、实施内容安全策略(CSP)及使用CSRF tokens等。通过示例代码和最佳实践,帮助开发者构建更安全的应用,保护用户数据和系统资源。
39 0
|
1月前
|
数据库 开发者 Python
web应用开发
【9月更文挑战第1天】web应用开发
40 1
|
21天前
|
数据可视化 图形学 UED
只需四步,轻松开发三维模型Web应用
为了让用户更方便地应用三维模型,阿里云DataV提供了一套完整的三维模型Web模型开发方案,包括三维模型托管、应用开发、交互开发、应用分发等完整功能。只需69.3元/年,就能体验三维模型Web应用开发功能!
41 8
只需四步,轻松开发三维模型Web应用
|
11天前
|
安全 API 开发者
Web 开发新风尚!Python RESTful API 设计与实现,让你的接口更懂开发者心!
在当前的Web开发中,Python因能构建高效简洁的RESTful API而备受青睐,大大提升了开发效率和用户体验。本文将介绍RESTful API的基本原则及其在Python中的实现方法。以Flask为例,演示了如何通过不同的HTTP方法(如GET、POST、PUT、DELETE)来创建、读取、更新和删除用户信息。此示例还包括了基本的路由设置及操作,为开发者提供了清晰的API交互指南。
45 6
|
10天前
|
存储 JSON API
实战派教程!Python Web开发中RESTful API的设计哲学与实现技巧,一网打尽!
在数字化时代,Web API成为连接前后端及构建复杂应用的关键。RESTful API因简洁直观而广受欢迎。本文通过实战案例,介绍Python Web开发中的RESTful API设计哲学与技巧,包括使用Flask框架构建一个图书管理系统的API,涵盖资源定义、请求响应设计及实现示例。通过准确使用HTTP状态码、版本控制、错误处理及文档化等技巧,帮助你深入理解RESTful API的设计与实现。希望本文能助力你的API设计之旅。
33 3
|
11天前
|
JSON API 数据库
从零到英雄?一篇文章带你搞定Python Web开发中的RESTful API实现!
在Python的Web开发领域中,RESTful API是核心技能之一。本教程将从零开始,通过实战案例教你如何使用Flask框架搭建RESTful API。首先确保已安装Python和Flask,接着通过创建一个简单的用户管理系统,逐步实现用户信息的增删改查(CRUD)操作。我们将定义路由并处理HTTP请求,最终构建出功能完整的Web服务。无论是初学者还是有经验的开发者,都能从中受益,迈出成为Web开发高手的重要一步。
33 4

推荐镜像

更多
下一篇
无影云桌面