2011-11-23 7 views
10

Tengo un proyecto maven que utiliza algunos jars personalizados [no se encuentran en ningún repositorio]. Para agregarlos junto con la construcción de Maven, estoy usando el objetivo de adjuntar artefacto en maven. Lo que sigue es mi archivo de pom:Maven: Adjuntar múltiples artefactos

<?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> 

Mis proyectos que utilizan estos frascos [customjar1.jar, customjar2.jar] tienen su dependencia del archivo pom anterior [adminbuild].

Cuando ejecuto el comando mvn clean install, me sale el siguiente error:

[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] 

A continuación se presenta la salida de 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" 

Parece que la manera en que yo estoy adjuntando los artefactos es incorrecto. ¿No debería adjuntar artefactos múltiples en el mismo archivo pom? Si es así, entonces cómo. Por favor ayuda.

Respuesta

6

Los artefactos adjuntos se usan normalmente para instalar archivos adicionales creados por su compilación, como el jar de clases de una aplicación web, documentación o fuentes.

Para agregar archivos a su repositorio maven para que estén disponibles como dependencias, debe usar el objetivo install-file.

Edit: Los artefactos adjuntos se identifican por el mismo groupId y artifactId como su proyecto principal pero con un clasificador diferente. En su configuración, no especificó el clasificador, de ahí el mensaje de error.

2

Desea tener estas jarras personalizadas en un administrador de repositorio como nexus para que puedan ser descargadas/usadas como una jarra de dependencia normal.

Suponiendo que no es posible y viendo que estos contenedores están en una ubicación conocida, ¿podría especificar estos tamaños personalizados con el alcance system en los proyectos que los necesitan?

<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> 
Cuestiones relacionadas