首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Eclipse开发 >

Maven 三 Felix 4 Eclipse 的搭建与部署(部分转载自别人文章)

2012-11-21 
Maven 3 Felix 4 Eclipse 的搭建与部署(部分转载自别人文章)4.1.开发环境搭建4.2开发工具Maven 3Felix 4Ec

Maven 3 Felix 4 Eclipse 的搭建与部署(部分转载自别人文章)
4.1.开发环境搭建4.2开发工具

Maven 3

Felix 4

Eclipse

4.3环境配置4.3.1 maven环境配置

(1)下载maven,解压到D盘

(2)在系统变量中添加M2_HOME D:\apache-maven-3.0.4;在系统变量的path中添加

%M2_HOME%\bin注意用英文分号隔开

(3)在cmd下输入mvn -version测试是否安装成功

Maven 三 Felix 4 Eclipse 的搭建与部署(部分转载自别人文章)

4.3.2 Eclipse集成maven

) 启动eclipse,如图所示选择install new software…

Maven 三 Felix 4 Eclipse 的搭建与部署(部分转载自别人文章)

(2) 点击 Add按钮 按以下步骤安装:

?

1.?安装 Subclipse

要安装Subclipse,使用下面的Eclipse插件更新站点。

Subclipse 1.2:?http://subclipse.tigris.org/update_1.2.x

想要了解其它版本的Subclipse,以及关于Subclipse插件更多的信息,请访问Subclipse项目的web站点:http://subclipse.tigris.org/。

2.?安装 Mylyn

要安装集成了JIRA支持的Mylyn,添加Mylyn Extras的Eclipse更新URL,如果你的组织使用Atlassian's JIRA来跟踪问题,你会需要这么做。使用下面的更新站点来安装Mylyn:

Mylyn (Eclipse 3.3):?http://download.eclipse.org/tools/mylyn/update/e3.3

Mylyn (Eclipse 3.4):?http://download.eclipse.org/tools/mylyn/update/e3.4

Mylyn Extras (JIRA 支持):?http://download.eclipse.org/tools/mylyn/update/extras

想了解关于Mylyn项目的更多信息,访问Mylyn项目的web站点:http://www.eclipse.org/mylyn/。

3.?安装 AspectJ Tools Platform (AJDT)

如果你正在安装m2eclipse的0.9.4版本,你可能同时也想要安装Web Tools Platform (WTP) 和 AspectJ Development Tools (AJDT)。使用如下的eclipse更新URL以安装AJDT。

AJDT (Eclipse 3.3):?http://download.eclipse.org/tools/ajdt/33/update

AJDT (Eclipse 3.4):?http://download.eclipse.org/tools/ajdt/34/dev/update

想要了解更多的关于AJDT项目的信息,请访问AJDT项目的web站点http://www.eclipse.org/ajdt/。

4.?安装 Web Tools Platform (WTP)

要安装Web Tools Platform (WTP)。使用如下的eclipse更新URL,或者直接在Discovery站点中寻找Web Tool Project,该站点应该已经在你的Eclipse远程更新站点列表中了。

WTP:?http://download.eclipse.org/webtools/updates/

关于更多的Web Tools Platform的信息,请访问Web Tools Platform项目的web站点http://www.eclipse.org/webtools/。

5?安装 m2eclipse

?

一旦你已经安装好这些先决条件,你从如下的Eclipse更新URL安装m2eclipse插件和m2eclipse-extras:

m2eclipse 插件:?http://m2eclipse.sonatype.org/update/

m2eclipse-extras :?http://m2eclipse.sonatype.org/sites/m2e-extras?

最后 maven要用jdk,作用maven时要指定jdk;

????? 在重启eclipse之前,更改eclipse.ini,在–vmargs前面(一定要在其前面)加上:

????????????? -vm
???????????D:\Java\jdk1.6.0_07\bin\javaw.exe //改为你自己的jdk目录

??? 否则会在启动eclipse时报错

至此maven在eclipse按的安装就算完成了。

最好不要使用m2ecplise使用内嵌的Maven:

???? Windows- Preferences-Maven-Installation, 单击Add...按钮,然后选择Maven安装目录M2_HOME,添加完毕后选择这个外部的Maven。

4.3.3 配置局域网内部maven库4.4 在Eclipse+Maven环境下创建bundle应用:4.4.1 新建Maven Project

(1)在File菜单下选择New>Project…,选择Maven Project点击next

(2)选择Create a simple project,点击next

(3)在设置页面输入工程信息,如图,完成后点击finish。

Maven 三 Felix 4 Eclipse 的搭建与部署(部分转载自别人文章)

(4) 生成maven工程,如图所示,其中,src/main/java目录放置java源文件,src/main/resources放置其他资源文件(如css,js,html,jsp文件),target目录放置运行mvn install命令后生成的文件。

Maven 三 Felix 4 Eclipse 的搭建与部署(部分转载自别人文章)

4.4.2 Project Object Model(pom.xml)基本配置说明

project:pom.xml文件中的顶层元素;?
modelVersion指明POM使用的对象模型的版本。这个值很少改动。
groupId指明创建项目的组织或者小组的唯一标识。GroupId是项目的关键标识,典型的,此标识以组织的完全限定名来定义。比如,org.apache.maven.plugins是所有Maven插件项目指定的groupId。?
artifactId指明此项目产生的主要产品的基本名称。项目的主要产品通常为一个JAR文件。第二,象源代码包通常使用artifactId作为最后名称的一部分。典型的产品名称使用这个格式:<artifactId>- <version>. <extension>(比如:myapp-1.0.jar)。?
version项目产品的版本号。Maven帮助你管理版本,可以经常看到SNAPSHOT这个版本,表明项目处于开发阶段。?
name项目的显示名称,通常用于maven产生的文档中。?
url指定项目站点,通常用于maven产生的文档中。?
description描述此项目,通常用于maven产生的文档中。

dependencies:

plugins

Export-Package

repository

?

4.4.2 一些重要的maven plugin

maven-bundle-plugin:

iPOJO Plugin:

junit4osgi Plugin:

SCR Plugin:

4.5 bundle版本说明

?

4.5.1 版本格式

Major.minor.patch level

4.5.2 版本约束

(1) 第一次发布 1.0.0

(2) 修复bug,但不涉及修改接口 ,由1.0.0->1.0.1

(3) 在接口中增加了函数,修改minor,由1.0.1->1.1.1,此种变更不影响之前的依赖关系,因此在之前依赖1.0.1版本的bundle不需要修改。

(4) 若变更无法向上兼容,如删除函数,修改函数返回类型等,修改major号,由1.1.1-2.0.0

4.6 bundle部署及更新

Maven 三 Felix 4 Eclipse 的搭建与部署(部分转载自别人文章)

4.6.1 部署

1,将bundle 打包

命令行:mvn package

Ecplise: run as->Maven package

2,将bundle install到本地依赖库(便于自己测试)

命令行:mvn install

Eclipse: run as->Maven install

3,将bundle 发布到远程bundle库中(本地测试成功,发布到服务器上进行测试)

命令行:mvn deploy

Eclipse:目前无。

4.6.2 更新

(1) 刷新OBR库:repos refresh file:///path/repository.xml

(2) 通过update id命令更新对应的组件

4.7服务注册与依赖管理4.7.1 OSGI原生依赖管理机制
    被依赖的bundle通过BundleContext.registerService()方法注册服务到系统中使用依赖的bundle在start时通过BundleContext的getServiceReferences()/

    getService()来查找依赖的service

    使用依赖bundle通过BundleContext.addServiceListener()来分别注册

    ServiceListener

    在被依赖的bundle/service状态发生变化时, 使用依赖bundle通过ServiceListener的serviceChanged()得到通知并作出调整

缺点:

    编码量较大Activator复杂度较高:对于一些业务逻辑简单的service,如果依赖的service比较多,那么Activator的逻辑和代码实现远比service本身的逻辑和实现要复杂。对测试不利。
4.7.2 iPOJO

Maven 三 Felix 4 Eclipse 的搭建与部署(部分转载自别人文章)

优点:

    组件被作为POJO(Plain Old Java Objects简单Java对象)开发,不需要其他任何东西组件模块是可扩展的,因此可以自由的适应需要标准组件模型管理service 供应和service 依赖,所以可以要求其他任何OSGI服务来创建组合服务,iPOJO管理组件实例的生命周期和环境动态iPOJO提供一个强力的组合系统来创建高度动态的应用iPOJO支持注解,xml或者基于Java的API来定义组件

meta.xml文件说明:

component:

provides:

requires:

instance:

?

    组件管理容器

通过iPOJO管理组件实例的生命周期和环境动态

对服务注册

服务是组件服务接口函数的具体实现

    开发和注册服务

申明函数接口组件(API):一般只包括JAVA接口定义和常量,打包成jar并放在OBR库中

组件功能实现及服务发布(Impl):包含实现函数,包含iPOJO配置文件meta.xml,通过component发布服务。

?

    调用服务

?

4.8在组件中加入日志服务

4.8.1部署本地日志服务

Deploy –s "Apache Felix Log Service"

使用log指令监控bundle生命周期

Maven 三 Felix 4 Eclipse 的搭建与部署(部分转载自别人文章)

4.8.2日志监控及写入

通过LogListener接口来读取log信息

public class LogWriter implements LogListener
{
    // Invoked by the log service implementation for each log entry
public void logged(LogEntry entry) 
    {
System.out.println(entry.getMessage());
    }
}

?

?

?

    debug

Debug的方法有如下三种:

    用felix 的ecplise的插件pax runner。

    ?

    以debug模式运行一个felix监听端口,再远程调试bundle。

    ?

    在bundle中下断点,以debug模式运行felix。
      在bundle中下相应的断点 部署bundle到相应的felix bundle目录下

    3,右键felix项目 选择debug as-> java application 如图所示Maven 三 Felix 4 Eclipse 的搭建与部署(部分转载自别人文章)

    当运行到断点处的时候,eclpise会自动进入如下debug界面

    Maven 三 Felix 4 Eclipse 的搭建与部署(部分转载自别人文章)

5.0单元测试5.1 团队协作

为了便于协同开发,我们将在本地搭建一个maven私服,felix服务器,svn。

Maven私服搭建

一、安装服务器

??????1、下载

??????我们可以在nexus的官网上找到它的相关介绍,下载地址是:http://nexus.sonatype.org/downloads/,在这里可以找到最新的版本,如果需要以前的版本,在官网上应该也可以找到下载地址。我下载的是:nexus-oss-webapp-1.8.0-bundle.tar.gz。关于Nexus的详细使用方法可以参照:Repository Management with Nexus.

????? 2、安装

????? 解压下载的文件:

??????# tar xzvf nexus-oss-webapp-1.8.0-bundle.tar.gz

????? 解压后会在同级目录中,出现两个文件夹:nexus-oss-webapp-1.8.0和sonatype-work,前者包含了nexus的运行环境和应用程序,后者包含了你自己的配置和数据。

????? 3、启动nexus

??????在上面的提到,nexus的运行环境在nexus-oss-webapp-1.8.0目录,下面就进入这个目录启动:

????? #?cd nexus-oss-webapp-1.8.0/bin/jsw/linux-x86-64/

??????在这个目录下包含了一个文件夹和三个文件:lib、nexus、platform和wrapper,其中nexus就是启动命令。

??????# ./nexus

??????执行上面的命令,可以得到nexus命令的用法提示:start 命令启动,stop命令停止。下面启动nexus:

??????# ./nexus start

??????Starting Nexus OSS...

??????Started Nexus OSS

????? 从控制台输出可以看到Nexus已经启动成功,我们可以通过log文件查看更详细的信息:

??????# cd ~/nexus-oss-webapp-1.8.0/log

??????# tail -f wrapper.log

????? 在log中可以看到nexus默认监听的端口是8081。那么我们就可以在浏览器中访问:http://host:8081/nexus,

?Maven 三 Felix 4 Eclipse 的搭建与部署(部分转载自别人文章)????

?

???????二、配置Nexus

???????由于在新搭建的nexus环境中只是一个空的仓库,所以第一步就是要和远程的Maven中心仓库进行同步。

Maven 三 Felix 4 Eclipse 的搭建与部署(部分转载自别人文章)????????

?

Maven 三 Felix 4 Eclipse 的搭建与部署(部分转载自别人文章)????????

?????? 如果在Reindex之后,并没有同步到远程的仓库,可以检查每个仓库的设置。下面是Maven Central的设置:

?

???????Maven 三 Felix 4 Eclipse 的搭建与部署(部分转载自别人文章)

?

???????三、在项目中使用私服

?

?????? 在完成了上面的配置后,就可以将项目中默认的Repository切换为本地的私服了,只需要在pom.xml中增加repositories就可以了:

?

[xhtml]?view plaincopyprint?

    <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">????<modelVersion>4.0.0</modelVersion>???? ???<groupId>org.maven.demo</groupId>????<artifactId>MavenDemo</artifactId>????<version>0.0.1-SNAPSHOT</version>????<packaging>jar</packaging>???? ???<name>MavenDemo</name>????<url>http://maven.apache.org</url>???? ?????<repositories>??????????<repository>??????????????<snapshots>??????????????????<enabled>true</enabled>??????????????</snapshots>??????????????<id>public</id>??????????????<name>Public?Repositories</name>??????????????<url>http://172.28.189.138:8081/nexus/content/groups/public/</url>??????????</repository>??????</repositories>??????<pluginRepositories>??????????<pluginRepository>??????????????<id>public</id>??????????????<name>Public?Repositories</name>??????????????<url>http://172.28.189.138:8081/nexus/content/groups/public/</url>??????????</pluginRepository>??????</pluginRepositories>??????<dependencies>??????????<dependency>??????????????<groupId>junit</groupId>??????????????<artifactId>junit</artifactId>??????????????<version>4.8.1</version>??????????????<type>jar</type>??????????????<scope>compile</scope>??????????</dependency>??????</dependencies>?

热点排行