我们来回想一下,在没有maven之前,我们是怎么来构建项目的。
以我们熟悉的工具eclipse,要创建工程,我们会new一个project或dynamic web project,然后是拷贝或编写配置文件,配置文件我们可能会放在src根目录下,也可能会在src目录下建个config或其他目录,用于存放配置文件;对于web项目,有些人也可能会将配置文件存放于WEB-INF目录下;接下来要拷贝lib,对于普通项目,可能会在工程根目录下建一个lib目录用于存放jar包,然后将jar包添加到classpath,对于web项目,直接将jar包拷贝到WEB-INF/lib目录下;比如,我们需要添加spring的jar包,我们可能会到spring的官网去寻找相应的jar包,然后一个个下载下来,添加到项目中;如果spring项目还依赖其他jar包,比如commons-logging,再去相应的官网下载,或者下载一个完整的带有依赖的包,里面包含了spring及其依赖,然后将这些jar包一并添加到工程;当然,对于有经验的老司机来说,他可能本地目录上已经下载过spring的jar包了,只需从磁盘中再拷贝一份,添加到工程中。接下来,开始编写代码,建立相应的包,开始开发。开发过程中需要不断编译,这一般是借助工具,一般会开启自动编译功能。开发完后,或者部分模块开发完成,需要测试,编写单元测试,我们可能会在之前相应的包下直接新建test类,好点的会在src下建个test源码目录,专门存放测试相关代码。下图是传统方式创建的工程结构:
测试完接下来是打包,一般会借助工具,如eclipse的export,导出完后将打成的jar包或war包上传到远程的服务器上,这个一般可以借助winscp等FTP工具上传,然后到服务器上启动服务。
以上就是项目的构建过程,包括项目的创建、编译、测试、打包、部署等,我们每天都在做这些事。
我们来总结下传统的构建方式的缺陷:
1、项目结构混乱 有些人喜欢把配置文件放在src根目录下,有些人放在WEB-INF目录下,有些人放在自己建的目录下,我们在拿到一个新项目的时候不得不去猜测配置文件存放的位置,我们希望的目标是,任何一个项目,都是自己熟悉的风格;
2、添加依赖麻烦 我们得去不同的官网下载jar包,有时候jar包不太好找,还得借助搜索引擎;另外,jar包下载后我们会存放到本地磁盘,jar包少的时候自己管理还比较好办,一旦jar包多了,不同的jar包,同一jar包的不同版本,我们可能就管理不过来了,磁盘上就很乱了,这个简直不能忍啊;另外,我们把jar包拷贝的项目中,每个项目都会独立在磁盘中存储一份jar包,虽然单个jar包体积不大,但项目多了,也是造成磁盘空间的浪费;
3、测试代码 以往我们的测试代码跟正式代码混在一起,规范点的,可能会在src下建立一个test目录,专门存放测试代码,但是在打包的时候,这些测试代码随同正式代码一并被打包了,发布到生产,而测试代码不应该发布到生产环境中;
4、编译、打包、部署太多的手工劳作 传统项目构建中,编译还好,我们会借助工具的自动编译功能,但是测试、打包、部署,这些都需要手工操作,费时费力
接下来我们要介绍的maven,就是用来解决以上这些缺陷的。
相关推荐
### 数据仓库的概念建模解决方案——第一章概述 #### 引言 在数据仓库设计的过程中,概念建模扮演着至关重要的角色。它为描述数据仓库过程及其架构的所有方面提供了更高层次的抽象,旨在实现与具体实现问题的独立...
在IT行业中,系统集成项目管理工程师是一项重要的职业角色,他们负责管理和协调不同技术组件的整合,以实现复杂系统的构建与运行。《系统集成项目管理工程师教程》是一本权威的教材,旨在帮助读者掌握系统集成项目的...
### 信息系统项目管理师考试精要第一章知识点梳理 #### 第一节:信息系统开发基础概览 **信息系统项目管理师考试**是针对IT行业项目管理专业人员的一项重要认证考试,其内容涵盖信息系统项目的全生命周期管理,...
以上这些知识内容对于网络工程师来说是最基础的,也是构成思维导图第一章的核心。网络工程师在掌握计算机网络基本原理的同时,还需要了解不同层次的网络协议,比如OSI模型、TCP/IP协议簇等,以及网络的安全性、网络...
Seam in Action 是一本关于Seam框架的专业书籍,中文版的第一章主要介绍了Seam的核心理念和价值。Seam是一个革命性的Java EE应用框架,旨在通过整合现有的Java企业级技术,如EJB3、JSF、JPA和Hibernate,提供一个...
但是,从文件的标题可以推断,这个文档应该是与软件工程相关的教材或者是课程笔记,且是关于第一章的内容。 软件工程是计算机科学的一个分支,它涉及到软件的设计、开发、测试和维护。软件工程的核心目标是通过科学...
在本压缩包中,我们主要关注的是"UI第一章:iPhone开发概述Demo源代码",它涉及到iOS应用开发的基础,特别是用户界面(UI)的设计与实现。这个Demo源代码旨在为初学者提供一个清晰的起点,了解如何在iPhone平台上...
“Three Ways”是DevOps实践中的一组基本原理,包括:第一种方式,强调系统思维和快速反馈,通过减少浪费和提升效率来优化整体工作流程;第二种方式,侧重于自动化,将手动任务自动化以减少错误和提高速度;第三种...
《大数据技术课程(第一章-大数据综述)》的讲解涵盖了大数据技术的基础理论和实践应用,旨在为学习者提供全面的大数据平台理解。本课程由讲师方顺编撰,旨在教授大数据技术架构的基本原理,帮助学员深入理解大数据...
Web标准与CSS布局是网页设计的核心组成部分,它们对于构建高效、可访问且易于维护的网站至关重要。本章主要探讨这两个主题,旨在帮助学习者理解Web标准的构成和发展,以及CSS在网页布局中的应用。 首先,Web标准是...
源代码文件列表中的"ch01"代表第一章的内容,可能包括了多个例子或者项目,每个都对应一个特定的编程知识点。 在C#编程中,有几个核心的概念和特性是开发者必须了解的: 1. **基础语法**:C#是一种面向对象的语言...
##### 3.3 开发第一个小程序 - **创建项目**:通过菜单栏的“文件”>“新建”选项创建一个新的Delphi项目。 - **添加控件**:使用工具箱中的控件来设计界面。 - **编写代码**:在代码编辑器中编写程序逻辑。 - **...
### Windows网络编程技术教材第一章:深入理解NetBIOS与传统网络接口 #### 一、NetBIOS概述 “网络基本输入/输出系统”(Network Basic Input/Output System, NetBIOS)是1983年由Sytek公司为IBM开发的一种标准的...
5. **PPT内容概览**:虽然具体的PPT内容未列出,但通常第一章可能会介绍.NET平台的概述,包括它的历史、架构、组成部分以及与C#的关系。此外,C#的基础语法和特性,如变量、数据类型、控制结构、函数等也可能是主要...
### WPF揭秘(中文版)第一章 为什么创造WPF #### 重要背景及原因 **WPF**(Windows Presentation Foundation)是由微软推出的一种用于构建Windows客户端应用程序的新技术框架。本书第一章详细介绍了WPF诞生的历史...
面向对象程序设计(OOP,Object-Oriented Programming)是一种重要的编程范式,它强调将数据和操作数据的方法封装在一起,形成对象,以此来构建复杂的软件系统。VC++,全称Visual C++,是Microsoft公司开发的一款...
对于软件项目而言,项目管理不仅包括传统项目管理的范畴,还涉及到软件工程的特殊性,涵盖了从需求定义到软件维护的全过程。 在人员管理方面,项目团队由不同角色的成员构成,如高级管理者、技术管理者、开发人员、...
### ANSYS Workbench 自学教程第一章知识点概览 #### 一、ANSYS Workbench简介 - **定义**:ANSYS Workbench 是一个高度集成的工程仿真平台,它为用户提供了一个全面且灵活的工作环境来执行各种类型的工程分析。 -...