2011-11-23 22 views
10

Ho un progetto di maven che utilizza alcuni jar personalizzati [non trovati in nessun repository]. Per aggiungerli insieme alla build di Maven, sto usando l'obiettivo attach-artefatto in Maven. In seguito è il mio file pom:Maven: collegamento di più artefatti

<?xml version="1.0" encoding="UTF-8"?> 
<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/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 

    <groupId>com.maximus</groupId> 
    <artifactId>adminbuild</artifactId> 
    <version>1.0-SNAPSHOT</version> 
    <packaging>pom</packaging> 
    <name>adminbuild</name> 

    <build> 
    <sourceDirectory>src/main/java</sourceDirectory> 
    <testSourceDirectory>src/test/java</testSourceDirectory> 
    <outputDirectory>target</outputDirectory> 
    <plugins> 
     <plugin> 
     <groupId>org.codehaus.mojo</groupId> 
     <artifactId>build-helper-maven-plugin</artifactId> 
     <version>1.7</version> 
     <executions> 
      <execution> 
      <id>attach-artifacts</id> 
      <phase>package</phase> 
      <goals> 
       <goal>attach-artifact</goal> 
      </goals> 
      <configuration> 
       <artifacts> 
       <artifact> 
        <file>${basedir}/../../resources/dependencies/java/customjar1.jar</file> 
        <type>jar</type> 
       </artifact> 
       <artifact> 
        <file>${basedir}/../../resources/dependencies/java/customjar2.jar</file> 
        <type>jar</type> 
       </artifact> 
       </artifacts> 
      </configuration> 
      </execution> 
     </executions> 
     </plugin> 
    </plugins> 
    </build> 
</project> 

miei progetti che utilizzano questi vasi [customjar1.jar, customjar2.jar] hanno la loro dipendenza sul file pom sopra [adminbuild].

Quando eseguire il comando mvn clean install, ottengo il seguente errore:

[ERROR] Failed to execute goal org.codehaus.mojo:build-helper-maven-plugin:1.7:attach-artifact (attach-artifacts) on project adminbuild: The artifact with same type and classifier: jar:null is used more than once. -> [Help 1] 

seguito è l'output di mvn -version comando:

Apache Maven 3.0.3 (r1075438; 2011-02-28 23:01:09+0530) 
Maven home: C:\maven 
Java version: 1.6.0_26, vendor: Sun Microsystems Inc. 
Java home: C:\Java\jdk1.6.0_26\jre 
Default locale: en_IN, platform encoding: Cp1252 
OS name: "windows 7", version: "6.1", arch: "amd64", family: "windows" 

Sembra che il modo in cui vi allego i manufatti è errato. Non dovrei collegare più artefatti nello stesso file pom? Se sì allora come. Per favore aiuto.

risposta

6

Gli artefatti associati vengono normalmente utilizzati per installare file aggiuntivi creati dalla build, come il jar classi di un'app Web, documentazione o fonti.

Per aggiungere file al repository Maven in modo che siano disponibili come dipendenze, è necessario utilizzare l'obiettivo install-file.

Modifica: Gli artefatti collegati sono identificati dallo stesso gruppoId e artefattoId del progetto principale ma con un classificatore differente. Nella tua configurazione, non hai specificato il classificatore, quindi il messaggio di errore.

2

Si vorrebbe avere questi jar personalizzati in un gestore di repository come nexus in modo che possano essere scaricati/utilizzati come normali jar di dipendenza.

Supponendo che non sia possibile e visto che questi vasi si trovano in una posizione ben nota, è possibile specificare questi vasi personalizzati con lo scope system nei progetti che ne hanno bisogno?

<project> 
    ... 
    <dependencies> 
    <dependency> 
     <groupId>my-group</groupId> 
     <artifactId>customjar1</artifactId> 
     <version>a.b.c</version> 
     <scope>system</scope> 
     <systemPath>${basedir}/../../resources/dependencies/java/customjar1.jar</systemPath> 
    </dependency> 
    </dependencies> 
    ... 
</project> 
Problemi correlati