用Maven开发OSGI Bundle

阅读更多
    可能99%用Java开发软件的同学都会用Eclipse来作为开发用IDE,特别是开发OSGI方面的,可能更有可能用Eclipse。但很不幸,可能是因为早期对Eclipse的“童年”阴影,对Eclipse大量强大的功能,觉得学习繁琐,所以本人对Eclipse有点抗拒,当然这只是个人的感受:)。

    那么不用Eclipse,我可以用什么呢?总不能用文本编辑器来写代码吧,所以我选择了netbean作为我的IDE,因为我感觉它用起来比较简单。但IDE通常会有自己的工程组织方式,所以Eclipse的工程要放在netbean上用,或者反之,都不是很方便。所以我又选择用了Maven。

    相信Maven是目前开源项目中最普遍使用的一套项目管理工具。既然是这样,我们为什么要将我们的项目和IDE捆绑在一起,为什么不统一用这个最流行的工具来构建一个项目工程,而是采用特定于某个IDE的方式来构建工程呢?

    在Netbean里,我们可以直接打开Maven工程,而在Eclipse里,则只需用mvn eclipse:eclipse就可以将Maven工程转化成一个Eclipse工程。

    开始开发OSGI Bundle时,自然也就想到用Maven来构建工程。首先,Bundle本身就是一个JAR包,它和普通JAR包的区别主要在于Manifest.mf上,所以,要构建Bundle,直接沿用构建JAR包的方式即可,再加上最方便处理Manaifest.mf的功能即可,于是,就有了一下这样的模板(POM.XML):


    4.0.0
    
        UTF-8
    
    com.ponder.tutorials.app01
    Calculator
    jar
    1.0
    app01-Calculator
    http://app01.ponder.com/Calculator/
    
        
            
                org.apache.maven.plugins
                maven-compiler-plugin
                2.3.2
                
                    1.6
                    1.6
                    ${project.build.sourceEncoding}
                
            
            
             org.apache.maven.plugins
              maven-jar-plugin
               
                
                 
                  true
                  lib/
                 
                 
                  ${project.build.finalName}.jar
                  Ponder
                  2
                  
                   ${project.groupId}.${project.ArtifactId}
                  
                  ${project.name}
                  ${project.version}
                  ${project.groupId}
                  
                   ${project.groupId}.${project.ArtifactId}.Activator
                  
                  
                   ${project.groupId}.${project.ArtifactId}.Export
                  
                  org.osgi.framework
                  *
                  *
                 
                
              
            
        
    
    
        
            org.slf4j
            slf4j-api
            1.6.4
            jar
        
        
            org.osgi
            org.osgi.core
            4.2.0
            jar
        
    



    其中用了maven-jar-plugin,通过这个plugin的Configuration/archive/manifest的配置,就可以很方便地设置Bundle所需的Manifest项,打包时会自动创建manifest.mf。

    当然以上只是最基础的部分,我们还可以基于Maven提供的Surefire插件做Bundle的单元测试,利用Maven的父项目来将一组相关联的Bundle项目组合成一个大的项目,还可以将Maven的repository当作OSGI的OBR(OSGI Bundle Repository),用于Bundle的部署发布方面。

你可能感兴趣的:(osgi,maven,eclipse,ide,项目管理)