如何在安装之前/之后在Apache Felix Cache中自定义捆绑文件夹名称?

时间:2018-05-29 12:06:50

标签: java maven osgi apache-felix

我在Maven中有一个非常简单的应用程序,它使用Apache Felix作为OSGi框架。

这是一个pom.xml文件内容:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
         http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.example.installer</groupId>
    <artifactId>bundle-installer</artifactId>
    <version>1.0-SNAPSHOT</version>

    <dependencies>
        <dependency>
            <groupId>org.apache.felix</groupId>
            <artifactId>org.apache.felix.framework</artifactId>
            <version>5.6.10</version>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <artifactId>maven-compiler-plugin</artifactId>
                <inherited>true</inherited>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>

在主要类中,我只是通过其路径获取捆绑包 由Apache Felix安装它:

package com.example.installer;

import org.apache.felix.framework.Felix;
import org.osgi.framework.BundleException;

import java.util.Properties;

public class Main {

    public static void main(String[] args) throws BundleException {

        Properties config = new Properties();
        config.setProperty("org.osgi.framework.storage", "/Users/johndoe/plugins");

        Felix framework = new Felix(config);
        framework.start();

        framework.getBundleContext().installBundle("file:/Users/johndoe/Desktop/bundle-example-0.0.0.1.jar");

        framework.stop();
    }
}

让我解释一下我想要实施的内容。如您所见,我已将Felix缓存目录更改为“/ Users / johndoe / plugins”,即我将以编程方式安装Felix。除了一件事,这段代码运行得很好。安装完成后,每个软件包都安装在 bundle0,bundle1,...,bundleN等这样的文件夹中。但我不喜欢这个,我希望每个包都按照符号名称安装在文件夹中,如:xmlreader,code-analyzer等。

不幸的是,通过在Felix配置属性中设置它是不可能的。但我希望应该有一些现成的解决方案,而不是发明轮子。

如何以正确的方式实现此功能?

0 个答案:

没有答案