将自定义本地项目添加到集成分发

Add custom, local project to integration-distribution

我正在尝试将自定义项目添加到发行版中。我通过

创建的项目

mvn archetype:generate -DarchetypeGroupId=org.opendaylight.controller -DarchetypeArtifactId=opendaylight-startup-archetype -DarchetypeRepository=https://nexus.opendaylight.org/content/repositories/opendaylight.snapshot/ -DarchetypeCatalog=remote -DarchetypeVersion=1.6.0-SNAPSHOT

(显然)无法通过官方联系获得。我没有对这个项目做任何更改。

我在 distribution 中启动了 karaf 并尝试通过

添加新项目作为新存储库

feature:repo-add mvn:org.opendaylight.flowlistener/features-flowlistener/0.1.0-SNAPSHOT/xml/features

并收到此错误:

Adding feature url mvn:org.opendaylight.flowlistener/features-flowlistener/0.1.0-SNAPSHOT/xml/features Error executing command: Error resolving artifact org.opendaylight.flowlistener:features-flowlistener:xml:features:0.1.0-SNAPSHOT: [Could not find artifact org.opendaylight.flowlistener:features-flowlistener:xml:features:0.1.0-SNAPSHOT in opendaylight-snapshot (https://nexus.opendaylight.org/content/repositories/opendaylight.snapshot/)] : mvn:org.opendaylight.flowlistener/features-flowlistener/0.1.0-SNAPSHOT/xml/features

通常可以添加仅存在于本地的项目吗?我做错了什么?

提前致谢! 最大值

Karaf 分发使用 etc/org.ops4j.pax.url.mvn.cfg 中的设置来解析 Maven 工件。您将必须调整这些设置(例如 Maven 本地存储库)以供分发以找到您的本地项目。有关如何编辑此文件的一些 in-line 文档: https://github.com/apache/karaf/blob/master/assemblies/features/base/src/main/resources/resources/etc/org.ops4j.pax.url.mvn.cfg

在 Karaf 中使用 etc/org.ops4j.pax.url.mvn.cfg 配置工件存储库。 OpenDaylight 中的配置仅使用 Karaf 系统目录;它完全忽略本地 Maven 存储库。

要添加本地 Maven 存储库,您应该编辑文件末尾的 org.ops4j.pax.url.mvn.repositories 条目以包含您的 Maven 存储库:

org.ops4j.pax.url.mvn.repositories= \
    file:${karaf.home}/${karaf.default.repository}@id=system.repository, \
    file:${karaf.data}/kar@id=kar.repository@multi, \
    file:${user.home}/.m2/repository@snapshots@id=m2.repository

顺便说一句,除非您打算将您的项目贡献给 OpenDaylight,否则您应该避免使用 org.opendaylight 命名空间。