如何在 Eclipse 中使用 BndTools 设置 iPojo



我正在尝试在Eclipse中使用iPojo注释进行组件声明。问题是,当它生成XML和修改后的类时,bnd-ipojo-plugin在插件类路径中找不到注释。

我在 Eclipse 中收到这样的错误:

During generation of a component on class org.osgi.example.Application, exception java.lang.ClassNotFoundException: org.apache.felix.ipojo.annotations.Bind

我已经修改了 .bnd 文件以包含"-plugins"属性:

-plugin: org.apache.felix.ipojo.bnd.PojoizationPlugin;use-local-schemas=true;path:="${workspace}/cnf/plugins/org.apache.felix.ipojo-1.10.1.jar;${workspace}/cnf/plugins/org.apache.felix.ipojo.annotations-1.10.1.jar;${workspace}/cnf/plugins/bnd-ipojo-plugin-1.10.1.jar;${workspace}/cnf/plugins/org.apache.felix.ipojo.manipulator-1.10.1.jar"

我的 Eclipse 项目在 BuildPath 中也有所有的 iPojo jar。有人有什么建议吗?或者有没有更好的方法将iPojo集成到Eclipse中?

编辑 1

我已经完全重建了我的工作区,并将-plugin-pluginpath变量移动到 build.bnd 文件中。

它现在看起来像这样:

-pluginpath: ${plugindir}/biz.aQute.repository/biz.aQute.repository-2.1.0.jar,
    ${plugindir}/bnd-ipojo-plugin/bnd-ipojo-plugin-1.10.1.jar, 
    ${plugindir}/org.apache.felix.ipojo/org.apache.felix.ipojo-1.10.1.jar, 
    ${plugindir}/org.apache.felix.ipojo.annotations/org.apache.felix.ipojo.annotations-1.10.1.jar, 
    ${plugindir}/org.apache.felix.ipojo.manipulator/org.apache.felix.ipojo.manipulator-1.10.1.jar
-plugin: aQute.bnd.deployer.repository.LocalIndexedRepo;name=Release;local=${workspace}/cnf/releaserepo;pretty=true,
    aQute.bnd.deployer.repository.LocalIndexedRepo;name=Local;local=${workspace}/cnf/localrepo;pretty=true,
    aQute.bnd.deployer.repository.FixedIndexedRepo;name=Bndtools Hub;locations=https://github.com/bndtools/bundle-hub/raw/master/index.xml.gz,
    aQute.lib.deployer.FileRepo;name=Build;location=${workspace}/cnf/buildrepo,
    aQute.lib.deployer.FileRepo;readonly=true;name=iPojo Repo;location=${plugindir}, 
    org.apache.felix.ipojo.bnd.PojoizationPlugin;use-local-schemas=true

现在所有错误都消失了,它构建起来不会失败。但是,仍然没有生成 XML 文件。除了更改 build.bnd 文件之外,还有其他步骤吗?

我遇到了同样的问题,并通过将 bnd-ipojo-plugin 构建为具有所有依赖项的胖罐子来使其工作。我从这里得到了这个想法:https://groups.google.com/forum/#!topic/bndtools-users/0IqYbXOxn3Q

我获取了源代码并将其添加到pom中.xml:

...
<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-assembly-plugin</artifactId>
    <configuration>
        <descriptorRefs>
            <descriptorRef>jar-with-dependencies</descriptorRef>
        </descriptorRefs>
    </configuration>
    <executions>
        <execution>
            <id>assemble-all</id>
            <phase>package</phase>
            <goals>
                <goal>single</goal>
            </goals>
        </execution>
    </executions>
</plugin>
...

然后我将生成的 jar 作为插件添加到 build.bnd 中,如下所示:

-plugin: org.apache.felix.ipojo.bnd.PojoizationPlugin;path:="${workspace}/cnf/plugins/bnd-ipojo-plugin-1.12.1-jar-with-dependencies.jar";use-local-schemas=true

这样它就可以正常工作。

我在iPojo上切换到BndTools SCR注释。我喜欢 iPojo 注释的表现力,但我发现 SCR 注释同样令人愉快。由于它们内置于 BndTools 中,因此它们按预期工作。尽管规范(第 187 页)在确保我正确使用它们(即属性与属性)方面证明非常有用。

相关内容

  • 没有找到相关文章

最新更新