[Gvsig_desarrolladores] a馻dir dependencias a un proyecto

Joaquin Jose del Cerro Murciano jjdelcerro en gvsig.org
Mar Ago 18 20:50:56 CEST 2015


El 18 de agosto de 2015, 13:47, Ana Calle <nico200307 en gmail.com> escribi贸:

> hola a todos,
> Estoy intentando a帽adir una nueva dependencia en mi proyecto, y estoy un
> poco perdida con maven.
>
> La situaci贸n es, estoy trabajando con un componente de selecci贸n de fechas
> 'JCalendar', y aunque la compilaci贸n del desarrollo va con 茅xito, la
> ejecuci贸n de mi plugin me lanza este error cuando se va a mostrar la
> ventana con el selector de fechas:
>
> (lanza una excepc铆on....)
> Caused by: java.lang.ClassNotFoundException: Class
> com.toedter.calendar.JCalendar not found through the plugin
> c:\devel\gvsig2_2\gvSIG\extensiones\org.gvsig.planfor.app.mainplugin
>
> Yo he puesto en el pom.xml de mi proyecto la siguiente entrada:
> <dependency>
>                 <groupId>com.toedter</groupId>
>                 <artifactId>jcalendar</artifactId>
>                 <version>1.3.2</version>
> </dependency>
>
> y veo que en mi repositorio de maven tengo la ruta :
> .m2\repository\com\toedter\jcalendar\1.3.2 con los jar correspondientes.
>
> Pero ya no se qu茅 m谩s hacer....a ver si me podeis echar una mano.
>


Hola Ana,
te cuento asi muy rapido.
En el pom declaras las dependencias; con que artefactos, que versiones,
si son de runtime o de compilacion... pero no dices como se debe desplegar
tu proyecto maven, en tu caso un plugin de gvSIG, que archivos debe llevarse
o que estructura de caretas debe generar tu proyecto.

Para un plugin de gvSIG, la estructura de carpetas esta bastante definida,
lo que falta es que meter en ellas.

Bien, los proyectos de tipo plugin de gvSIG, ya heredan una configuracion
base en el pom y si has partido del proyecto "land registry viewer", del
fichero de configuracion adecuado.

La configuracion en el pom (viene heredada del pom padre), indica que en el
fichero

src/main/assembly/gvsig-plugin-package.xml

de dentro de la carpeta del proyecto que es el plugin de gvSIG, debe
estar la configuracion de despliegue.

El fichero de configuracion por defecto dice...

Que se desplegara en formato zip, los paquetes de addons de gvsig son zips.

  <formats>
    <format>zip</format>
  </formats>

Que se incluya el jar de nuestro plugin y el fichero package.info

  <files>
    <file>
      <source>target/${project.artifactId}-${project.version}.jar</source>
      <outputDirectory>lib</outputDirectory>
    </file>
    <file>
      <source>target/package.info</source>
    </file>
  </files>

Que incluya los ficheros que se encuentran en la carpeta de recursos
resources-plugin
del proyecto.

  <fileSets>
    <fileSet>
      <directory>src/main/resources-plugin</directory>
      <outputDirectory>.</outputDirectory>
    </fileSet>
  </fileSets>

Y que ademas que incluya otras dependencias adicionales, normalmente jars.

  <dependencySets>
    <dependencySet>
      <useProjectArtifact>false</useProjectArtifact>
      <useTransitiveDependencies>false</useTransitiveDependencies>
      <outputDirectory>lib</outputDirectory>
      <includes>
        <include>org.gvsig:org.gvsig.landregistryviewer.lib.api</include>
        <include>org.gvsig:org.gvsig.landregistryviewer.lib.impl</include>
        <include>org.gvsig:org.gvsig.landregistryviewer.swing.api</include>
        <include>org.gvsig:org.gvsig.landregistryviewer.swing.impl</include>
      </includes>
    </dependencySet>
  </dependencySets>

Estos jars van en la carpeta lib de nuestro plugin

<outputDirectory>lib</outputDirectory>

Y en el caso del landregistryviewer que incluya los jars de los demas
subproyectos maven.
La indicacion para que incluya un jar seria:

        <include>groupId:artifactId</include>

Con eso le indicamos que el jar correspondiente a ese groupId:artifactId se
incluya en la
carpeta "lib" de nuestro plugin.

En tu caso deberias a帽adir una linea mas con algo como:

        <include>com.toedter:jcalendar</include>

Y con esto aparentemente deberia ser suficiente, pero a veces no lo es.
Si simplemente a帽adimos esto en el assembly del proyecto de nuestro plugin,
puede suceder
que cuando compiles, con el "mvn install" al ejecutar el assembly de un
warning.
El assembly precisa que el pom, el del plugin de gvsig, este declarada esa
dependencia,
si no lo esta falla. Esto puede ser bastante comun. Si en algunos de los
proyectos
de libreria se usa esa dependencia como de compilacion, deberas incluirla
en el pom
del proyecto del plugin de gvsig como de runtime, de esa forma cuando se
ejecute el
assembly sabra de donde obtenerla.

Resumiendo, las dependencias que deban distribuirse con tu plugin deberan:

- incluirse en el pom del proyecto del plugin, al menos como de runtime.
- incluirse en el assembly del proyecto del plugin.

Despues de hacer esto, mira en el fichero del paquete en la carpeta "lib" a
ver si esta tu jar.

Espero que se entienda, y si te quedan dudas, ya sabes, pregunta.

Un saludo
Joaquin



> Muchas gracias!!
> Ana
>
> _______________________________________________
> gvSIG_desarrolladores mailing list
> gvSIG_desarrolladores en listserv.gva.es
> Para ver hist贸rico de mensajes, editar sus preferencias de usuario o darse
> de baja en esta lista, acuda a la siguiente direcci贸n:
> http://listserv.gva.es/cgi-bin/mailman/listinfo/gvsig_desarrolladores
>
>


-- 
--------------------------------------
Joaquin Jose del Cerro Murciano
Development and software arquitecture manager at gvSIG Team
jjdelcerro en gvsig.com
jjdelcerro en gvsig.org
gvSIG Association
www.gvsig.com
www.gvsig.org
------------ pr髕ima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: http://listserv.gva.es/pipermail/gvsig_desarrolladores/attachments/20150818/bad7740a/attachment.htm 


M醩 informaci髇 sobre la lista de distribuci髇 gvSIG_desarrolladores