Как настроить имя папки комплекта в Apache Felix Cache до / после установки? - PullRequest
0 голосов
/ 29 мая 2018

У меня есть очень простое приложение в Maven, которое использует Apache Felix в качестве OSGi Framework.

Вот содержимое файла 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.Но я надеюсь, что должны быть некоторые готовые решения вместо изобретения колеса.

Как правильно реализовать эту функцию?

...