在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