devstory

Créer un projet Java OSGi avec Maven et Tycho

  1. Introduction
  2. Créer rapidement OSGi Project (SimpleOSGi)
  3. Exécuter  OSGi (SimpleOSGi)
  4. Créer rapidement un Projet Maven (SimpleMaven)
  5. Créer Projet  MavenParent
  6. Configurer le projet OSGi (SimpleOSGi)
  7. Configuration le projet Maven (SimpleMaven)
  8. Configuration Maven Parent
  9. Building

1. Introduction

Ce document est basé sur :
  • Eclipse 3.4 (LUNA)
  • Tycho 0.20.0
Tout d'abord, vous devez vous assurer que vous avez installé Tycho sur Eclipse. Si vous ne l'avez pas installé, vous pouvez voir les instructions ici

2. Créer rapidement OSGi Project (SimpleOSGi)

Tout d'abord, nous créons rapidement un projet OSGi de manière habituelle.
Saississez :
  • Version: 2.0.0.qualifier
  • Activator: org.o7planning.tutorial.simpleosgi.Activator
Add:
  • org.eclipse.osgi
  • org.eclipse.equinox.console
  • org.apache.felix.gogo.command
  • org.apache.felix.gogo.runtime
  • org.apache.felix.gogo.shell
Activator.java
package org.o7planning.tutorial.simpleosgi;

import org.osgi.framework.BundleActivator;
import org.osgi.framework.BundleContext;

public class Activator implements BundleActivator {

   private static BundleContext context;

   static BundleContext getContext() {
       return context;
   }

   public void start(BundleContext bundleContext) throws Exception {
       Activator.context = bundleContext;
       System.out.println("SimpleOSGi Started");
   }


   public void stop(BundleContext bundleContext) throws Exception {
       Activator.context = null;
       System.out.println("SimpleOSGi Stopped");
   }

}

3. Exécuter  OSGi (SimpleOSGi)

Nous allons configurer rapidement et exécuter ce projet OSGi, afin de voir que le statut de l'OSGi créé est bon.
Cliquez sur le bouton droit sur project SimpleOSGi, sélectionnez "Run As/Run Configuration.."
L'exécution OSGi pour obtenir des résultats réussis.

4. Créer rapidement un Projet Maven (SimpleMaven)

Ensuite, nous créerons rapidement Maven Project. Nos buts est que nous allons construire deux projets projet Maven & projet Osgi utilisant Maven &Tycho. Et nous allons trouver que les deux projets sont traités de la même manière.
CheckNumeric.java
package org.o7planning.tutorial.simplemaven;

import org.apache.commons.lang3.StringUtils;

public class CheckNumeric {

   public static void main(String[] args) {
       String text1 = "0123a4";
       String text2 = "01234";

       boolean result1 = StringUtils.isNumeric(text1);
       boolean result2 = StringUtils.isNumeric(text2);

       System.out.println(text1 + " is a numeric? " + result1);
       System.out.println(text1 + " is a numeric? " + result2);
   }
}
pom.xml
<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>org.o7planning</groupId>
   <artifactId>SimpleMaven</artifactId>
   <version>3.0.0-SNAPSHOT</version>


   <dependencies>
       <dependency>
           <groupId>org.apache.commons</groupId>
           <artifactId>commons-lang3</artifactId>
           <version>3.3.2</version>
       </dependency>
   </dependencies>

</project>

5. Créer Projet  MavenParent

L'objectif de la création ce projet est de configurer Maven&Tycho pour construire deux projets sur (SimpleOSGi&SimpleMaven)
Créez un projet Java normal

6. Configurer le projet OSGi (SimpleOSGi)

D'abord, nous avons convertir le projet SimpleOSGi en projet Maven. Maintenant, SimpleOSGi est à la fois un projet OSGi et un projet Maven.
Le projet a été converti en projet Maven et a un message d'erreur, n'en sois pas inquiet.
Notez que si la version de configuration de votre projet OSGi est celle de AAA et et le suffixe est qualifier, alors sur Maven, vous devez également configurer dans le fichier pom.xml, la version AAA et le suffixe SNAPSHOT. Comme l'illustration ci-dessous.
Ouvrez le fichier pom.xml et reconfigurez - le comme suivant :
SimpleOSGi/pom.xml
<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>org.o7planning</groupId>
<artifactId>SimpleOSGi</artifactId>
<version>2.0.0-SNAPSHOT</version>
<packaging>eclipse-plugin</packaging>


    <parent>  
      <groupId>org.o7planning</groupId>
      <artifactId>MavenParent</artifactId>
      <version>1.0.0</version>
      <relativePath>../MavenParent/pom.xml</relativePath>
  </parent>
 
</project>

7. Configuration le projet Maven (SimpleMaven)

Ouvrez le fichier pom.xml sur le projet SimpleMaven et ajoutez le code suivant :
**
<parent>  
       <groupId>org.o7planning</groupId>
       <artifactId>MavenParent</artifactId>
       <version>1.0.0</version>
       <relativePath>../MavenParent/pom.xml</relativePath>
   </parent>
SimpleMaven/pom.xml
<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>org.o7planning</groupId>
   <artifactId>SimpleMaven</artifactId>
   <version>3.0.0-SNAPSHOT</version>


   <dependencies>
       <dependency>
           <groupId>org.apache.commons</groupId>
           <artifactId>commons-lang3</artifactId>
           <version>3.3.2</version>
       </dependency>
   </dependencies>
   
   <parent>
       <groupId>org.o7planning</groupId>
       <artifactId>MavenParent</artifactId>
       <version>1.0.0</version>
       <relativePath>../MavenParent/pom.xml</relativePath>
   </parent>
   
</project>

8. Configuration Maven Parent

MavenParent/pom.xml
<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>org.o7planning</groupId>
 <artifactId>MavenParent</artifactId>
 <version>1.0.0</version>
 <packaging>pom</packaging>


     <properties>
       <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
       <!-- 0.22.0 : Target location type: Directory is not supported -->
       <tycho-version>0.22.0</tycho-version>
   </properties>


   <repositories>
       <!-- Select the P2 repository to be used when resolving dependencies -->

       <repository>
           <id>eclipse-luna</id>
           <layout>p2</layout>
           <url>http://download.eclipse.org/releases/luna</url>
       </repository>

   </repositories>

   <pluginRepositories>
       <pluginRepository>
           <id>tycho-snapshots</id>
           <url>https://oss.sonatype.org/content/groups/public/</url>
       </pluginRepository>
   </pluginRepositories>
   
   <build>
       <plugins>
           <plugin>
               <!-- enable tycho build extension -->
               <groupId>org.eclipse.tycho</groupId>
               <artifactId>tycho-maven-plugin</artifactId>
               <version>${tycho-version}</version>
               <extensions>true</extensions>
               <configuration>
                   <dependency-resolution>
                       <optionalDependencies>ignore</optionalDependencies>
                   </dependency-resolution>
               </configuration>
           </plugin>

           <plugin>
               <groupId>org.eclipse.tycho</groupId>
               <artifactId>tycho-versions-plugin</artifactId>
               <version>${tycho-version}</version>
               <configuration>
                   <dependency-resolution>
                       <optionalDependencies>ignore</optionalDependencies>
                   </dependency-resolution>
               </configuration>
           </plugin>
<!--
           <plugin>
               <groupId>org.eclipse.tycho</groupId>
               <artifactId>target-platform-configuration</artifactId>
               <version>${tycho-version}</version>
               <configuration>
                   <target>
                       <artifact>
                           <groupId>org.o7planning</groupId>
                           <artifactId>TargetPlatform</artifactId>
                           <version>1.0.0</version>
                       </artifact>
                   </target>
               </configuration>
           </plugin>
-->
           
       </plugins>
   </build>

   <modules>  
       <module>../SimpleMaven</module>
       <module>../SimpleOSGi</module>      
   </modules>
   
       
</project>

9. Building

Cliquez sur le bouton droit du MavenParent et sélectionnez Run As / Maven Install.