2009-09-07 7 views
4

J'ai commencé à travailler sur un projet qui, à l'heure actuelle, génère un fichier JAR monolithique à partir d'un projet Eclipse. Fondamentalement, il existe un script Ant qui s'exécute à chaque fois que le Java Builder Eclipse s'exécute et prend la sortie de l'Eclipse Java Builder (les fichiers .class) et les empaquette dans un fichier JAR. Ce fichier JAR est ensuite placé dans un répertoire commun afin que d'autres outils puissent le récupérer pour la dernière version.Création de fichiers JAR multiples à partir du projet Eclipse

Cela fonctionne bien pour l'équipe, donc je ne veux pas trop le changer, mais il y a beaucoup de fichiers inutiles dans ce fichier JAR qui le rendent beaucoup plus grand que nécessaire. Je me demandais s'il était possible, dans le même type de cadre que je l'ai décrit ci-dessus (Eclipse + Ant), de scinder le gros fichier JAR en fichiers JAR plus petits et plus maniables. Par exemple:

com.company.project.thing1 com.company.project.thing2 com.company.project.thing3

Les trois choses sont emballés dans le JAR. Au lieu de cela, je veux seulement que thing1 et thing2 dans un fichier JAR et thing3 soient dans un deuxième fichier JAR. Je me suis rendu compte que je pouvais avoir des projets séparés, mais je voulais voir s'il était possible de garder le projet groupé ensemble, car cela a du sens. Toute aide serait très appréciée.

Merci.

Par demande, la construction Ant Script (je n'inclus la tâche jar - l'autre est juste un endroit propre):

<target name="jar" description="Deploys the JAR file." depends="clean"> 
    <mkdir dir="${dir.dist}"> 

    <!-- Build the JAR file containing the classes. --> 
    <jar destfile="${dir.dist}/${build.name}.jar"> 

     <!-- Generate the MANIFEST.MF file. --> 
     <manifest> 
      <attribute name="Built-By" value="${user.name}" /> 
      <attribute name="Release-Version" value=${version}" /> 
     </manifest> 

     <zipfileset dir="${dir.build}" /> 
    </jar> 
</target> 

Répondre

3

si vous utilisez l'installation includes du zipfileset (et certains macrodef magique), vous pourriez vous retrouver avec quelque chose comme ce qui suit:

<macrodef name="packaging"> 
    <attribute name="package"/> 
    <sequential> 
     <jar destfile="${dir.dist}/${build.name}[email protected]{package}.jar"> 
      <manifest> 
       <attribute name="Built-By" value="${user.name}"/> 
       <attribute name="Release-Version" value=${version}"/> 
      </manifest> 

      <zipfileset dir="${dir.build}" includes="com/acme/@{package}/**/> 
     </jar> 
    </sequential> 
</macrodef> 

<packaging package="package1"/> 
<packaging package="package2"/> 
<packaging package="package3"/> 
+1

C'est parfait, merci! Je ne connaissais pas macrodef - merci de m'avoir montré ça aussi (+1). – JasCav

0

Pouvez-vous coller le contenu de votre fichier build.xml (celui utilisé par Ant)?

C'est très simple ce que vous avez à faire, mais montrez-nous le fichier de construction afin que nous puissions vous aider.

OU .. lu par vous-même sur Ant jar task

+0

J'ai ajouté il. Je comprends la tâche JAR, mais je ne suis pas sûr de comprendre comment l'utiliser dans le contexte de savoir comment extraire des parties spécifiques de la construction Eclipse. C'est ce qui me donne quelques difficultés. – JasCav

Questions connexes