Import various versions of a same Maven project in a unique workspace in Eclipse

By Pierre-Arnaud Marcelot

Eclipse is one of the best Java IDE for a long time now. However, throughout its evolutions, one relatively important feature is still lacking: the ability to import a same project more than one. More precisely the ability to import a project with same name more than once.

This is particularly useful, not to import the exact same project, but to import various revisions of a same project in order to have them available in the workspace at once. A use of this could be importing a version of the project from trunk and another one from specific branch.

The trick is to define on the parent pom (if it’s a multi-modules project) a profile allowing to append to the name of the projects a user-provided string.

Here is the profile, append-to-project-name, we are using on our projects:

  <profiles>
    <!-- Specific profile used to append a string to project name -->
    <profile>
      <id>append-to-project-name</id>
      <activation>
        <property>
          <name>append.to.project.name</name>
        </property>
      </activation>
      <build>
         <plugins>
          <plugin>
            <artifactId>maven-eclipse-plugin</artifactId>
            <configuration>
              <projectNameTemplate>
                [artifactId]-${append.to.project.name}
              </projectNameTemplate>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </profile>
  </profiles>

This profile is used during the generation of Eclipse project descriptors files using the following command line:

mvn eclipse:eclipse -Dappend.to.project.name=[string]

The last thing to do after that is importing the projects in Eclipse.

Importer différentes versions d’un même projet Maven au sein d’un unique workspace dans Eclipse

By Pierre-Arnaud Marcelot

Eclipse est l’un des meilleurs IDE Java depuis un grand nombre d’année. Cependant, au fil des évolutions, une fonctionnalité relativement importante lui fait toujours défaut : la possibilité d’importer un même projet plus d’une fois. Plus précisément la possibilité d’importer un projet avec le même nom plus d’une fois.

Cela est particulièrement utile, non pas pour importer exactement le même projet, mais pour importer différentes révisions d’un même projet afin de les avoir disponibles dans le workspace au même instant. On peut imaginer vouloir importer une version du projet à partir du trunk et une autre version à partir d’une branche particulière.

L’astuce est de définir au niveau du pom parent de son projet (s’il s’agit d’un projet multi-modules) un profil permettant d’ajouter aux noms des projets une extension définissable par l’utilisateur.

Voici le profil, append-to-project-name, que nous avons défini pour nos projets:

  <profiles>
    <!-- Specific profile used to append a string to project name -->
    <profile>
      <id>append-to-project-name</id>
      <activation>
        <property>
          <name>append.to.project.name</name>
        </property>
      </activation>
      <build>
         <plugins>
          <plugin>
            <artifactId>maven-eclipse-plugin</artifactId>
            <configuration>
              <projectNameTemplate>
                [artifactId]-${append.to.project.name}
              </projectNameTemplate>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </profile>
  </profiles>

Ce profil est utilisé lors de la génération des fichiers de description de projet Eclipse via la ligne de commande suivante:

mvn eclipse:eclipse -Dappend.to.project.name=[string]

Il ne reste plus qu’ensuite à importer les projets dans Eclipse.

Compilation de OpenLDAP sur Ubuntu

By Emmanuel Lécharny

Il est facile d’installer OpenLDAP sous Ubuntu, en suivant les instructions données par exemple sur openldap-server.html. Le seul soucis est que la version de OpenLDAP proposée est généralement une version stable (ici, il s’agit de la 2.4.23), et vous avez parfois envie de disposer de la toute dernière version. De plus, la version packagée dépend également de versions de composants également anciens (BDB 4.8 au lieu de 5.1.25, OpenSSL 0.9.8o au lieu de 1.0.0d, etc)

Voici un mode d’emploi décrivant la compilation des toutes dernières versions de chacun des composants nécessaires.

1 ) Prérequis
Il faut vérifier de la disponibilité des outils nécessaires à la compilation des composants. En voici la liste :

  • Gnu GCC
  • ld
  • make
  • libperl (si vous décidez de lancer les tests)

2 ) Système

On va créer un utilisateur dédié, openldap, appartenant au même groupe :

$ sudo /usr/sbin/groupadd -g 55 openldap
$ sudo /usr/sbin/useradd -u 55 -g 55 -d /home/openldap -s /bin/bash openldap

(ici, le numéro du user et du groupe a été arbitrairement fixé à 55, vous sélectionnerez la valeur adaptée, ou demanderez à l’administrateur système de vous créer ce user)

3 ) Chemins d’installation

On installera les composants dans le répertoire /opt/ldap.

Les composants seront stockés et la compilation sera effectuée dans le home directory du user openldap, dans lequel on créera deux sous répertoires :

  • /home/openldap/packages
  • /home/openldap/install

4 ) Sources

Ensuite, il faut récupérer les sources des composants suivants :

Ces packages seront téléchargés dans le répertoire /home/openldap/packages.

5 ) Compilation de OpenSSL

Voici les commandes à utiliser :

# su – openldap
$ pwd
/home/openldap
$ cd install
$ tar xzpf ../packages/openssl-1.0.0d.tar.gz
$ cd openssl-1.0.0d
$ ./Configure shared \
--prefix=/opt/ldap/openssl-1.0.0d \
--openssldir=/opt/ldap/openssl-1.0.0d \
threads \
linux-generic32
$ make depend
$ make
$ make test
$ sudo make install
$ sudo chown -R openldap.openldap /opt/ldap/openssl-1.0.0d
$ cd ..
$ rm -rf openssl-1.0.0d

Cette version de OpenSSL sera désormais celle qui sera utilisée dans la compilation des composants suivants.

6 ) Compilation de CysrusSASL

Voici les commandes à utiliser :

<note>On est obligé de lancer la commande make deux fois de suite, un bug dans le build génère une erreur lors du premier lancement</note>

# su – openldap
$ pwd
/home/openldap
$ cd install
$ tar xzpf ../packages/cyrus-sasl-2.1.23.tar.gz
$ cd cyrus-sasl-2.1.23
$ CFLAGS="-O2" ./configure \
--enable-static \
--without-des \
--without-saslauthd \
--enable-gssapi=/usr/kerberos/ \
--with-openssl=/opt/ldap/openssl-1.0.0d \
--prefix=/opt/ldap/cyrusSASL-2.1.23
$ make all
$ make
$ sudo make install
$ sudo chown -R openldap.openldap /opt/ldap
$ cd ..
$ rm -rf cyrus-sasl-2.1.23

7 ) Compilation de BerkeleyDB

Voici les commandes à utiliser :

# su – openldap
$ pwd
/home/openldap
$ cd install
$ tar xzpf ../packages/db-5.1.25.tar.gz
$ cd db-5.1.25
$ cd build_unix
$ ../dist/configure \
--prefix=/opt/ldap/db-5.1.25 \
--with-mutex=POSIX/pthreads
$ make
$ sudo make install
$ sudo chown -R openldap.openldap /opt/ldap
$ cd ../..
$ rm -rf db-5.1.25

8 ) Compilation de OpenLDAP

Il nous reste à compiler OpenLDAP, en utilisant les composants que l’on vient de construire. Voici les commandes à utiliser :

<note>Les options utilisées peuvent être modifiées en fonction des besoins</note>

# su – openldap
$ pwd
/home/openldap
$ cd install
$ tar xzpf ../packages/openldap-2.4.24.tgz
$ cd openldap-2.4.24
$ export CPPFLAGS="-I/opt/ldap/db-5.1.25/include -I/opt/ldap/openssl-1.0.0d/include -I/opt/ldap/cyrusSASL-2.1.23/include"
$ export LDFLAGS="-L/opt/ldap/db-5.1.25/lib -L/opt/ldap/openssl-1.0.0d/lib -L/opt/ldap/cyrusSASL-2.1.23/lib"
$ export LD_LIBRARY_PATH="/opt/ldap/db-5.1.25/lib:/opt/ldap/openssl-1.0.0d/lib:/opt/ldap/cyrusSASL-2.1.23/lib"
$ ./configure \
--prefix=/opt/ldap/openldap-2.4.24/ \
--sysconfdir=/opt/ldap/openldap-2.4.24/etc \
--localstatedir=/var/ldap \
--enable-debug=yes \
--enable-syslog=yes \
--enable-proctitle=yes \
--enable-ipv6=yes \
--enable-local=yes \
--enable-slapd=yes \
--enable-dynacl=yes \
--enable-aci=yes \
--enable-cleartext=yes \
--enable-crypt=yes \
--enable-spasswd=yes \
--enable-rewrite=yes \
--enable-bdb=yes \
--enable-hdb=yes \
--enable-monitor=yes \
--enable-overlays=yes \
--with-cyrus-sasl=yes \
--with-tls=openssl \
--with-threads=yes
$ make depend
$ make
$ make test
$ sudo make install
$ sudo chown -R openldap.openldap /opt/ldap
$ cd ..
$ rm -rf openldap-2.4.24

Cela clôt la description de la compilation de OpenLDAP, il reste à configurer le serveur pour qu’il puisse être utilisable.