WTP技巧系列之打造最小依赖jar包篇
一、引言
WTP是eclipse的子项目,致力于j2ee项目开发,有着广泛的用户和支持者,现在已经是wtp2.x版本了。我从wtp1.5x开始使用,之前用myeclipse,但因为myeclispe是商用软件而且体积庞大一直想找个替代品,既然要作为替代品,那么必须要有非常吸引人的优点,而这些优点,我在wtp中找到了。到目前为止使用wtp已经一年有余了,对wtp开发j2ee已经有了一定的经验积累,独乐乐不如众乐乐,于是打算写一系列的wtp或eclipse的使用技巧,以飨众看官。
使用eclipse开发java程序的朋友可能都知道一个eclipse项目默认会在根目录生成两个文件,一个.project文件和一个.classpath文件,前者作为该项目的描述,而后者则是存放项目构建时所需组件的信息,二者都是必须的。
.classpath文件的根元素是classpath,次级元素是classpathentry,也就是真正描述构建信息的元素。它有两个属性,kind跟path。Kind描述构建信息的类别,而path顾名思义当然是该构建信息的路径。
下面帖出点代码来说明:
<
classpathentry
kind
=
"src"
path
=
"src"
/>
<
classpathentry
kind
=
"con"
path
=
"org.eclipse.jdt.launching.JRE_CONTAINER"
/>
<
classpathentry
kind
=
"output"
path
=
"bin"
/>
|
通过以上介绍相信大家对.classpath文件有了个初步认识了,接下来进入今天的正题。
三、Wtp部署篇
使用过myeclipse的朋友都知道用myeclipse部署应用程序的时候默认情况下会将项目buildpath中的jar包都拷贝到web-inf/lib目录下,因此发布出去的程序一般不需要做额外修改便可正常使用。但使用wtp部署应用程序的时候就不太一样,默认情况下是不会将buildpath中的jar包拷贝到web-inf/lib下的,因此发布出去的程序如果不手动将依赖的jar包拷贝的lib下就会出错。
也许很多人看到这里就会问既然myeclipe这个功能如此方便,为什么wtp却做不到呢?那么我来告诉你,虽然myeclipse这个功能非常方便,但是它也有相当的弊端,众所周知,buildpath中的jar包很多是编译的时候需要,而实际运行的时候只需要其中的一部分,因此诸如myeclipse这般将所有jar包拷贝到发布程序中并非明智之举。而wtp也许是看到了这一点,所以设计的时候默认不自动拷贝jar包到发布程序中。那么这样做又是可取的吗?答案是否定的。这会让部署变的麻烦,因为你需要手动将所需jar包拷贝到发布程序中,这对于越来越习惯于“自动化”开发的人们简直是一种折磨。有没有解决办法呢?当然有,这就是本文的核心内容所要介绍的,接下来着重介绍。
四、打造最小依赖jar包
看过前面内容的朋友已经知道该文件的作用了,那么我就不多废话直接切入正题。通过自己的摸索,我发现classpathentry元素还有子元素attributes,用来描述classpathentry的附加属性。而每个附加属性通过attribute元素来表达,请看下面代码:
<
attributes
>
<
attribute
name
=
"org.eclipse.jst.component.dependency"
value
=
"/WEB-INF/lib"
/>
</
attributes
>
</
classpathentry
>
|
Kind="lib"表示该项是jar包,而后path为jar包的相对/绝对路径。
attribute name="org.eclipse.jst.component.dependency"表示该项信息为项目部署时的依赖项,也就是说需要在部署时自动拷贝到应用程序中去,而后的value就是拷贝时的路径。通过添加这样的代码就达到了自动拷贝的目的,因此只需要将必需的lib或con项手动添加这样的代码,就可以作到部署时生成最小依赖jar包的效果。而对于不需要部署时自动拷贝的lib或con项,则保持默认,比如上面的代码<classpathentry kind="lib" path="lib/MysqL-connector-java-5.1.5-bin.jar"/>,这样它只在编译的时候依赖,而运行的时候不依赖。
用过ant的朋友看完这段就会发现,这跟ant脚本有异曲同工之妙,只需一次修改,而后无限使用,悠哉乐哉!
五、结语
学无止境这句至理名言每日都鞭策着我,催我上进。在这个竞争日趋激烈的年代,我们唯有抓紧一分一秒的学习来为自己增加竞争的筹码,只有这样,我们才能在竞争中立于不败。当然,除了知识的补充外,我们更需要的是有一颗探索的心,有探索,才会有创新。
说实话,这篇文章没有任何技术含量,因此你若想通过这篇文章获得什么高深的知识的话,那么你将失望。既然这样,那我写这篇文章的意义何在?其实很简单,我想通过它来说明,知识是无穷的,就看你是否抓得住,机遇也一样。
(全文完)
Java
咖啡群欢迎大家加入
(
加群者送分
,
顶帖者也送分哈
),
群号
:60446231
本群以讨论
IT
行业话题为主
,
本着交流信息的原则
,
为大家营造一个轻松欢娱的环境
,
给平时枯燥的工作增添一些调味剂
.
当然
,
技术问题同样在讨论范围之中
.
本人在这里欢迎大家的到来
,
并预祝大家五一快乐
.(
鼓掌
...
谢谢
...
嘿嘿
...)
Java
基础群
:49827836