eclipse+ivyde+nexus

2011-01-13

用m2eclipse吧,它比ivyde要好,下文还可以看看

 

eclipse+ivyde

    这几年写程序一直用eclipse,需要引用到一些开源的工具包时一般是先下载它们,然后再手工添加到java工程 的classpath中去,其实还是挺麻烦的,需要手工去下载合适的版本、如果要看源代码或javadoc还需要手工attach、还需要自己去分析一些 间接的依赖关系……。最近看了一下ivy,和maven有点像,可以从远程服务器自动下载需要的依赖包(就是jar),并且自动的为每个依赖包配置好对应的源代码包,而且通过eclipse插件ivyde可以实现自动的将下载的依赖包加入到classpath中,非常方便,先看看效果图:


eclipse+ivyde+nexus_第1张图片
 

其实配置也不是很麻烦,大概需要下面这几步:

  1. 安装eclipse、再安装ivyde(参考http://ant.apache.org/ivy/ivyde/download.cgi)
  2. 安装nexus(http://nexus.sonatype.org/),nexus是maven库服务器有免费版,用它可以将互联网上的maven库(包括spring的ebr库)代理到一个内网地址上,还可以发布自己的依赖包,在team内用非常好
  3. 配置ivyde,主要是写一个ivysetting.xml
  4. 开始一个java项目,编写ivy.xml或者pom.xml,上图我用的是spring的sample,它自带了pom.xml,简单的配置几步即可让它编译通过。

安装nexus

从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/


eclipse+ivyde+nexus_第2张图片


nexus运行时会下载并保存用到的jar,所以要找个空间稍微大一点的地方解压它。


nexus中已经默认的代理了一些常用的maven库了,接下来需要配置一下nexus才能让他代理你需要用到的一些maven库,例如spring的ebr库:

  1. 用管理员登录(admin/admin123)
  2. 选择Repositories,再选择add按钮下的Proxy Repository
  3. 在出来的界面中的“Remote Storage Location”中输入:“http://repository.springsource.com/maven/bundles/release/”,在“Repository ID”和“Repository Name”中分别输入“spring-release”和“SpringSource Bundle Releases”
  4. 重复第2步和第3步,但“Remote Storage Location”改为“http://repository.springsource.com/maven/bundles/external/”,其他选项也相应变化
  5. 在Repositories列表中选择“Public Repositories”,这是nexus默认建立的一个public group,然后选择Configuration页面,将所有可用的maven库都推送到左边列表中去,然后调整一些顺序保存
  6. 大功告成,我还顺便设置了所有的代理的“Download Remote Indexes”都为True,貌似会提高搜索速度

 ivysetting.xml

这个文件是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

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中配置的依赖包已经都在了:


eclipse+ivyde+nexus_第3张图片


调试部署

如果需要用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。

 

疑难问题

  1. 调试web项目时,无法自动部署依赖包。解决方法:用eclipse3.6,或用ant自己部署。
  2. 有源代码包,却无法查看源代码。解决方法:卸载反编译插件JDeclipse

 

 

 

 

你可能感兴趣的:(eclipse,spring,maven,xml,ant)