Как создавать Java-проекты в виде пакетов развертывания OSGi с помощью Maven с помощью Tycho?

У меня есть несколько проектов Java/OSGi, которые я хочу собрать и упаковать в виде единого пакета развертывания.

Я использую Tycho для компиляции исходников для конкретной целевой платформы, все зависимости находятся в локальном репозитории p2.

Если я установлю <packaging>eclipse-plugin</packaging> в своем файле pom.xml, сборка пойдет нормально, но в качестве вывода я получу файл .jar.
Когда я использую maven-bundle-plugin и установить <packaging>bundle</packaging> сборка прерывается, потому что она компилируется стандартным maven-compiler- плагин вместо Tycho.

<plugin>
    <groupId>org.apache.felix</groupId>
    <artifactId>maven-bundle-plugin</artifactId>
    <version>2.3.5</version>
    <extensions>true</extensions>
    <configuration>
        <manifestLocation>META-INF</manifestLocation>
        <instructions>
            <Bundle-SymbolicName>${project.artifactId};singleton:=true</Bundle-SymbolicName>
            <Bundle-Name>${project.name}</Bundle-Name>
            <Bundle-Version>${project.version}</Bundle-Version>
            <Import-Package>
                javax.net;resolution:=optional,
                javax.net.ssl;resolution:=optional
            </Import-Package>
            <Export-Package>my.project.package</Export-Package>
        </instructions>
    </configuration>
</plugin>

Как принудительно выполнить компиляцию с помощью Tycho? Или есть другой способ сделать то, что мне нужно?


person Alessandro Da Rugna    schedule 11.03.2015    source источник
comment
Если ваши зависимости находятся в репозитории P2, вам лучше использовать Tycho и упаковку eclipse-plugin. Это создаст jar-файл пакета OSGi для каждого проекта. Что ты хочешь делать после этого? Что вы имеете в виду под single Deployment Package? (zip, P2, какой-то конкретный пакет контейнера?)   -  person Nick Wilson    schedule 11.03.2015
comment
Я хочу упаковать множество проектов (= пакеты OSGi) в один файл .dp. Пакет развертывания определен в Компендиум сервисной платформы OSGi, параграф 114 Спецификация администратора развертывания. По сути, возьмите все эти банки и поместите их в большую банку: это дп.   -  person Alessandro Da Rugna    schedule 11.03.2015
comment
Я не знаю ни о какой поддержке администратора развертывания в существующих плагинах maven, ни о каких-либо контейнерах, которые его используют. Если вы хотите упаковать свои пакеты таким образом, maven assembly plugin может быть вариантом.   -  person Nick Wilson    schedule 11.03.2015
comment
Спасибо за подсказку, тогда буду копаться в maven assembly plugin. Я могу создавать DP вручную, поэтому я почти уверен, что делаю правильно... с другой стороны, это противоречит всей цели использования Maven.   -  person Alessandro Da Rugna    schedule 11.03.2015
comment
Как коммиттер Tycho, я никогда не слышал о необходимости создавать пакеты развертывания. Если вы хотите продвигать требование, вам следует открыть запрос на улучшение в системе отслеживания проблем Tycho.   -  person oberlies    schedule 20.03.2015


Ответы (1)


Этот ответ может прийти немного поздно, но недавно я создал плагин Maven «de.dentrassi.maven:osgi-dp», который может создавать эти «DP».

См.: https://ctron.github.io/osgi-dp/plugin-info.html

Вы можете либо создать специализированную упаковку «dp», либо повторно использовать метаданные функции Eclipse Tycho:

<plugin>
    <groupId>de.dentrassi.maven</groupId>
    <artifactId>osgi-dp</artifactId>
    <executions>
        <execution>
            <goals>
                <goal>build</goal>
            </goals>
        </execution>
    </executions>
</plugin>

Полный пример использования Tycho для компиляции и «osgi-dp» для создания пакета развертывания см. в интеграционный тест на GitHub.

person ctron    schedule 26.09.2016