J'ai deux projets, Toutefois, Je souhaite que le dans d'autres mots, au lieu d'avoir le contenu de la guerre suivant: p> i Voulez-vous avoir que: P> my-lib code> et
mon-webapp code>. Le premier projet est une dépendance de
My-webApp code>. Ainsi, lorsque vous demandez à Maven2 de construire ma guerre, le JAR
MY-LIB CODE> est ajouté dans le répertoire
Web-INF / LIB / CODE> de l'application Web.
my-lib code> JAR soit décompressé directement dans le répertoire
web-inf / classes code>, comme si les sources
my-lib code> étaient contenu dans le projet
mon-webapp code>. p>
my-webapp/
...
WEB-INF/
classes/
my-lib files
lib/
... (others third libraries)
5 Réponses :
Le Débattre Mojo semble être proche à ce que vous visez. Je ne sais pas comment compléter le flux complet que vous proposez cependant. P>
(BTW, je suis douteux que cela soit une bonne idée. Les classes utilitaires devraient entrer dans des pots et que les pots sont mis en guerre ou l'oreille. Déballage des pots d'utilité semble tort) P>
En ce qui concerne votre commentaire: je veux seulement déballer ma bibliothèque i>, pas les autres. Je tiens à le faire à cause des fichiers de propriétés, qui peuvent être modifiés. Pour le moment, ces fichiers sont stockés dans le fichier My-Lib.jar, et si vous souhaitez modifier l'un des fichiers, vous devez décompresser le bocal, modifier le fichier, puis remballer le pot ...
Ne pouviez-vous pas simplement poser un correctif dans le répertoire des classes lorsque vous modifiez un fichier?
Utilisation de ce plugin, j'ai abouti à décompresser le bocal dans le répertoire Web-Inf / Classes. Cependant, j'ai aussi le My-Lib.jar dans le Web-Inf / Lib / Répertoire ...
[Oups, vient de réaliser que vous utilisiez Maven. Je ne supprime pas cette réponse car elle peut arriver à la rescousse de certains utilisateurs de fourmis. Donc, il n'y a pas besoin de me modeler ...]
Combien de fois je dois mentionner que mérite également d'un essai est avec JAR code>,
guerre code> et
oreille code> Les tâches des fourmis sont sous-éléments du ZIP un? :-) Si je me souviens bien, quelque chose comme ça ferait le truc: p>
src = "myLib.jar" code > Mais je n'ai pas testé cette option. p> p>
AS la réponse de BLAUFISH, vous pouvez utiliser le plugin de dépendance Maven-Dépendance- Déballez Mojo pour déballer un artefact. Cependant, pour éviter le pot figurant dans Web-Inf / Lib, vous devez ne pas la spécifier comme une dépendance em>, et configurez plutôt le plugin sur Déballez des artefacts spécifiques . La configuration suivante déballera le contenu de certains.group.id LIB: 1.0: JAR dans la cible / classes pendant la phase de traitement des ressources, même si l'artefact n'est pas défini comme une dépendance. Soyez prudent lorsque cela le faisait car il existe un potentiel de clobber votre contenu réel, cela peut causer beaucoup de débogage. P> <plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<id>unpack-my-lib</id>
<phase>process-resources</phase>
<goals>
<goal>unpack</goal>
</goals>
<configuration>
<artifactItems>
<artifactItem>
<groupId>some.group.id</groupId>
<artifactId>my-lib</artifactId>
<version>1.0</version>
<type>jar</type>
<overWrite>false</overWrite>
</artifactItem>
</artifactItems>
<outputDirectory>${project.build.outputDirectory}</outputDirectory>
<overWriteReleases>false</overWriteReleases>
</configuration>
</execution>
</executions>
</plugin>
De plus, il vaut mieux ajouter My-Lib parmi des dépendances ordinaires dans fourni code> portée; Si votre guerre a des cours qui compilent contre cela, c'est un must. Et, supprimez la version du
artifactitem code>, telle qu'elle sera prise à partir de la dépendance.
Définition de la portée My-LIB à fournir exclut les DEP transitifs pour moi avec Maven 3.0.4. La question est maintenant de savoir comment utiliser My-LIB pour la compilation tout en ajoutant uniquement des contenus extraits et des dépendances transitives à la guerre.
J'ai pu utiliser le déballage Mojo comme décrit ci-dessus, plus j'ai marqué la dépendance elle-même comme " fourni "(portée) pour éviter de faire dupliquer le contenu du pot sous Web-Inf / Lib. P>
Vous pouvez configurer le plugin de dépendance maven-dépendance pour le faire, déballer au lieu de copier un bocal comme expliqué ici .
<project> [...] <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-dependency-plugin</artifactId> <version>2.5.1</version> <executions> <execution> <id>unpack</id> <phase>package</phase> <goals> <goal>unpack</goal> </goals> <configuration> <artifactItems> <artifactItem> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <type>jar</type> <overWrite>false</overWrite> <outputDirectory>${project.build.directory}/alternateLocation</outputDirectory> <destFileName>optional-new-name.jar</destFileName> <includes>**/*.class,**/*.xml</includes> <excludes>**/*test.class</excludes> </artifactItem> </artifactItems> <includes>**/*.java</includes> <excludes>**/*.properties</excludes> <outputDirectory>${project.build.directory}/wars</outputDirectory> <overWriteReleases>false</overWriteReleases> <overWriteSnapshots>true</overWriteSnapshots> </configuration> </execution> </executions> </plugin> </plugins> </build> [...] </project>