一、环境准备
1、下载并解压eclipse
2、下载安装jdk,并配置环境变量
打开系统属性面板(桌面上右键单击“我的电脑”→“属性”),点击高级系统设置,再点击环境变量,在系统变量中新建一个变量,变量名:JAVA_HOME,变量值:C:\Program Files\Java\jdk1.6.0_10——确定。然后编辑path变量,在最前面添加%JAVA_HOME%\bin;即可。
注意:C:\Program Files\Java\jdk1.6.0_10为jdk的具体安装路径。
验证jdk安装及环境变量的配置:
开始——运行中输入cmd进入dos界面
C:\Users\您的电脑用户名>echo %JAVA_HOME%
C:\Users\您的电脑用户名>java –version
信息正确即可。
3、下载maven安装文件,并配置环境变量
下载:网址http://maven.apache.org/download.html,下载apache-maven-3.0-bin.zip。
本地安装: 将安装文件解压到你指定的目录中,如:D:\bin,那么Maven安装目录就是D:\bin\apache-maven-3.0
设置环境变量:
将Maven安装配置到操作系统环境中。
打开系统属性面板(桌面上右键单击“我的电脑”→“属性”),点击高级系统设置,再点击环境变量,在系统变量中新建一个变量,变量名为M2_HOME,变量值为Maven的安装目录D:\bin\apache-maven-3.0。点击确定,接着在系统变量中找到一个名为Path的变量,在变量值的末尾加上%M2_HOME%\bin;,注意多个值之间需要有分号隔开,然后点击确定。至此,环境变量设置完成,
运行如下命令检查Maven的安装情况:
C:\Users\Juven Xu>echo %M2_HOME%
C:\Users\Juven Xu>mvn -v
4、在eclipse中安装maven插件。
如果IDE不是eclipse而是STS,则本步可以跳过,因为STS中已经继承了maven插件。
maven插件的安装是通过eclipse的Help菜单下的Install New Software,然后在打开的窗口中点击Work with右边的“Add”按钮,在弹出的"Add Repository"窗口中再输入Name(m2eclipse),Location中输入maven插件的网址:http://m2eclipse.sonatype.org/sites/m2e
在eclipse中安装maven的附加插件,步骤与上面相同
网址:http://m2eclipse.sonatype.org/sites/m2e-extras
5、安装PAX Cursor插件。该插件装完后在eclipse中run configuration中,选择osgi Framework后会出现Pax Runner页面,在该页面中选择要运行的osgi bundle的pom文件来执行run osgi bundle。
网址:http://www.ops4j.org/pax/eclipse/update/
二、建maven bundle,并将其转化成osgi bundle运行。(以一个简单的helloworld为例)
1、新建项目父bundle。
a)
勾选Create a simple project——next
在New Maven Project窗口中输入父bundle对应的gav(即Group Id、Artifact Id、Version)以及Packaging(注意父bundle一定要选pom,子bundle可以选maven plugin)
点击Finish。
b)
步骤与新建父bundle相同,不同的是New Maven Project中的各项配置值不同。
Group Id相同,这样父与子才能在同一个group中。
Artifact Id不同(父和任何一个子bundle的该值都必须唯一,因此不同)
Version相同
Packaging不同(子bundle的Packaging可以是maven plugin或jar、war等。建完之后会在pom文件中统一修改为bundle以将maven bundle转化为osgi bundle)
c)
打开父bundle的pom.xml文件,在project对之间,最好在父bundle的pav等配置之下添加所有子bundle与父bundle的相对路径。如
<modules>
</modules>
其中projectname.intf.manageintf也是子bundle的Artifact Id
父bundle的整个pom.xml文件如下:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
</project>
d)
Ø
<dependencies>
Ø
子bundle的整个pom.xml文件如下:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
</project>
Ø
按照子bundl epom文件指定的Bundle-Activator建立对应的包和Activator类。如本例中应该在子bundle的src/main/jave路径下,新建一个包名为com.companyname.projectname.intf.manageintf.activator的类Activator.java。
该类必须实现BundleActivator接口,该接口所在包名为org.osgi.framework.BundleActivator,接口中有两个方法,分别用于启动和停止该bundle时调用。
public void start(BundleContext arg0) throws Exception;
public void stop(BundleContext arg0) throws Exception;
Activator类具体如下:
package com.companyname.projectname.intf.manageintf.activator;
import org.osgi.framework.BundleActivator;
import org.osgi.framework.BundleContext;
public class Activator implements BundleActivator{
}
e)
eclipse——run Configurations——Maven Building——右键new——修改name为projectname_install,在Main页中Base directory下点击“Browse Workspace”,选择父bunde的Artifact Id,如本例为projectname,点击ok。然后在Goals中输入clean install,其本质就是执行maven clean命令和maven install命令。
如果eclipse没有配置java vm的最大内存,那么需要在JRE页面中的VM arguments中输入-Xmx1000m,以免出现堆栈溢出错误。值1000可根据个人电脑内存大小进行配置。
回到Main页面,点击Apply将该配置保存。然后点击Run,就可以执行以上命令将父bundle中配置的所有子bundle都统一执行clean和install命令了。
执行结果如果显示所有bundle都SUCCESS即正确。
[INFO] Reactor Summary:
[INFO]
[INFO] ProjectName ....................................... SUCCESS [0.251s]
[INFO] ProjectName Intf ManageIntf ....................... SUCCESS [2.560s]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 3.826s
[INFO] Finished at: Sun Apr 15 10:13:10 CST 2012
[INFO] Final Memory: 5M/10M
注意:!!!!
第一次执行过程中可能出错,无法找到父bundle等的错误。解决办法为:
1、
<modules>
再右键子bundle,选择run as——Maven install,子bundle install成功后
再将父bundle中被注释掉的子bundle信息
<modules>
取消注释,然后在run configurations中执行之前的projectname_install,如果显示父bundle和各个子bundle都install成功,即install成功。
f)
eclipse——run Configurations——Osgi Framework——右键new——修改name为osgi_run,在Pax Runner页中点击Add Pom,在打开的窗口中选择本地父bundle的路径下pom.xml文件。然后依次选择各个子bundle的pom文件
在Bundle页中取消所有Bundles的选择,在Framwork中选择Equinox 3.5.0 via Pax Runner,点击Apply,保存该run配置,然后点击Run运行osgi bundle
运行后eclipse的Console中显示
在Console中输入ss回车,即可看到所有bundle的运行情况,如
如果要停某个bundle,只需要输入stop bundle对应的id即可。如本例中停子模块的bundle,则只要输入stop 1即可,要启动已停止的bundle则输入start bundle对应的id即可。
同理可以动态卸载和安装bundle
卸载为uninstall bundle对应的id
安装为install file:///要安装的bundle对应的target文件夹下的jar包的完整本地路径,如本例中安装子bundle即为
新安装的bundle并没有自动启动,需要start 对应的bundle id才行,如本例
至此,maven bundle转化成osig bundle讲解结束!
其他osgi相关的高级配置和spring dm等的使用参加其他文档。
本文详细介绍如何使用Maven创建项目结构,配置OSGi Bundle,并通过Eclipse进行安装与运行。涉及环境搭建、依赖管理、插件配置及激活器类编写。

7012

被折叠的 条评论
为什么被折叠?



