Problème avec la création d'assemblage
Dans mon projet, je m, en créant de nombreux assemblages(4-5) et ils sont de sortie à la cible.1/2 de ces assemblées ne prennent pas leur finale de noms(ou assemblée id) , mais aussi par le format artifactID-version.jar..C'est très déroutant
Pourquoi est-ce donc?
Des extraits de mon 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/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.apple</groupId>
<artifactId>maven</artifactId>
<name>maven_XX</name>
<version>0.0.1-SNAPSHOT</version>
<build>
<plugins>
<!-- Added to avoid the compilation issue wrt Annotations -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.5</source>
<target>1.5</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.4.2</version>
<configuration>
<skip>true</skip>
</configuration>
</plugin>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.2-beta-4</version>
<executions>
<execution>
<id>clientjar</id>
<phase>compile</phase>
<goals>
<goal>single</goal>
</goals>
<configuration>
<finalName>XX_client</finalName>
<appendAssemblyId>false</appendAssemblyId>
<descriptors>
<descriptor>
${basedir}/src/main/resources/assemblies/clientjar.xml
</descriptor>
</descriptors>
</configuration>
</execution>
<execution>
<id>11***</id>
<phase>compile</phase>
<goals>
<goal>single</goal>
</goals>
<configuration>
<finalName>11server</finalName>
<appendAssemblyId>false</appendAssemblyId>
<descriptors>
<descriptor>
${basedir}/src/main/resources/assemblies/11server.xml
</descriptor>
</descriptors>
<outputDirectory>assemblies-target</outputDirectory>
</configuration>
</execution>
<execution>
<id>cache</id>
<phase>compile</phase>
<goals>
<goal>single</goal>
</goals>
<configuration>
<finalName>cache</finalName>
<appendAssemblyId>false</appendAssemblyId>
<descriptors>
<descriptor>
${basedir}/src/main/resources/assemblies/cache.xml
</descriptor>
</descriptors>
<outputDirectory>assemblies-target</outputDirectory>
</configuration>
</execution>
Sa n'est pas aléatoire.assemblées spécifiques ne sont pas la suite. Sortie attendue pour chaque est jar avec nom final. Mais je me débrouille comme Projet name-version.jar
OriginalL'auteur user170114 | 2009-10-05
Vous devez vous connecter pour publier un commentaire.
Tirant Lyles'en commentaire à la question du niveau de fournir de la visibilité.
Alors que la réponse précédente œuvres Lyle souligne que:
Pour des objets qui ne sont pas fixés pour le dépôt de distribution c'est une bonne solution et a bien fonctionné pour moi.
OriginalL'auteur Peter Kahn
Lorsque vous exécutez l'assemblée, voyez-vous quelque chose comme cette sortie de la console par Maven?:
Cela se produit parce que tous vos assemblées spécifier
<appendAssemblyId>false</appendAssemblyId>
et pas de classificateur est spécifié. Le classificateur est obsolète dans la version 2.2 beta-4 à la version est ignoré de toute façon, c'est un bug/feature dans le plugin.En conséquence, Maven, ce sera toujours l'une des assemblées de la "main" de l'artefact pour le pot de l'emballage, et vous ne le voyez pas dans votre cible-ensembles répertoire.
Pour contourner cela, vous pouvez spécifier que votre projet a
pom
emballage, puis de lier les objectifs pour le pot du cycle de vie de la pom.Pour permettre à l'
process-resources
etcompile
objectifs vous serait de changer l'emballage, àpom
, ajoutez la configuration suivante pour votre pom, et exécuter le cycle de vie standard d'objectifs. Par exemplemvn package
oumvn install
.La liste complète des objectifs liés à la jarre du cycle de vie peuvent être trouvés dans la Construit dans le Cycle de vie des Liaisons section de la Introduction à la construction du Cycle de vie. Ils ont tous suivi une tendance similaire à la
process-resources
etcompile
objectifs. Dans votre cas, vous voudrez probablement pour omettre lejar
objectif.Non, je veux dire rendre le projet de l'emballage "pom" et configurer les plugins afin d'atteindre les objectifs normalement exécutés dans le bocal du cycle de vie sont exécutées dans le pom du cycle de vie, avec la configuration ci-dessus, les ressources et la compilation des plugins sera exécuté pendant le cycle de vie par défaut, de sorte que vous courez toujours
mvn install
. Cette contourne le bug de l'assemblée pluginSalut.. j'ai changé l'emballage comme "pom".Ajouté les deux plugins que vous avez fournies et ne pas faire des changements de configuration dans les assemblées.Sur l'exécution de mvn install, pour la 2ème assemblée , c'est donnant - Causé par: org.apache.maven.projet.DuplicateArtifactAttachmentException: Double artefact attachement détecté.
il n'y a pas une telle configuration dans votre question, pourriez-vous mettre à jour la question de l'inclure?
Causés par: org.apache.maven.projet.DuplicateArtifactAttachmentException: Double artefact attachement détecté. (projet: com.xxx:maven_XX:pom:0.0.1-INSTANTANÉ; illégales pièce jointe: com.XXX:maven_XX jar:0.0.1-SNAPSHOT)
OriginalL'auteur Rich Seller