无法将 Maven 中央存储库与 bnd 一起使用来解决依赖关系



在Eclipse Oxygen.2 Release (4.7.2)中,我正在尝试使用bndtools来制作一些OSGi捆绑包。

默认情况下(使用 JPM 存储库),我能够很好地解决依赖项。但我无法看到那里有什么图书馆。因此,我想使用 Maven Central 来处理我的依赖项。我可以浏览网站,查看有哪些版本,并根据这些信息做出选择。

cnf项目中的默认build.bnd文件具有存储库设置,如下所示

# Configure Repositories
-plugin.1.Central: 
aQute.bnd.deployer.repository.wrapper.Plugin; 
location = "${build}/cache/wrapper"; 
reindex = true, 
aQute.bnd.jpm.Repository; 
includeStaged = true; 
name = Central; 
location = ~/.bnd/shacache; 
index = ${build}/central.json
-plugin.2.Local: 
aQute.bnd.deployer.repository.LocalIndexedRepo; 
name = Local; 
pretty = true; 
local = ${build}/local
-plugin.3.Templates: 
aQute.bnd.deployer.repository.LocalIndexedRepo; 
name = Templates; 
pretty = true; 
local = ${build}/templates
-plugin.4.Release: 
aQute.bnd.deployer.repository.LocalIndexedRepo; 
name = Release; 
pretty = true; 
local = ${build}/release

按照 bnd 网站上的说明,我将以下内容添加到我的文件中;因为已经有一个Central存储库,所以我将这个命名为Maven但其余的都是一样的

-plugin.5.Maven = 
aQute.bnd.repository.maven.provider.MavenBndRepository; 
releaseUrl=https://repo.maven.apache.org/maven2/; 
index="${.}/central.maven"; 
name="Maven"

当我删除JPM存储库时,突然一切都被破坏了。这并不令人惊讶,因为我确实删除了一个存储库。但是,我认为在构建和清理工作区之后,它会解决我们可以访问 maven central,并且它会从那里拉动。事实并非如此。

我注意到 Maven 存储库上有一个index属性,所以我想也许我必须将所有依赖项名称添加到指定的文件中,但我无法找到任何关于文件外观的文档,或者如何创建一个,或任何类似的东西。

我在 Eclipse 中遇到的错误是

找不到/error/org.apache.servicemix.bundles.junit;version=4.12 在 [bnd-cache [PATH\TO\WORKSPACE\cnf\cache\3.5.0\bnd-cache r/w=false], local, templates, release, MavenBndRepository [localRepo=PATH\TO\USER\FOLDER.m2\repository, storage=Maven, inited=true]] 中找不到

在整个过程中我缺少什么吗?我错过了什么明显的东西吗?

我发现了(感谢OSGi路由教程),我错过了什么。

在指定位置需要有一个现有的索引文件,并且该文件由 maven 坐标条目组成。jpm 索引只需要工件 id 和版本,但 maven 坐标需要组、工件和版本。

我修改了我的cnf/build.bnd条目,使其看起来像

-plugin.5.Central = 
aQute.bnd.repository.maven.provider.MavenBndRepository; 
releaseUrl=https://repo.maven.apache.org/maven2/; 
name="Central"

我删除了索引文件规范,这样它只会使用默认值(cnf/<name>.mvn)。但是,我不确定文档在谈论哪个名称。我确定这是在存储库设置中指定的名称。name="<ThisValueHere>",不是-plugin.5.<ThisValueHere>。请注意,此值不区分大小写。

我的central.mvn文件最终看起来像

org.apache.felix:org.apache.felix.framework:5.4.0
org.apache.felix:org.apache.felix.gogo.command:1.0.2
org.apache.felix:org.apache.felix.gogo.runtime:1.0.10
org.apache.felix:org.apache.felix.gogo.shell:1.0.0
org.apache.felix:org.apache.felix.log:1.0.1
org.apache.felix:org.apache.felix.scr:2.0.14
org.apache.servicemix.bundles:org.apache.servicemix.bundles.junit:4.12_1
org.osgi:osgi.annotation:6.0.1
org.osgi:osgi.cmpn:6.0.0
org.osgi:osgi.core:6.0.0

相关内容

  • 没有找到相关文章

最新更新