使用Eclipse Oxygen.2 Release(4.7.2),我试图使用bndtools制作一些OSGi包。
默认情况下(使用JPM存储库)我能够很好地解决依赖关系。但我无法看到那里的图书馆。因此,我想使用Maven Central来处理我的依赖项。我可以浏览网站,看看有哪些版本,并对这些信息做出选择。
build.bnd
项目中的默认cnf
文件的存储库设置如
# 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
按照说明on the bnd website我将以下内容添加到我的文件中;因为已经有一个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中心,它将从那里拉出来。事实并非如此。
我注意到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]]
在整个过程中,我是否遗漏了一些东西?我有没有明显错过的东西?
答案 0 :(得分:0)
我发现了(感谢OSGi enroute tutorial),我错过了什么。
指定位置需要有一个现有的索引文件,该文件由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