2009-10-15 6 views
15

Soit il me manque quelque chose d'évident, ou à la fois le Maven book et le Maven Assembly Plugin's homepage, tout en décrivant comment écrire des descripteurs d'assemblage personnalisés, ne dites rien sur l'endroit où ce fichier doit aller. Est-ce que cela fait partie de mon projet? Est-ce qu'il va dans un répertoire de configuration Maven central? Dois-je spécifier son emplacement quelque part?Où dois-je placer des descripteurs d'assemblage personnalisés pour le plugin Maven Assembly?

Répondre

12

Oui, vous devez spécifier l'emplacement. Selon la page Configuration and Usage, cela se fait de cette façon:

<project> 
    [...] 
    <build> 
    [...] 
    <plugins> 
     <plugin> 
     <artifactId>maven-assembly-plugin</artifactId> 
     <configuration> 
      <descriptors> 
      <descriptor>src/main/assembly/src.xml</descriptor> 
      </descriptors> 
     </configuration> 
     [...] 
</project> 

En fait, je vous recommande d'utiliser src/main/assembly comme emplacement.

+3

Merci, aussi pour le lien pointant vers cette page de documentation. J'ai réussi à comprendre à peu près au même moment que vous avez posté, mais je pense qu'il est très déroutant que cette information ne soit pas là où vous cherchez comment écrire des descripteurs d'assemblage. –

+0

Ne fonctionne pas. Voir http://stackoverflow.com/questions/2463721/maven-assembly-error-reading-assemblies/2464350#2464350 –

1

D'une manière un peu détournée, j'ai finalement pu le découvrir. Tout d'abord, this page sur le partage des descripteurs d'assemblage vous donne indirectement quelques indications.

Ma première erreur était d'utiliser descriptorRef au lieu de descriptor dans ma configuration de plugin. Quand je fixe et créé la structure de répertoire figurant sur la page liée ci-dessus, je suis une série de messages d'erreur qui a révélé comment le plugin tente de résoudre le nom du descripteur vous lui avez donné:

[INFO] Searching for file location: /path/to/project/dependency-collection.xml

[INFO] File: /path/to/project/dependency-collection.xml does not exist.

Donc, mettre en devrait travailler la racine du projet ...

[INFO] Invalid artifact specification: 'dependency-collection.xml'. Must contain at least three fields, separated by ':'.

... ou le charger d'un artefact Maven ...

[INFO] Failed to resolve classpath resource: /assemblies/dependency-collection.xml from classloader: ClassRealm[/plugins/org.apache.maven.plugins:maven-assembly-plugin:[email protected]/thread:main, parent: ClassRealm[plexus.core, parent: null]]

[INFO] Failed to resolve classpath resource: dependency-collection.xml from classloader: ClassRealm[/plugins/org.apache.maven.plugins:maven-assembly-plugin:[email protected]/thread:main, parent: ClassRealm[plexus.core, parent: null]]

... ou de le mettre sur le chemin de classe du plug-in (I devinez c'est w ici les descripteurs prédéfinis sont) ...

[INFO] Building URL from location: dependency-collection.xml

Error: java.net.MalformedURLException: no protocol: dependency-collection.xml

... ou de le charger à partir d'une URL.

Bien, mais cela devrait vraiment être documenté quelque part, je pense. Je viens de mettre le fichier descripteur à côté de epom.xml et cela a fonctionné. J'aurais probablement pu essayer cela avant de chercher sur le web ...

Questions connexes