2010-04-14 18 views
11

Ho un progetto che consiste semplicemente di file. Voglio impacchettare questi file in un file zip e archiviarli in un repository di esperti. Ho il plugin assembly configurato per creare il file zip e quella parte funziona bene, ma non riesco a capire come installare il file zip?Maven Assembly Plugin - installa il gruppo creato

Inoltre, se voglio utilizzare questo assieme in un altro artefatto, come dovrei farlo? Ho intenzione di chiamare la dipendenza: spacchettare, ma non ho un artefatto nel repository da decomprimere.

Come posso ottenere un file zip nel mio repository in modo che possa riutilizzarlo in un altro artefatto?

genitore pom

<build> 
     <plugins> 
      <plugin> 
       <!--<groupId>org.apache.maven.plugins</groupId>--> 
       <artifactId>maven-assembly-plugin</artifactId> 
       <version>2.2-beta-5</version> 
       <configuration> 
        <filters> 
         <filter></filter> 
        </filters> 
        <descriptors> 
         <descriptor>../packaging.xml</descriptor> 
        </descriptors> 
       </configuration> 
      </plugin> 
     </plugins> 
    </build> 

Bambino POM

<parent> 
    <groupId>com. ... .virtualHost</groupId> 
    <artifactId>pom</artifactId> 
    <version>0.0.1</version> 
    <relativePath>../pom.xml</relativePath> 
</parent> 

<name>Virtual Host - ***</name> 
<groupId>com. ... .virtualHost</groupId> 
<artifactId>***</artifactId> 
<version>0.0.1</version> 
<packaging>pom</packaging> 

ho filtrato il nome fuori. Questo POM è corretto? Voglio solo unire i file per un particolare host virtuale insieme.

Grazie,

Walter

risposta

16

ho il plugin di montaggio configurato per creare il file zip e quella parte funziona bene, ma io non riesco a capire come installare il file zip?

Ebbene, il gruppo creato dovrebbe ottenere automaticamente allegato al progetto e poi caricato nel repository su un obiettivo install e deploy. Puoi mostrare il tuo pom?

Aggiornamento: Con la configurazione corrente, non penso che l'assembly venga creato come parte della build. È necessario associare l'obiettivo single ad una fase del ciclo di vita, in genere package:

<plugin> 
    <artifactId>maven-assembly-plugin</artifactId> 
    <version>2.2-beta-5</version> 
    <configuration> 
     <descriptors> 
     <descriptor>../packaging.xml</descriptor> 
     </descriptors> 
    </configuration> 
    <executions> 
     <execution> 
     <id>make-assembly</id> <!-- this is used for inheritance merges --> 
     <phase>package</phase> <!-- append to the packaging phase. --> 
     <goals> 
      <goal>single</goal> <!-- goals == mojos --> 
     </goals> 
     </execution> 
    </executions> 
    </plugin> 

E ora dovrebbe ottenere installato/schierato correttamente.

Inoltre, se voglio usare questo assieme in un altro artefatto, come potrei farlo? Ho intenzione di chiamare la dipendenza: spacchettare, ma non ho un artefatto nel repository da decomprimere.

È possibile dichiarare una dipendenza su un assieme (utilizzando il diritto classifier e type nel tuo caso), ma dal momento che la dipendenza sono risolti attraverso il repository, è necessario risolvere il primo passo prima. Poi, dichiarare qualcosa di simile (dove il classificatore è l'ID del montaggio):

<dependency> 
    <groupId>com. ... .virtualHost</groupId> 
    <artifactId>***</artifactId> 
    <version>0.0.1</version> 
    <classifier>...</classifier> 
    <type>zip</type> 
</dependency> 
0

Non so montone castrato questo potrebbe essere utile per voi, ma come un file JAR è fondamentalmente un file ZIP più il META Informazioni INF, potresti creare il tuo progetto come un jar senza sorgenti e aggiungere i conteggi xip in src/main/resources senza bisogno di alcuna configurazione di plugin.

Se si desidera che il contenuto di essere in una posizione diversa, si può sempre fare qualcosa di simile:

<?xml version="1.0" encoding="UTF-8"?> 
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>com.mycompany.myzip</groupId> 
    <artifactId>myzip-artifact-id</artifactId> 
    <version>1.0-SNAPSHOT</version> 
    <packaging>jar</packaging> 
    <build> 
    <resources> 
     <resource> 
     <targetPath>.</targetPath> 
     <filtering>false</filtering> 
     <directory>${basedir}/zipcontent</directory> 
     <includes> 
      <include>**/*</include> 
     </includes> 
     </resource> 
    </resources> 
    </build> 
</project> 

I f si desidera che il manufatto da installare e di essere accessibili in un repository è necessario impostare in su per la fase di distribuzione:

http://maven.apache.org/plugins/maven-deploy-plugin/usage.html

1

Penso assemblee dovrebbero essere collegata automaticamente alla costruzione, ma se questo non funziona, il Maven Build Helper "attach-artifact" goal allega un file specificato per essere installato in il repository. Ho usato questo plugin per l'installazione di file creati da un processo esterno come Ant o NSIS.

Problemi correlati