惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

酷 壳 – CoolShell
酷 壳 – CoolShell
H
Hacker News: Front Page
P
Palo Alto Networks Blog
T
ThreatConnect
Apple Machine Learning Research
Apple Machine Learning Research
博客园_首页
T
True Tiger Recordings
P
Privacy & Cybersecurity Law Blog
B
Blog
IT之家
IT之家
Last Week in AI
Last Week in AI
F
Full Disclosure
Hacker News: Ask HN
Hacker News: Ask HN
C
Comments on: Blog
Microsoft Azure Blog
Microsoft Azure Blog
C
Cybersecurity and Infrastructure Security Agency CISA
Microsoft Security Blog
Microsoft Security Blog
博客园 - 【当耐特】
N
News and Events Feed by Topic
NISL@THU
NISL@THU
腾讯CDC
雷峰网
雷峰网
Security Latest
Security Latest
李成银的技术随笔
M
Microsoft Research Blog - Microsoft Research
L
LangChain Blog
L
Lohrmann on Cybersecurity
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
C
Check Point Blog
Y
Y Combinator Blog
Recent Announcements
Recent Announcements
博客园 - Franky
N
News | PayPal Newsroom
V
V2EX
A
About on SuperTechFans
The Register - Security
The Register - Security
月光博客
月光博客
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Google Online Security Blog
Google Online Security Blog
MyScale Blog
MyScale Blog
Cisco Talos Blog
Cisco Talos Blog
Vercel News
Vercel News
WordPress大学
WordPress大学
C
Cyber Attacks, Cyber Crime and Cyber Security
The Hacker News
The Hacker News
IntelliJ IDEA : IntelliJ IDEA – the Leading IDE for Professional Development in Java and Kotlin | The JetBrains Blog
IntelliJ IDEA : IntelliJ IDEA – the Leading IDE for Professional Development in Java and Kotlin | The JetBrains Blog
爱范儿
爱范儿
A
Arctic Wolf
L
LINUX DO - 最新话题
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More

博客园 - 封封

.net解决数据导出excel时的格式问题 NP - 封封 呼出窗口 - 封封 gvim的查找替换 windows下GVim的块选择方式 PDF Xchange Pro 3.6.0120的注册码 - 封封 Commons-logging + Log4j入门指南 - 封封 Linux通过802.1X认证 Eclipse中创建Class时自动加上文件头等注释 - 封封 非常好的Struts2.0 Blog 破解JIRA3.3 - 封封 标准展BOM语句 [摘]Hibernate 与 SQL Server BLOB - 封封 Subversion的权限控制 - 封封 IBatis.NET 与 FireBird2.0的问题 浅谈.NET中的版本管理 - 封封 FireBird 1.5 Quick Start Log4Net使用指南 Excel SP2 分类汇总的总计错乱问题
如何用Maven来管理Java项目的Library
封封 · 2007-07-20 · via 博客园 - 封封

如何用Maven来管理Java项目的Library

关键字: Java, Eclipse, Maven

背景

      我们现在的Java项目中,每个项目都有很多依赖的Jar档,基本上都放在了自己项目下的lib目录中,

这样就会导致同样的Jar档在各个不同的项目中重复出现,然后我们再将这些重复的资源放到VSS,SVN等

版本控管工具中,日子久了就会发现,一个是各个项目间的Jar档版本很难统一控管,另外会给版本控管工具

带来很大的空间上的浪费.

摘要

      本文从Maven的库包管理功能上做了一些描述,笔者初步尝试了一下用Maven来管理项目的依赖包.

Maven这个工具的作用之一就是将这些我们需要的Library库统一控管起来,每个项目只需要编写一个

pom.xml的配置文件即可.

内容

1.下载并安装Maven

        下载站点: http://maven.apache.org

        安装: 将下载的压缩档直接解压到任意路径,然后在系统环境变量中的Path变量中添加Maven的bin目

录(如我本机的路径是D:\Program Files\maven-2.0.6\bin)

打开CMD窗口,运行mvn –version显示正确版本,说明安装成功.

      2.利用Maven创建标准布局的webapp项目

           在控制台执行下面命令(groupId后面是包名,artifactId后面是项目名称)

           mvn archetype:create -DgroupId=com.benq.mavenproj -DartifactId=my-webapp -DarchetypeArtifactId=maven-archetype-webapp

在my-webapp根目录下,你会看到名为pom.xml的文件,这个就是maven的项目描述文件

编辑pom配置项目所需依赖,例如下面:

<dependency>   

    <groupId>org.springframework</groupId>   

    <artifactId>spring</artifactId>   

    <version>2.0</version>   

    <scope>compile</scope>   

</dependency>  

groupId是该类库所属的组织,作为文件目录,包名结构映射成目录结构,artifactId就是具体的类库名称了,是groupId的一个子目录,version是版本号,每个版本都有一个单独的目录,里面放置的就是具体的jar包。

关于依赖的写法,可以去这里查询:http://mvnrepository.com/

3.生成eclipse项目

在控制台下进入项目目录,如果是从maven webapp项目生成eclipse wtp,执行:

mvn -Dwtpversion=1.5 eclipse:eclipse(目前最新支持到WTP1.5)

普通eclipse项目执行:mvn eclipse:eclipse

然后在eclipse中import项目即可

4.eclipse中设置maven路径变量

刚导入的项目上会有错误标记,不用担心,因为还没有设置maven的类库变量

打开项目的属性框,在Java Build Path里我们可以看到项目依赖类库的路径都已经给自动设置好了

下面设置maven的路径变量M2_REPO

 Window -> Preferences -> Java -> Build Path -> Classpath Variables,New

Name命名为M2_REPO,路径为你的本地的maven类库地址,这里为C:/Documents and Settings/windy xu/.m2/repository,设置成功后重新编译,发现项目的错误标记已经消除了,至此,eclipse项目已经导入成功了

5.为项目添加新的依赖

编辑pom文件,添加新的dependency,保存後

在控制台分别执行:

mvn eclipse:clean

mvn -Dwtpversion=1.5 eclipse:eclipse

在eclipse中刷新项目即可看到新的依赖项已经添加到eclipse项目中

6.maven标准的项目布局

前面已经介绍了如何新建一个maven项目并导入到eclipse中,但对于已有的wtp项目,其项目布局是不符合maven方式的(eclipse下wtp项目web目录在项目根目录下WebContent,maven布局是在src/main/webapp),这就不能直接通过eclipse:eclipse来生成eclipse的依赖

但可以通过改写项目pom文件来指定源码目录和测试源码目录:

xml 代码

<build>  

<finalName>my-webapp</finalName>  

<sourceDirectory>src</sourceDirectory>  

<testSourceDirectory>test</testSourceDirectory>  

</build>  

总结

    利用Maven来管理依赖包确实很方便,但是老项目可能目录结构千差万别,使用时可能需要多研究研究.

另外我们有时候会包含一些我们自己写的Jar档,我个人建议这些Jar档就不要放到Maven中管理了(虽然Maven也可以建立”私服”),因为可能会带来”私服”的维护成本上升.