如何在OpenDayLight Karaf中添加新功能?

时间:2018-09-13 10:38:06

标签: maven apache-karaf sdn opendaylight

如何作为Karaf模块向ODL Oxygen SR3(0.8.3)添加新功能?

例如,我从official page下载了预先构建的ODL。然后,我想将Toaster sample用作氧气的新模块,它是使用以下命令创建的:

wget -q -O - https://raw.githubusercontent.com/opendaylight/odlparent/master/settings.xml > ~/.m2/settings.xml
mvn archetype:generate -DarchetypeGroupId=org.opendaylight.archetypes -DarchetypeArtifactId=opendaylight-startup-archetype -DarchetypeCatalog=remote -DarchetypeVersion=1.1.0-SNAPSHOT

编译后,它将生成构建文件到本地Maven存储库(~/.m2/repository/com/example/toaster)。我将com/example/toaster复制到Karaf默认存储库文件夹./karaf-0.8.3/system中。然后,我想使其在feature:list中可用,以便可以与feature:install toaster一起安装。首先,我需要将其添加到回购列表中:

./karaf-0.8.3/bin/karaf
feature:repo-add mvn:com.example.toaster/features-toaster

不幸的是,它显示了一个错误:

  

执行命令时出错:解析工件com.example.toaster:features-toaster:jar:0.1.0-SNAPSHOT:

时出错      

[在opendaylight快照中找不到工件com.example.toaster:features-toaster:jar:0.1.0-SNAPSHOT(https://nexus.opendaylight.org/content/repositories/opendaylight.snapshot/)]:mvn:com.example.toaster / features-toaster

以上命令基于this postrepo-add的正确方法是什么?

2 个答案:

答案 0 :(得分:0)

请阅读https://karaf.apache.org/manual/latest/#_artifacts_repositories_and_urls 文章。 您需要做的基本上是将包含烤面包机的仓库URl添加到软件包中,如下所示: (来自上面链接的文档的示例)

<bundle>http://repo1.maven.org/maven2/org/apache/servicemix/nmr/org.apache.servicemix.nmr.api/1.0.0-m2/org.apache.servicemix.nmr.api-1.0.0-m2.jar</bundle>

还可以使用属性定义存储库:

  

org.ops4j.pax.url.mvn.repositories:以逗号分隔的远程列表   解决时按出现顺序检查的存储库URL   专家文物

来源:https://karaf.apache.org/manual/latest/#_maven_url_handler

答案 1 :(得分:0)

在文件karaf/target/assembly/etc/org.ops4j.pax.url.mvn.cfg的末尾将更改配置构建为

org.ops4j.pax.url.mvn.repositories= \
    file:${karaf.home}/${karaf.default.repository}@id=system.repository, \
    file:${karaf.data}/kar@id=kar.repository@multi, \
    https://nexus.opendaylight.org/content/repositories/opendaylight.snapshot@id=opendaylight-snapshot@snapshots, \
    https://nexus.opendaylight.org/content/repositories/public@id=opendaylight-mirror

然后您可以使用添加一个存储库

feature:repo-add mvn:org.opendaylight.netconf/features-restconf/1.9.0-SNAPSHOT/xml/features

其中groudId: org.opendaylight.netconfartifactId: features-restconfversion: 1.9.0-SNAPSHOT取决于您要添加的功能。您可以在https://nexus.opendaylight.org/中用Articfact Search搜索它们,然后在Maven pom中找到它们。