Maven和Tycho
点进来读这篇文章的朋友,我假定你已经知道maven的基本知识,也知道Eclipse,知道Eclipse是基于OSGi,初步了解Eclipse插件开发或者说OSGi模块化开发。如果对这些知识不了解,甚至完全没有听过,那请绕开本文。
Maven简单来说是Java世界的一种新型的build工具,比ant的最大好处是依赖的管理,以及配置文件的可读性,可复用性,可扩展性。Maven的配置文件称为POM,即Project Object Model。在Maven中,每一个插件或者模块都由groupId,artifactId,version唯一标示。还有两个可选的标示元素,一个是packaging,默认支持的选项有pom,jar,maven-plugin,ejb,war,ear,rar,par等,maven会根据packaging设置的不同为模块执行不同的目标(goal);另一个是classifier,一般用不上。
最简单的pom
Tycho牛逼之处就在于它可以读懂这些metadata,这样程序员就不需要在pom文件里面重新定义一遍。不止如此,为了避免程序员乌龙地在MANIFEST文件和pom文件里面定义的依赖出现冲突,Tycho甚至规定所有的依赖必须定义于MANIFEST文件中(不然没法编译),出现在pom文件中的依赖一律直接被忽略。
为了优化对Eclipse插件和OSGi模块的build,Tycho提供了专门的packaging,用来处理专门的模块生命周期,最典型的比如eclipse-repository,配合tycho-p2-director-plugin,直接就可以读懂product文件,build整个Eclipse RCP的product。
启用Tycho很简单,把下面的properties和build标签加入到parent pom文件即可,其中0.15.0是截止2012.8.26 Tycho最新的版本。
<groupId>Some-Group-Id</groupId> <artifactId>Bundle-SymbolicName</artifactId> <version>Bundle-Version</version> <packaging>eclipse-test-plugin</packaging>最后放几个官方的链接:
http://maven.apache.org/guides/introduction/introduction-to-the-pom.html
http://www.eclipse.org/tycho/
http://wiki.eclipse.org/Tycho/Reference_Card