2012-06-26 3 views
3

J'ai 2 artefacts que je voudrais copier de mon référentiel local vers un répertoire dans le système de fichiers.Comment utiliser la dépendance maven: copier l'objectif?

Je pense que la dépendance: la copie fait ce travail. Mais, il nécessite un argument artefactItems. http://maven.apache.org/plugins/maven-dependency-plugin/examples/copying-artifacts.html

Quelqu'un peut-il m'aider à utiliser cet objectif en ligne de commande. Malheureusement, maven ne montre pas l'utilisation de cet objectif en ligne de commande.

Répondre

3

Plutôt que d'essayer de comprendre comment fournir une artifactItem par ligne de commande, je configurerais l'exécution de la ligne de commande pour le plugin de dépendance. Pour ce faire, spécifiez default-cli comme ID d'exécution. Si vous voulez toujours copier les mêmes dépendances, vous pouvez coder en dur les coordonnées GAV dans le (s) article (s) d'artefact. Ou, codez les valeurs qui restent constantes entre les commandes.

Pour copier différents artefacts via une ligne de commande, utilisez les propriétés comme valeurs d'élément et spécifiez les valeurs sur la ligne de commande. Par exemple, si la configuration de artifactItem inclus <artifactId>${copy.artifactId}</artifactId> puis

mvn dependency:copy -Dcopy.artifactId=myArtifact

copiera myArtifact (exemple suppose d'autres éléments ont des valeurs hardcoded).

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-dependency-plugin</artifactId> 
    <version>2.4</version> 
    <executions> 
    <execution> 
    <id>default-cli</id> 
    <configuration> 
     <artifactItems> 
     <artifactItem> 
      <!-- hardcode values, or use properties, depending on what you want to do --> 
      <groupId>[ groupId ]</groupId> 
      <artifactId>[ artifactId ]</artifactId> 
      <version>[ version ]</version> 
      <type>[ packaging ]</type> 
      <outputDirectory>/the/filesystem/dir</outputDirectory> 
     </artifactItem> 
     </artifactItems> 
     <!-- other configurations here --> 
    </configuration> 
    </execution> 
    </executions> 
    </plugin> 
1

Vous ne savez pas si vous voulez le faire depuis un projet Maven ou sans un. Dans le cas de l'ancien, vous pouvez utiliser ceci:

mvn dependency:copy -Dartifact='group.id:artifact.id:your.version' 

Si vous définissez la version de l'artefact dans vos pom.xml propriétés à l'aide, vous pouvez également l'utiliser cette version comme ceci:

mvn dependency:copy -Dartifact='group.id:artifact.id:${version.property}' 
+0

'mvn' n'est pas reconnu comme une commande interne ou externe ... –

+0

@BakedInhalf La réponse suppose que vous avez installé maven, voir ici: https://maven.apache.org/index.html – robinst

+0

Eclipse installe maven par défaut mais seulement en tant que plugin. J'ai dû faire une deuxième installation de Maven et ajouter/bin dossier au chemin et ainsi de suite .. Fonctionne maintenant! Alors maintenant, il suffit de configurer un projet vide, télécharger des fichiers jars, copier des fichiers jars dans votre projet normal et les ajouter au chemin de compilation –

1

Si vous ne voulez pas écrire artefactItems dans votre pom.xml, vous pouvez simplement utiliser la commande: "mvn dependency: copy-dependencies" au lieu de "mvn dependency: copy".