如何作为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 post。 repo-add
的正确方法是什么?
答案 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.netconf
,artifactId: features-restconf
和version: 1.9.0-SNAPSHOT
取决于您要添加的功能。您可以在https://nexus.opendaylight.org/中用Articfact Search
搜索它们,然后在Maven pom中找到它们。