用m2eclipse吧,它比ivyde要好,下文还可以看看
这几年写程序一直用eclipse,需要引用到一些开源的工具包时一般是先下载它们,然后再手工添加到java工程 的classpath中去,其实还是挺麻烦的,需要手工去下载合适的版本、如果要看源代码或javadoc还需要手工attach、还需要自己去分析一些 间接的依赖关系……。最近看了一下ivy,和maven有点像,可以从远程服务器自动下载需要的依赖包(就是jar),并且自动的为每个依赖包配置好对应的源代码包,而且通过eclipse插件ivyde可以实现自动的将下载的依赖包加入到classpath中,非常方便,先看看效果图:
其实配置也不是很麻烦,大概需要下面这几步:
从nexus官网下载它,我下载的是nexus-oss-webapp-1.7.2-bundle.zip,解压缩后执行nexus-oss-webapp-1.7.2\bin\jsw\windows-x86-32\Installnexus.bat,win7要用管理员模式执行,他会在系统服务中注册一个nexus服务,然后再执行Startnexus.bat可以启动这个服务,最后,打开浏览器访问:http://localhost:8081/nexus/
nexus运行时会下载并保存用到的jar,所以要找个空间稍微大一点的地方解压它。
nexus中已经默认的代理了一些常用的maven库了,接下来需要配置一下nexus才能让他代理你需要用到的一些maven库,例如spring的ebr库:
这个文件是ivy的配置文件,有蛮多选项,不过目前我还用不着,我的ivysetting.xml配置如下:
<?xml version="1.0" encoding="UTF-8"?>
<ivysettings>
<!--注意:defaultConflictManager是默认的版本冲突解决方案,即只保留最新版本,替换老版本-->
<settings defaultResolver="libs.local" defaultConflictManager="latest-revision" />
<!--latest-revision-->
<resolvers>
<!--以下为ivy搜寻远程服务器或本地机器上jar文件库中jar文件的“搜索链”-->
<chain name="libs.local">
<ibiblio name="nexus-group-public" m2compatible="true" root="http://localhost:8081/nexus/content/groups/public"/>
<ibiblio name="repo1.maven.org" m2compatible="true" root="http://repo1.maven.org/maven2" />
<ibiblio name="repo2.maven.org" m2compatible="true" root="http://repo2.maven.org/maven2" />
</chain>
</resolvers>
</ivysettings>
文件随便保存到那里都可以,最后在eclipse中选择菜单:Windows->Performances,然后在Ivy->Settings中将ivysetting.xml文件的位置设置到“Ivy Setting Path”中。
ivy.xml和pom.xml类似,是描述一个项目的依赖关系的,pom.xml是maven的文件格式,不过ivy貌似也支持它,ivy.xml也有很多配置选项,这里给个简单例子:
<?xml version="1.0" encoding="ISO-8859-1"?>
<ivy-module version="2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="http://ant.apache.org/ivy/schemas/ivy.xsd">
<info
organisation="com.xxx" module="jpetstore" status="integration">
</info>
<dependencies>
<dependency org="org.springframework" name="spring-core" rev="3.0.3.RELEASE"></dependency>
<!--<dependency org="org.springframework" name="spring-ibatis" rev="2.0.8"/>-->
<dependency org="org.springframework" name="spring-struts" rev="3.0.3.RELEASE"/>
<dependency org="org.springframework" name="spring-orm" rev="3.0.3.RELEASE">
<exclude org="org.eclipse.persistence"></exclude>
</dependency>
<dependency org="org.springframework" name="spring-tx" rev="3.0.3.RELEASE">
<exclude name="connector-api"></exclude>
</dependency>
<dependency org="commons-dbcp" name="commons-dbcp" rev="1.4"/>
<dependency org="javax.transaction" name="jta" rev="1.1"/>
<dependency org="javax.xml" name="jaxrpc-api" rev="1.1"/>
<dependency org="axis" name="axis" rev="1.4"/>
<dependency org="org.tuckey" name="urlrewritefilter" rev="3.1.0"/>
<dependency org="com.caucho" name="hessian" rev="3.1.5"/>
<dependency org="jstl" name="jstl" rev="1.1.2"/>
<dependency org="taglibs" name="standard" rev="1.1.2"/>
<dependency org="mysql" name="mysql-connector-java" rev="5.1.13"/>
<dependency org="junit" name="junit" rev="4.8.1"/>
</dependencies>
</ivy-module>
我们在ivy.xml中只需要配置项目直接依赖的jar即可,间接依赖ivy会自动处理的,可以在http://mvnrepository.com/找默认的maven库中包信息,ivy.xml保存到eclipse的java项目的根目录下,然后右键点击它选择“Add Ivy Library...”,在弹出的界面上勾选相应的“Configurations”,确定,这时进入项目的classpath配置界面发现ivy.xml中配置的依赖包已经都在了:
如果需要用WTP部署一个java web项目,那么还要在“Java EE Module Dependencies”中勾选ivy.xml。
我的环境是eclipse3.5(后来试了下,3.6下是好的),不知道是WTP的bug还是ivyde的bug,有时候依赖包老是无法部署到tomcat上,无奈只好搞了一个ant脚本:
<?xml version="1.0" encoding="UTF-8" ?> <project xmlns:ivy="antlib:org.apache.ivy.ant" name="xxxxx" basedir="."> <property name="target.dir" value="D:\tomcat5.5\webapps\xxxxx\WEB-INF\lib" /> <target name="resolve"> <ivy:configure file="../ivysetting.xml" /> <ivy:resolve file="pom.xml" conf="runtime, compile" /> </target> <target name="deploy-lib" depends="resolve"> <ivy:retrieve pattern="${target.dir}/[artifact]-[revision].[ext]" sync="true" conf="*" /> </target> </project>
还好修改pom.xml的机会不是很多,每次修改后就手工执行一次ant部署那些jars。