除了Maven,还有一种解决jar包管理及定制的好方法

【我的SegmentFault原文】https://segmentfault.com/a/1190000007721071

使用过Maven的小伙伴都知道,必须新建Maven Project才能使用它,效果如下:

对于新手,上手还是有点难度的。同时对于个人开发的小项目(多而杂),建立一个属于自己的Repository解决jar共用和定制化加载需求,也是很有必要。探寻中,个人寻找到一个比较折中的解决办法,供大家参考使用

一、Java Build Path的Libraries

1、常见的Libraries

JRE System Library:指Java SE 的常用库文件集合,建立普通的Java项目均会使用; 
Java EE 6 Libraries:指Java EE的常用库文件的集合,建立Web项目会用到这个库集合与Java SE的库文件集合;
Referenced Libraries: 指你项目中所使用的第三方库文件集合。如果你把项目所需要的其他JAR包直接加在项目->属性->Java Build Path -> Libraries 中的时候,MyEclipse 会自动将这些JAR包归类到一个集合中, 并取名为 Referenced Libraries,显示在项目中;
Web App Libraries:一般为Web Project专有的库文件集合,自动加载管理项目的WEB-INF/lib目录下jar包;
Maven Dependencies:Maven Project专有的库文件集合,通过读取pom.xml配置文件从MavenRepository加载相应的jar包;

2、Libraries的Add方法

Add Jars...:添加JAR包,是指本Eclipse当前包含的工程中的,在工程列表下选取即可;
Add External Jars...:添加外部的JAR,是指外部的,需要用文件管理器,在电脑硬盘上选取;
Add Variable...:添加变量,Eclipse的编译时用到的的环境变量;
Add Library...:添加库,是指一些已经定义好的jar的集合,因为它们经常是一起用,比如JRE System Library和Java EE 6 Libraries;
Add Class Folder...:添加类的目录,是指本Eclipse范围中的,在工程列表下选取接口;
Add External Folder...:添外部加类的目录,需要用文件管理器,在电脑硬盘上选取;

二、.classpath文件

.classpath实际是一个XML格式的配置文件,<classpath>... ...</classpath>这个标签中存放的便是classpath的信息,它一般包含以下五种形式:
1.<classpathentry kind="src" path="src"/>:指定source folder类型的目录,kind="src"表示这个classpath的类型,path表示在项目中的路径,path使用根目录的相对路径(相对.classpath文件本身的相对路径)
2、<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6">:指定程序的JRE运行环境,kind="con"表示classpath的类型,con即是Container,就是程序运行的容器,或者就说是运行环境
3、<classpathentry kind="con" path="org.eclipse.jst.j2ee.internal.web.container"/>:指定程序运行时的容器,一般情况下是java web项目才会有,它是包含了J2EE服务器要使用到的一些jar包, 这句是kind="con"当然和上条一样,是表示运行时的容器
4.<classpathentry kind="lib" path="WebRoot/WEB-INF/lib/bsf-2.3.0.jar"/>:指定第三方jar包加载的路径,kind="lib"表示classpath中的库文件,path指定库文件的路径,同样是相对与项目根目录的相对路径 
5、<classpathentry kind="output" path="WebRoot/WEB-INF/classes"/>:指定项目的编译输出目录,在java web中也就是WebRoot/WEB-INF/classes,同样使用的path是相对项目根目录的相对路径(相对.classpath文件本身的相对路径)

三、Eclipse设置内容

1、设置实现的效果

通过设置主要解决以下几个问题:
1)同一个jar包在各项目中复用
2)jar包在各项目中自定义加载
3)workspace或电脑更换,不影响项目导入使用
4)方便通过配置文件批量快速加载jar包

2、设置步骤

  • 【步骤1】
    在workspace下建一个文件夹,,把jar包分类放在该文件夹里面

  • 【步骤2】
    右击项目-Properties-Java Build Path-Libraries-选择“Add Variable...”

  • 【步骤3】
    弹出对话框“New Variable Classpath Entry”,点击“Configure Variables...”

  • 【步骤4】
    定义新的Classpath Variable,可以理解为指定类加载库并设置一个变量名称,方便在.classpath文件中调用,有点像Java里接口的概念

(这是我设置的效果图,定义了一个JARs Libraries库)

  • 【步骤5】
    根据项目的需要,在.classpath文件中快速配置需要加载的jar包。如果自己的Repository里还有多级目录分类,一个一个查看jar的路径再配置就有点麻烦,个人推荐一个小技巧演示如下:(适合将已有的项目改变jar包加载方式)

1)先使用“Add Jars...”方式把需要jar包加载,然后查看.classpath文件(用鼠标选择速度还是快点)

<?xml version="1.0" encoding="UTF-8"?>
<classpath>
    <classpathentry kind="src" path="src"/>
    <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.7"/>
    <classpathentry kind="lib" path="D:/myeclipse/JARs Libraries/commons-lang-2.3.jar"/>
    <classpathentry kind="lib" path="D:/myeclipse/JARs Libraries/commons-lang3-3.4.jar"/>
    <classpathentry kind="lib" path="D:/myeclipse/JARs Libraries/date4j.jar"/>
    <classpathentry kind="lib" path="D:/myeclipse/JARs Libraries/javaee.jar"/>
    <classpathentry kind="lib" path="D:/myeclipse/JARs Libraries/nl.captcha.simplecaptcha-1.1.1.jar"/>
    <classpathentry kind="lib" path="D:/myeclipse/JARs Libraries/oscore-2.2.2.jar"/>
    <classpathentry kind="lib" path="D:/myeclipse/JARs Libraries/slf4j-api-1.7.21.jar"/>
    <classpathentry kind="lib" path="D:/myeclipse/JARs Libraries/xwork-2.1.2.jar"/>
    <classpathentry kind="output" path="bin"/>
</classpath>

2)进行文本内容替换操作

(替换内容)
kind="lib" ->> kind="var" 
D:/myeclipse/JARs Libraries ->> JARs Libraries
(替换效果)

<?xml version="1.0" encoding="UTF-8"?>
<classpath>
    <classpathentry kind="src" path="src"/>
    <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.7"/>
    <classpathentry kind="var" path="JARs Libraries/dom4j/dom4j-1.6.1.jar"/>
    <classpathentry kind="var" path="JARs Libraries/dom4j/jaxen-1.1-beta-6.jar"/>
    <classpathentry kind="var" path="JARs Libraries/commons-lang-2.3.jar"/>
    <classpathentry kind="var" path="JARs Libraries/commons-lang3-3.4.jar"/>
    <classpathentry kind="var" path="JARs Libraries/date4j.jar"/>
    <classpathentry kind="var" path="JARs Libraries/javaee.jar"/>
    <classpathentry kind="var" path="JARs Libraries/nl.captcha.simplecaptcha-1.1.1.jar"/>
    <classpathentry kind="var" path="JARs Libraries/oscore-2.2.2.jar"/>
    <classpathentry kind="var" path="JARs Libraries/slf4j-api-1.7.21.jar"/>
    <classpathentry kind="var" path="JARs Libraries/xwork-2.1.2.jar"/>
    <classpathentry kind="output" path="bin"/>
</classpath>
  • 【步骤6】
    设置完成,刷新项目,发现“Referenced Libraries”下面加载的jar包路径信息显示“JARs Libraries”,说明设置效果基本达到。

posted @ 2017-03-15 23:13  JackFe  阅读(2308)  评论(0编辑  收藏  举报