Foros del Web » Programación para mayores de 30 ;) » Java »

Maven añadir dependencias al generar un .jar.

Estas en el tema de Maven añadir dependencias al generar un .jar. en el foro de Java en Foros del Web. Hola, he creado una librería para generar informes. Esta librería utiliza jasperreports y todos los .jar necesarios para generar el informes (commons-logging, commons-digester, etc. ) ...
  #1 (permalink)  
Antiguo 11/09/2015, 06:25
 
Fecha de Ingreso: febrero-2005
Mensajes: 198
Antigüedad: 19 años, 9 meses
Puntos: 5
Maven añadir dependencias al generar un .jar.

Hola, he creado una librería para generar informes. Esta librería utiliza jasperreports y todos los .jar necesarios para generar el informes (commons-logging, commons-digester, etc. ) La cuestión es que genero el .jar (mi-report-library.jar) y al incluirla en otros proyectos no tengo los archivos .jar del jasperreports y los tengo que volver a incluir.

Concluyendo, lo que me gustaría es que cuando se genera el jar de mi librería ((mi-report-library.jar)) o ya incluya los .jar o (mejor todavía) que obtenga las dependencias del pom.xml y se las descargue cuando incluya mi librería en un proyecto.

Buscando por la red he encontrado el plugin maven-assembly-plugin, pero siempre para el caso en que quieres incluir como .jar ejecutable y yo lo quiero como librería para añadir a proyectos.

Este es el pom.xml de mi proyecto.

Código HTML:
<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>es.caib.serveis.socials.lib.informes</groupId>
    <artifactId>reports-project</artifactId>
    <version>0.6</version>
    <packaging>war</packaging>
    <name>reports-project</name>

    <properties>
        <endorsed.dir>${project.build.directory}/endorsed</endorsed.dir>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

    <dependencies>
         <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>servlet-api</artifactId>
            <version>2.5</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>com.sun.faces</groupId>
            <artifactId>jsf-api</artifactId>
            <version>2.0.2</version>
        </dependency>
        <dependency>
            <groupId>com.sun.faces</groupId>
            <artifactId>jsf-impl</artifactId>
            <version>2.0.2</version>
        </dependency>
        <dependency>
            <groupId>org.primefaces</groupId>
            <artifactId>primefaces</artifactId>
            <version>5.2</version>
        </dependency>
        <dependency>
            <groupId>com.oracle</groupId>
            <artifactId>ojdbc6</artifactId>
            <version>11.2</version>
        </dependency>
       <dependency>
            <groupId>javaee</groupId>
            <artifactId>javaee-api</artifactId>
            <version>5</version>
        </dependency>
        <dependency>
            <groupId>net.sf.jasperreports</groupId>
            <artifactId>jasperreports</artifactId>
            <version>5.6.0</version>
        </dependency>
        <dependency>
            <groupId>org.codehaus.groovy</groupId>
            <artifactId>groovy-all</artifactId>
            <version>2.3.11</version>
        </dependency>
        <dependency>
            <groupId>commons-beanutils</groupId>
            <artifactId>commons-beanutils</artifactId>
            <version>1.8.0</version>
        </dependency>
        <dependency>
            <groupId>commons-digester</groupId>
            <artifactId>commons-digester</artifactId>
            <version>2.1</version>
        </dependency>
        <dependency>
            <groupId>commons-logging</groupId>
            <artifactId>commons-logging</artifactId>
            <version>1.1.1</version>
        </dependency>
        <dependency>
            <groupId>net.sf.jasperreports</groupId>
            <artifactId>jasperreports-fonts</artifactId>
            <version>5.6.0</version>
        </dependency>
        <dependency>
            <groupId>com.keypoint</groupId>
            <artifactId>png-encoder</artifactId>
            <version>1.5</version>
        </dependency>
        <dependency>
            <groupId>net.sf.jasperreports</groupId>
            <artifactId>jasperreports-javaflow</artifactId>
            <version>5.6.0</version>
        </dependency>
        <dependency>
            <groupId>commons-collections</groupId>
            <artifactId>commons-collections</artifactId>
            <version>3.2.1</version>
        </dependency>
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi</artifactId>
            <version>3.7</version>
        </dependency>
        <dependency>
            <groupId>commons-fileupload</groupId>
            <artifactId>commons-fileupload</artifactId>
            <version>1.3.1</version>
        </dependency>
        <dependency>
            <groupId>commons-io</groupId>
            <artifactId>commons-io</artifactId>
            <version>2.2</version>
        </dependency>
        <dependency>
            <groupId>org.jboss.ejb3</groupId>
            <artifactId>jboss-ejb3-ext-api</artifactId>
            <version>1.1.0</version>
        </dependency> 
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi-ooxml</artifactId>
            <version>3.7</version>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>2.3.2</version>
                <configuration>
                    <source>1.7</source>
                    <target>1.7</target>
                    <compilerArguments>
                        <endorseddirs>${endorsed.dir}</endorseddirs>
                    </compilerArguments>
                </configuration>
            </plugin>
           
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-dependency-plugin</artifactId>
                <version>2.1</version>
                <configuration>
                    <failOnMissingWebXml>false</failOnMissingWebXml>
                </configuration>               
                <executions>
                    <execution>
                        <phase>validate</phase>
                        <goals>
                            <goal>copy</goal>
                        </goals>
                        <configuration>
                            <outputDirectory>${endorsed.dir}</outputDirectory>
                            <silent>true</silent>
                            <artifactItems>
                                <artifactItem>
                                    <groupId>javax</groupId>
                                    <artifactId>javaee-endorsed-api</artifactId>
                                    <version>6.0</version>
                                    <type>jar</type>
                                </artifactItem>
                            </artifactItems>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
    <repositories>
        <repository>
            <id>JBoss Repo</id>
            <url>http://repository.jboss.org/nexus/content/groups/public-jboss/</url>
            <name>JBoss Repo</name>
        </repository>
        <repository>
            <url>http://repository.primefaces.org/</url>
            <id>PrimeFaces-maven-lib</id>
            <layout>default</layout>
            <name>Repository for library PrimeFaces-maven-lib</name>
        </repository>
    </repositories>
</project> 
  #2 (permalink)  
Antiguo 11/09/2015, 07:58
Avatar de Xerelo  
Fecha de Ingreso: mayo-2009
Mensajes: 2.175
Antigüedad: 15 años, 6 meses
Puntos: 306
Respuesta: Maven añadir dependencias al generar un .jar.

Maven hace lo que buscas, cuando creas una librería, el proyecto que use esa librería como dependencia automáticamente cogerá también las dependencias de ese proyecto (dependencias transitivas)

https://maven.apache.org/guides/intr...e_Dependencies

No hay nada que configurar, es el comportamiento normal.

Edito: Para empezar estoy viendo que en tu pom defines tu librería como "war", por lo que mal vamos.
__________________
Cada vez que solucionas los problemas de alguien que no se esfuerza, piensa en que el día de mañana puede llegar a ser tu compañero de trabajo, o peor, tu jefe.
  #3 (permalink)  
Antiguo 11/09/2015, 14:48
 
Fecha de Ingreso: febrero-2005
Mensajes: 198
Antigüedad: 19 años, 9 meses
Puntos: 5
Respuesta: Maven añadir dependencias al generar un .jar.

Cita:
Iniciado por Xerelo Ver Mensaje
Maven hace lo que buscas, cuando creas una librería, el proyecto que use esa librería como dependencia automáticamente cogerá también las dependencias de ese proyecto (dependencias transitivas)

https://maven.apache.org/guides/intr...e_Dependencies

No hay nada que configurar, es el comportamiento normal.

Edito: Para empezar estoy viendo que en tu pom defines tu librería como "war", por lo que mal vamos.
Efectivamente es un war. Es un proyecto web que solo tiene una pantalla .xhtml que incluiré dentro de un directorio META-INF/resources cuando le cambie el package de war a .jar. Eso me funciona.

Como dices yo también creía que era el comportamiento natural: añado como dependencia al proyecto que me interese mi librería de la siguiente manera:

Código HTML:
 <dependency>
            <groupId>es.caib.serveis.socials.lib.informes</groupId>
            <artifactId>reports-project</artifactId>
            <version>0.6</version>
        </dependency> 
Creía que el resto de dependencias transitivas se importarían al proyecto, pero no está siendo el caso, tengo que añadir implicitamente el resto de dependencias de los jasperreports para que me funcione la generación de reports.


Si quieren otro ejemplo, cuando indico como dependencia los jasperreports
Código HTML:
<dependency>
	<groupId>net.sf.jasperreports</groupId>
	<artifactId>jasperreports</artifactId>
	<version>5.6.1</version>
</dependency> 
No añaden el resto de librerías transitivas por defecto, hay que indicarlas implicitamente en el pom.xml. En este foro lo comentan.

Última edición por occiso; 11/09/2015 a las 14:54
  #4 (permalink)  
Antiguo 11/09/2015, 15:46
Avatar de Profesor_Falken  
Fecha de Ingreso: agosto-2014
Ubicación: Mountain View
Mensajes: 1.323
Antigüedad: 10 años, 3 meses
Puntos: 182
Respuesta: Maven añadir dependencias al generar un .jar.

Cita:
No añaden el resto de librerías transitivas por defecto, hay que indicarlas implicitamente en el pom.xml. En este foro lo comentan.
En dicho foro dice claramente: "I am not using Maven"
No tiene absolutamente nada que ver.

El problema es que no puedes agregar un War como dependencia. Es un absurdo, ya que los WAR se construyen para ser desplegados en un servidor de aplicaciones y no como librerias a incluir en el classpath de otros proyectos.
Esta si es la buena respuesta a tu cuestion: http://stackoverflow.com/questions/5...esolve-package

Cita:
Hola, he creado una librería para generar informes
Si es una libreria como afirmas, entonces tiene que ser un JAR y no una aplicacion web.

Un saludo
__________________
If to err is human, then programmers are the most human of us
  #5 (permalink)  
Antiguo 12/09/2015, 03:14
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 20 años, 1 mes
Puntos: 454
Respuesta: Maven añadir dependencias al generar un .jar.

Hola:

Como comentan, la librería debe ser un jar y no un war. Cuando pones un <dependency> busca un jar por defecto. Si quieres que coja otro tipo de fichero (el war), debes añadir la extensión de la siguiente forma


Código XML:
Ver original
  1. <dependency>
  2.             <groupId>es.caib.serveis.socials.lib.informes</groupId>
  3.             <artifactId>reports-project</artifactId>
  4.             <version>0.6</version>
  5.             <type>war</type>
  6. </dependency>

Por defecto, <type> es "jar". http://maven.apache.org/pom.html#Dependencies

Se bueno.
__________________
Apuntes Java
Wiki de Programación
  #6 (permalink)  
Antiguo 14/09/2015, 05:27
 
Fecha de Ingreso: febrero-2005
Mensajes: 198
Antigüedad: 19 años, 9 meses
Puntos: 5
Respuesta: Maven añadir dependencias al generar un .jar.

Gracias a todos por las respuestas.

Generaré un jar y le añadiré los archivos xhtml en el directorio META-INF/resources

Etiquetas: dependencias, maven
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 01:07.