Пользовательский дистрибутив karaf-felix с использованием maven

Я в настоящее время разворачиваю maven управляемые связки в felix рамки, и я хочу создать maven проект для процесса развертывания и хотите автоматизировать весь процесс с помощью плагинов Maven.

С помощью maven-dependency-plugin мы можем как-то автоматизировать процесс развертывания.

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-dependency-plugin</artifactId>
    <version>2.8</version>
     <executions>
         <execution>
             <id>unpack-felix</id>
             <phase>compile</phase>
             <goals>
                 <goal>unpack-dependencies</goal>
             </goals>
             <configuration>
                 <includeArtifactIds>org.apache.felix.ipojo.distribution.quickstart</includeArtifactIds>
                 <outputDirectory>${project.build.directory}/tmp</outputDirectory>
             </configuration>
         </execution>
         <execution>
             <id>copy-bundles</id>
             <phase>package</phase>
             <goals>
                 <goal>copy-dependencies</goal>
             </goals>
             <configuration>
                 <includeArtifactIds>
                     sample.maven.bundle1,
                     sample.maven.bundle2,
                     .
                     .
                     sample.maven.bundleN
                 </includeArtifactIds>
                 <outputDirectory>${project.build.directory}/bundle</outputDirectory>
             </configuration>
         </execution>
     </executions>
</plugin>

Но все связки, упомянутые в <includeArtifactIds> будет статичным, и у нас могут возникнуть проблемы с их обновлением bundle:update или же felix:update,

Как я могу развернуть пакеты в felix или же karaf так же, как бег felix:deploy внутри felix но называется с помощью maven вместо?

1 ответ

Не уверен, что я полностью понимаю ваши требования, но для Karaf у вас есть дескрипторы функций. В основном это xml-файл, который сообщает средству распознавания функций, какие комплекты должны быть установлены вместе и какие другие функции могут потребоваться в качестве предварительного условия.

Например, следующий файл feature.xml:

<?xml version="1.0" encoding="UTF-8"?>
<features name="myfeature" xmlns="http://karaf.apache.org/xmlns/features/v1.0.0">

    <repository>mvn:org.apache.camel.karaf/apache-camel/2.15.0/xml/features</repository>

    <feature name='myfeature' version="1.0">
        <bundle>mvn:my.group.id/sample.maven.bundle1/1.0</bundle>
        <bundle>mvn:my.group.id/sample.maven.bundle2/1.0</bundle>
        <bundle>mvn:my.group.id/sample.maven.bundle3/1.0</bundle>
        <bundle>mvn:my.group.id/sample.maven.bundle4/1.0</bundle>
        ...
        <bundle>mvn:my.group.id/sample.maven.bundleN/1.0</bundle>            
    </feature> 

...
</features>

функции легко развертываются в Karaf с помощью:

feature:install myfeature

при установке одного пакета это просто с правильной координатой mvn:

bundle:install mvn:my.group.id/sample.maven.bundle1/1.0

Если вы просто хотите, чтобы это было в вашем собственном контейнере, вам нужно добавить проект pax-url-aether в вашу настройку, он добавляет обработчик require mvn-Url. С помощью этого url-обработчика можно устанавливать связки из mvn-координат.

РЕДАКТИРОВАТЬ:

Другой способ обеспечить все это за один раз - использовать плагин karaf-maven-для создания собственного дистрибутива.

<?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">

<artifactId>Karaf-Service-Runtime</artifactId>
<packaging>karaf-assembly</packaging>

...

    <plugin>
        <groupId>org.apache.karaf.tooling</groupId>
        <artifactId>karaf-maven-plugin</artifactId>
        <version>${karaf.version}</version>
        <extensions>true</extensions>
        <configuration>
                <!-- <startupFeatures/> -->
                <bootFeatures>
                    <feature>standard</feature>
                    <feature>management</feature>
                    <feature>war</feature>
                    <feature>my-feature</feature>
                </bootFeatures>
                <!-- <installedFeatures/> -->
            </configuration>
    </plugin>

Другой способ сделать это - использовать то, что я создал для витрины (требуется Karaf 4.0.0, который в настоящее время доступен как SNAPSHOT). Убедитесь, что ваш пользовательский дистрибутив содержит функцию jolokia, и установите эту функцию с помощью запроса отдыха, отправленного из плагина maven. Могу хотеть взглянуть на мою витрину.

Другие вопросы по тегам