Как да създавам 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. Това ще създаде OSGi bundle jar за всеки проект. Какво искаш да правиш след това? Какво имаш предвид под single Deployment Package? (zip, P2, някакъв специфичен пакет за контейнер?)   -  person Nick Wilson    schedule 11.03.2015
comment
Искам да пакетирам много проекти (=OSGi пакети) в един .dp файл. Пакетът за внедряване е дефиниран в Компендиум на услугите на OSGi Service Platform, параграф 114 Спецификация на администратора за разполагане. По принцип вземете всички тези буркани и ги сложете в голям буркан: това е dp.   -  person Alessandro Da Rugna    schedule 11.03.2015
comment
Не знам за никаква поддръжка за Deployment Admin в съществуващи плъгини за 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