Bonjour,

J'essaie de créer un bundle OSGi à partir de Ant en me basant sur un tout petit projet Maven. (cf. deploying a POJO into Fuse ESB 4.2, les sources sont sur la page).

Enfin bref, même sans regarder les sources, voici l'arbo du projet:
  • src
    • main
      • java
        • com
          • progress
            • pso
              • payments_api
                • PaymentsApi.java
      • resources
        • META-INF
          • spring
            • bundle-context.xml
            • bundle-context-osgi.xml
        • log4j.properties
    • test


Quand je crée mon jar via maven, ça me récupère tous les fichiers/dossiers du dossier recources et ça me les places à la racine du jar.

Comment je fais pour le faire avec Ant ?

Voilà où j'en suis :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
<?xml version="1.0" encoding="utf-8" ?>
<project name="payments-api" basedir="." default="main">
  <property name="src.dir"     value="src/main/java"/>
  <property name="build.dir"   value="build"/>
  <property name="classes.dir" value="${build.dir}/classes"/>
  <property name="dist.dir"     value="${build.dir}/dist"/>
  <property name="lib.dir"     value="lib"/>
  <property name="version"     value="0.0.1-SNAPSHOT"/>
 
  <path id="classpath">
    <fileset dir="${lib.dir}" includes="**/*.jar"/>
  </path>
 
  <target name="clean">
    <delete dir="${build.dir}"/>
  </target>
 
  <target name="compile">
    <mkdir dir="${classes.dir}"/>
    <javac srcdir="${src.dir}" destdir="${classes.dir}" classpathref="classpath"/>
  </target>
 
  <target name="dist" depends="compile">
    <mkdir dir="${dist.dir}"/>
    <jar destfile="${dist.dir}/${ant.project.name}-${version}.jar" basedir="${classes.dir}" manifest="META-INF/MANIFEST.MF">
      <manifest>
        <attribute name="Bundle-Name" value="${ant.project.name}"/>
        <attribute name="Bundle-Version" value="${version}"/>
      </manifest>
    </jar>
  </target>
 
  <target name="run" depends="dist">
    <java fork="true">
      <classpath>
        <path refid="classpath"/>
        <path location="${dist.dir}/${ant.project.name}-${version}.jar"/>
      </classpath>
    </java>
  </target>
 
  <target name="clean-build" depends="clean,dist"/>
  <target name="main" depends="clean,run"/>
</project>
Petite question aussi au passage... Comment je fais pour que mon manifest soit généré à la volée et inséré dans le Jar.

Je suis sûr que c'est pas trop compliqué, mais je sais même pas quoi chercher surtout sur Google...

Merci d'avance.

PS : En fait mon .jar va simplement contenir tout ce qui se trouve dans le dossier java (sous forme compilé) et tout ce qui se trouve dans le dossier resources... "côte à côté"...