Inizia cambiando solo le voci MANIFEST.MF in modo tale che tutti i tuoi artefatti diventino pacchetti - ovviamente non funzioneranno magicamente ma è un buon primo passo non distruttivo.
Quando si utilizza il Maven-fascio-plugin assicurarsi di impostare extensions
e supportedProjectTypes
come si possono avere problemi con CI costruisce, pronti contro termine e Maven M2E mancanza se il tipo di confezione è bundle
(vedi fine).
Verificare le dipendenze esterne riskiest/core in anticipo, ad esempio se si utilizza JPA per la persistenza, quindi assicurarsi che il provider funzioni in un ambiente OSGi con il pacchetto di domini e il driver JDBC.
Se si sta migrando da Java EE/primavera guardate Karaf o Virgo. Ma se i tuoi componenti sono per sistemi embedded o non hanno dipendenze esterne, Felix o Equinox potrebbero essere sufficienti (anche se controlla il progetto pax-url se è così).
Potrebbe valere la pena di modificare la tua domanda per essere un po 'più specifico sul dominio/tecnologie?
eclissi: eclissi genera solo che quando il progetto è configurato prima, i problemi del ciclo di vita del M2E potrebbe essere un po 'di dolore, ma è molto meglio che utilizzare il vecchio tappo di eclissi.
Quanto segue aggiungerà voci manifest ai tuoi artefatti esistenti senza modificarli in altro modo. Indica al plugin standard maven jar e war di usare MANIFEST.MF generato da maven-bundle-plugin.
mettere questo nel POM genitore:
<pluginManagement>
<plugin>
<groupId>org.apache.felix</groupId>
<artifactId>maven-bundle-plugin</artifactId>
<version>2.3.7</version>
<extensions>true</extensions>
<configuration>
<archive>
<addMavenDescriptor>true</addMavenDescriptor>
</archive>
<supportedProjectTypes>
<supportedProjectType>jar</supportedProjectType>
<supportedProjectType>war</supportedProjectType>
</supportedProjectTypes>
<instructions>
<Built-By>${project.organization.name}</Built-By>
<Bundle-Vendor>${project.organization.name}</Bundle-Vendor>
<Bundle-ContactAddress>${project.organization.url}</Bundle-ContactAddress>
<Bundle-Description>${project.description}</Bundle-Description>
<Bundle-DocURL>${bundle.doc.url}</Bundle-DocURL>
<Bundle-Category>${bundle.category}</Bundle-Category>
<Bundle-SymbolicName>${project.artifactId}</Bundle-SymbolicName>
<Bundle-Version>${project.version}</Bundle-Version>
<Import-Package>*</Import-Package>
<Export-Package>*</Export-Package>
</instructions>
</configuration>
<executions>
<execution>
<id>bundle</id>
<goals>
<goal>manifest</goal>
</goals>
<phase>prepare-package</phase>
<inherited>true</inherited>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.3.1</version>
<configuration>
<archive>
<manifestFile>${project.build.outputDirectory}/META-INF/MANIFEST.MF</manifestFile>
</archive>
</configuration>
</plugin>
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>2.1.1</version>
<executions>
<execution>
<id>create-war</id>
<phase>package</phase>
<goals>
<goal>war</goal>
</goals>
<inherited>true</inherited>
</execution>
</executions>
<configuration>
<archive>
<manifestFile>${project.build.outputDirectory}/META-INF/MANIFEST.MF</manifestFile>
</archive>
</configuration>
</plugin>
</pluginManagement>
Poi, nel POMs bambino, si può semplicemente fare:
<build>
<plugins>
<plugin>
<groupId>org.apache.felix</groupId>
<artifactId>maven-bundle-plugin</artifactId>
</plugin>
<!-- Below is mutually exclusive: Either jar or war plugin -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
</plugin>
</plugins>
</build>
Ho due opzioni per eseguire questi pochi pacchetti 1) in Embedded Felix witin WAR 2) Witin WAB –
Ho aggiornato il mio post con le tecnologie. Hai provato Tycho? –
Post molto informativo: il contenuto POM è particolarmente utile, grazie al nostro auricolare. Nota per gli utenti: è necessario commentare la sezione del plugin maven-war se è in esecuzione su un JAR, altrimenti l'obiettivo del pacchetto fallirà. – KomodoDave