文档章节

Maven小试

yfwz100
 yfwz100
发布于 2013/04/27 08:39
字数 943
阅读 240
收藏 12

行业解决方案、产品招募中!想赚钱就来传!>>>

如果不是接触到 Node.js 里的 NPM 和 git ,或许我还真的很少会考虑到项目管理的问题。我想或许是以前真的很少接触过很多依赖关系的项目吧,但是,如果开发基于 Spring 的应用程序,依赖缺失的问题真的是一个十分困扰的问题。建议所有学习 Spring 的人都学习一下 Maven 这个工具。

稍微采纳一段来自百度百科的简介:(有修改,详情请参考 百度百科的 Maven 介绍

Maven是基于项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的软件项目管理工具。 Maven这个单词来自于意第绪语,意为知识的积累,最早在 Jakata Turbine 项目中它开始被用来试图简化构建过程。当时有很多项目,它们的Ant build文件仅有细微的差别,而JAR文件都由CVS来维护。于是Maven创始者开始了Maven这个项目,该项目的清晰定义包括,一种很方便的发布项目信息的方式,以及一种在多个项目中共享JAR的方式。

这个项目和 Node.js 中的 npm 以及 ruby 中的 gem 很相似。简单地说,就是一个描述项目以及项目间关系的一个工具。

使用这个工具的两点好处:

  • 不需要手工维护依赖的文件位置。简化项目间依赖的问题。(在初学 Spring 的时候很容易找不到足够的依赖包,而这个文件可以帮助寻找)
  • 在 git 代码仓库中只保存和本项目相关的信息,其他代码可以通过描述由 Maven 自动获取。

在 Eclipse 中并未集成对 Maven 的支持。如果要在 Eclipse 中添加对 Maven 的支持,可以选择安装 Maven 的 Eclipse 的插件(即 m2e 插件,在 Eclipse 帮助菜单下的 Eclipse Marketplace 中可以搜索到)。对于开发基于 Spring 的程序,可以选择使用 STS 或者 MyEclipse 等第三方工具或者插件(这些工具包含了 m2e)。

只需要在新建项目的时候,选择 Maven 工程即可。对于已经建立的工程来说,也可以在项目窗格下右击项目,然后选择 Configure 菜单下的 Convert to Maven Project 即可。

然后, Maven 项目的关键在于使用 pom.xml 来管理项目以及项目依赖。在 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/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<groupId><!-- 项目的组ID --></groupId>
	<artifactId><!-- 项目ID --></artifactId>
	<version><!-- 版本信息 --></version>
	<name><!-- 项目名称 --></name>
	<description><!-- 项目描述 --></description>
	<dependencies>
		<!-- 项目依赖项设置 -->
	</dependencies>

	<repositories>
		<!-- 项目依赖项的代码库,即如何获取依赖 -->
	</repositories>

	<build> <!-- 构建规则 -->
		<sourceDirectory>src</sourceDirectory>
		<resources> <!-- 资源位置 -->
			<resource>
				<directory>src</directory>
				<excludes>
					<exclude>**/*.java</exclude>
				</excludes>
			</resource>
		</resources>
		<plugins> <!-- 插件 -->
			<plugin>
				<artifactId>maven-compiler-plugin</artifactId>
				<version>3.0</version>
				<configuration>
					<source>1.7</source>
					<target>1.7</target>
				</configuration>
			</plugin>
		</plugins>
	</build>
</project>

对于项目的依赖信息。Eclipse的图形化插件已经提供了相当详细的说明,例如,一个典型的依赖项可以写为:(在 <dependencies> 标签内)

<!-- mysql-connector-java -->
<dependency>
	<groupId>mysql</groupId>
	<artifactId>mysql-connector-java</artifactId>
	<version>5.1.17</version>
</dependency>

而对于特定的代码库地址,可以在 <repositories> 中定义如下:

<repository>
	<id>EclipseLink</id>
	<url>http://download.eclipse.org/rt/eclipselink/maven.repo</url>
</repository>

至于构建目录以及包含文件,可以参考上述 pom.xml 中 <build> 标签内的内容。

一般来说,要找到 Maven 的依赖地址,可以通过在 Google 中搜索。

yfwz100
粉丝 5
博文 4
码字总数 2700
作品 0
海淀
私信 提问
加载中
请先登录后再评论。
5分钟 maven3 快速入门指南

前提条件 你首先需要了解如何在电脑上安装软件。如果你不知道如何做到这一点,请询问你办公室,学校里的人,或花钱找人来解释这个给你。 不建议给Maven的服务邮箱来发邮件寻求支持。 安装Mav...

fanl1982
2014/01/23
1.2W
7
Java 反射封装库--Mirror

给一个简单的问题带来光明的解决方案,通常用ReflectionUtil命名。 在几乎所有项目都需要依靠反射来做高级任务。但是,处理Java反射API是痛苦的。问任何使用过反射的人,他会告诉你它是真的令人...

jiangyuan
2012/12/07
2.4K
0
新概念PHP包管理器--PHP Composer

几乎每种语言都有包管理器。Java有Maven,Python有easy_install和pip,Ruby有gem,Nodejs有npm。说到PHP当然也有PEAR,但我一直认为PEAR是设计最烂的一个包管理器:依赖处理不到位、配置复杂...

匿名
2013/05/15
5.9K
0
JVM性能监控和分析工具--uProfiler

uProfiler Community 1.0是面向主题的JVM性能监控和分析工具,它利用字节码技术分析class,收集函数的执行耗时,并以图形化的界面实时显示JVM性能。不同于JVisual VM系统层面的监控和分析,u...

仪山湖
2013/06/08
2.3K
1
数据库逆向生成代码及Maven插件开发

之前使用mybatis,可以用mybatis generator逆向生成dao层代码,详见博客《数据库逆向框架代码生成工具:MyBatis Generator的使用》。公司使用的是自己开发的服务,所以最近抽空写了一个逆向生...

蛙牛
2015/12/20
6.2K
25

没有更多内容

加载失败,请刷新页面

加载更多

听说你还不会jwt和swagger-饭我都不吃了带着实践项目我就来了

前言 哈喽,大家好,我是asong,这是我的第八篇原创文章。听说你们还不会jwt、swagger,所以我带来一个入门级别的小项目。实现用户登陆、修改密码的操作。使用GIN(后台回复Golang梦工厂:g...

sunsong2020
今天
0
0
python合并excel的多个sheet

简介 因为,每天都会有的大量excel报表汇总处理任务,所以写了一个脚本来处理。 就是找出每一个excel中特定的sheet,把这些sheet的特定列读取出来合并到一个sheet中。 因为每一个sheet的数据...

trayvon
15分钟前
0
0
如何设计一个幂等接口

什么叫幂等接口 幂等性,就是只多次操作的结果是一致的。这里可能有人会有疑问。 问:为什么要多次操作结果都一致呢?比如我查询数据,每次查出来的都一样,即使我修改了每次查出来的也都要一...

贪挽懒月
昨天
0
0
华为阿里下班时间曝光:所有的光鲜,都有加班的味道

点击上方 Z先生点记,加为星标 第一时间收到 Python 技术干货! 来源:GitHubPorn 声明:本文由HR人力资源成长俱乐部整理发布。素材来源程序员之家。如需转载,请务必注明以上信息,侵权必究...

zeroing1
08/06
0
0
Proguard 常用规则

入口 为了决定哪些代码要被保留哪些代码要出丢弃和混淆,必须指定入口点。这些入口点通常是 main方法,activity,service等。 在压缩阶段,Proguard从这些入口点开始递归确定哪些类或类成员要...

佛系编码
22分钟前
8
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部