gvSIG feature requests #1848

Dar estructura de maven a los proyectos de gvsig-desktop

Added by Joaquín del Cerro Murciano almost 11 years ago. Updated over 10 years ago.

Status:Closed% Done:

0%

Priority:HighSpent time:-
Assignee:Joaquín del Cerro Murciano
Category:Application
Target version:2.1.0-2217-devel
gvSIG version:2.1.0 Add-on resolve version:
Keywords: Add-on resolve build:
Has patch:No Proyecto:
Add-on name:Unknown Hito:
Add-on version:

Description

Dar estructura de maven a los proyectos que componen el workspace principal de gvSIG desktop.

Actualmente se esta utilizando maven para compilar gvsig-desktop 2.0, sin embargo la mayoria de los proyectos que componen el nucleo de gvSIG, auqnue estan usando maven, no han adaptado su estructura a la que recomienda maven, lo que lleva a tener que introducir mucha configuracion en cada uno de los poms. Ademas, aunque existe una gerarquia de proyectos, esta no se corresponde con la estructura de ficheros lo que dificulta seguirla. Ademas de esto, y en parte derivado de ello los plugins de maven para eclipse no reconocen o trabajan correctamente con estos proyecto lo que nos obliga a mantener una serie de ficheros de configyuracion en ant y launchers para eclipse. Por ultimo, tratar operaciones sobre todos los proyectos, para generar revisiones (mvn release) o sites de maven no funciona "fino" sobre esta estructura.

La nueva estructura de proyecto seria algo como:

    └── org.gvsig.desktop
        ├── org.gvsig.desktop.compat.cdc
        │   ├── org.gvsig.compat
        │   │   ├── org.gvsig.compat.api
        │   │   └── org.gvsig.compat.se
        │   ├── org.gvsig.fmap.dal
        │   │   ├── org.gvsig.fmap.dal.api
        │   │   ├── org.gvsig.fmap.dal.db
        │   │   │   ├── org.gvsig.fmap.dal.db.h2
        │   │   │   ├── org.gvsig.fmap.dal.db.jdbc
        │   │   │   └── org.gvsig.fmap.dal.db.lib
        │   │   ├── org.gvsig.fmap.dal.file
        │   │   │   ├── org.gvsig.fmap.dal.file.dbf
        │   │   │   ├── org.gvsig.fmap.dal.file.lib
        │   │   │   └── org.gvsig.fmap.dal.file.shp
        │   │   ├── org.gvsig.fmap.dal.impl
        │   │   └── org.gvsig.fmap.dal.spi
        │   ├── org.gvsig.fmap.geometry
        │   │   ├── org.gvsig.fmap.geometry.api
        │   │   ├── org.gvsig.fmap.geometry.impl
        │   │   └── org.gvsig.fmap.geometry.operation
        │   ├── org.gvsig.fmap.mapcontext
        │   │   ├── org.gvsig.fmap.mapcontext.api
        │   │   ├── org.gvsig.fmap.mapcontext.impl
        │   │   └── org.gvsig.fmap.mapcontext.operation
        │   ├── org.gvsig.i18n
        │   ├── org.gvsig.projection
        │   │   ├── org.gvsig.projection.api
        │   │   ├── org.gvsig.projection.cresques
        │   │   └── org.gvsig.projection.cresques.ui
        │   └── org.gvsig.remoteclient
        │
        ├── org.gvsig.desktop.framework
        │   ├── org.gvsig.andami
        │   └── org.gvsig.andami.updater
        │
        ├── org.gvsig.desktop.installer
        │
        ├── org.gvsig.desktop.library
        │   ├── org.gvsig.annotation
        │   │   ├── org.gvsig.annotation.lib
        │   │   │   ├── org.gvsig.annotation.lib.api
        │   │   │   └── org.gvsig.annotation.lib.impl
        │   │   ├── org.gvsig.annotation.main
        │   │   └── org.gvsig.annotation.swing
        │   │       ├── org.gvsig.annotation.swing.api
        │   │       └── org.gvsig.annotation.swing.impl
        │   ├── org.gvsig.exportto
        │   │   ├── org.gvsig.exportto.lib
        │   │   │   ├── org.gvsig.exportto.lib.api
        │   │   │   └── org.gvsig.exportto.lib.impl
        │   │   ├── org.gvsig.exportto.main
        │   │   │   └── gvSIG
        │   │   │       └── extensiones
        │   │   └── org.gvsig.exportto.swing
        │   │       ├── org.gvsig.exportto.swing.api
        │   │       ├── org.gvsig.exportto.swing.impl
        │   │       ├── org.gvsig.exportto.swing.prov
        │   │       │   ├── org.gvsig.exportto.swing.prov.dbf
        │   │       │   ├── org.gvsig.exportto.swing.prov.dxf
        │   │       │   ├── org.gvsig.exportto.swing.prov.file
        │   │       │   ├── org.gvsig.exportto.swing.prov.generic
        │   │       │   ├── org.gvsig.exportto.swing.prov.jdbc
        │   │       │   ├── org.gvsig.exportto.swing.prov.mysql
        │   │       │   ├── org.gvsig.exportto.swing.prov.postgresql
        │   │       │   └── org.gvsig.exportto.swing.prov.shape
        │   │       └── org.gvsig.exportto.swing.spi
        │   ├── org.gvsig.fmap.control
        │   ├── org.gvsig.installer
        │   │   ├── org.gvsig.installer.lib
        │   │   │   ├── org.gvsig.installer.lib.api
        │   │   │   ├── org.gvsig.installer.lib.impl
        │   │   │   └── org.gvsig.installer.lib.spi
        │   │   ├── org.gvsig.installer.main
        │   │   ├── org.gvsig.installer.maven
        │   │   ├── org.gvsig.installer.prov
        │   │   │   └── org.gvsig.installer.prov.plugin
        │   │   └── org.gvsig.installer.swing
        │   │       ├── org.gvsig.installer.swing.api
        │   │       └── org.gvsig.installer.swing.impl
        │   ├── org.gvsig.newlayer
        │   │   ├── org.gvsig.newlayer.lib
        │   │   │   ├── org.gvsig.newlayer.lib.api
        │   │   │   └── org.gvsig.newlayer.lib.impl
        │   │   └── org.gvsig.newlayer.prov
        │   │       ├── org.gvsig.newlayer.prov.file
        │   │       ├── org.gvsig.newlayer.prov.generic
        │   │       └── org.gvsig.newlayer.prov.shape
        │   ├── org.gvsig.personaldb
        │   │   ├── org.gvsig.personaldb.lib
        │   │   │   ├── org.gvsig.personaldb.lib.api
        │   │   │   └── org.gvsig.personaldb.lib.impl
        │   │   └── org.gvsig.personaldb.main
        │   ├── org.gvsig.symbology
        │   │   ├── org.gvsig.symbology.lib
        │   │   │   ├── org.gvsig.symbology.lib.api
        │   │   │   └── org.gvsig.symbology.lib.impl
        │   │   ├── org.gvsig.symbology.main
        │   │   └── org.gvsig.symbology.swing
        │   │       ├── org.gvsig.symbology.swing.api
        │   │       └── org.gvsig.symbology.swing.impl
        │   ├── org.gvsig.ui
        │   └── org.gvsig.utils
        │
        └── org.gvsig.desktop.plugin
            ├── org.gvsig.annotation.app
            │   └── org.gvsig.annotation.app.mainplugin
            ├── org.gvsig.app.document.table.app
            │   └── org.gvsig.app.document.table.app.mainplugin
            ├── org.gvsig.centerviewpoint.app
            │   └── org.gvsig.centerviewpoint.app.mainplugin
            ├── org.gvsig.coreplugin.app
            │   └── org.gvsig.coreplugin.app.mainplugin
            ├── org.gvsig.daltransform.app
            │   ├── org.gvsig.daltransform.app.eventtheme
            │   ├── org.gvsig.daltransform.app.eventtheme.join
            │   ├── org.gvsig.daltransform.app.join
            │   └── org.gvsig.daltransform.app.mainplugin
            ├── org.gvsig.datalocator.app
            │   └── org.gvsig.datalocator.app.mainplugin
            ├── org.gvsig.editing.app
            │   └── org.gvsig.editing.app.mainplugin
            ├── org.gvsig.exportto.app
            │   └── org.gvsig.exportto.app.mainplugin
            ├── org.gvsig.geodb.app
            │   └── org.gvsig.geodb.app.mainplugin
            ├── org.gvsig.geometrymeasurement.app
            │   └── org.gvsig.geometrymeasurement.app.mainplugin
            ├── org.gvsig.help.app
            │   └── org.gvsig.help.app.mainplugin
            ├── org.gvsig.i18n.app
            │   └── org.gvsig.i18n.app.mainplugin
            ├── org.gvsig.installer.app
            │   └── org.gvsig.installer.app.mainplugin
            ├── org.gvsig.mkmvnproject.app
            │   └── org.gvsig.mkmvnproject.app.mainplugin
            ├── org.gvsig.newlayer.app
            │   └── org.gvsig.newlayer.app.mainplugin
            ├── org.gvsig.selectiontools.app
            │   └── org.gvsig.selectiontools.app.mainplugin
            └── org.gvsig.symbology.app
                ├── org.gvsig.symbology.app.importsymbols
                └── org.gvsig.symbology.app.symbolinstaller

Ademas de que algunos de los proyectos, como son algunos proveedores de DAL e implementaciones de proyecciones saldran del SVN de gvsig-desktop.

transform-workspace-4.tar (840 KB) Joaquín del Cerro Murciano, 06/20/2013 08:51 AM

History

#1 Updated by Joaquín del Cerro Murciano almost 11 years ago

  • File trasnsform-workspace.tar added

Debido a que va a ser una tarea de "larga duracion", y para interferir lo menos posible con la realizacion de otros trabajos he decidido abordarlo a base de crear un script de shell que transforma un workspace actual de gvsig-desktop 2.0 en la nueva estructura. Para ello son copiados los fuentes y recursos de cada proyecto a la nueva estructura sustituyendo los poms actuales por los nuevos.

Adjunto fichero con el script de shell y los nuevos poms.
En estos momentos no esta terminado, pero ire actulizandolos en el ticket segun vaya avanzando el trabajo.

#2 Updated by Joaquín del Cerro Murciano almost 11 years ago

Durante el proceso se realizaran tareas de:

  • Eliminacion del uso de perfiles en los poms siempre que no sea estrictamente necesario.
  • Eliminacion del uso de clasificadores para generar mas de un artefacto a partir de unos fuentes. Un proyecto maven generar solo un artefacto (jar). Para los proyecto que esten generando mas de un artefacto estos se dividiran en varios subproyectos maven, repartiendose el codigo actual entre los distintos proyectos.
  • Se mantendra una separacion estricta entre API/impl/SPI, ya que estos se encuentran ahora en proyectos separados.
  • Debido a la division en varios proyectos de algunos de los proyectos actuales, algunos artifactid han cambiado.
  • En las ultimas fases de este proceso se procedera a la verificacion que las cabeceras de los ficheros son correctas.
  • Se eliminan dependencias con detalles de la implementacion de algunas librerias, sobre todo con la de geometrias.

#3 Updated by Joaquín del Cerro Murciano almost 11 years ago

Artifactid de proyectos que cambian:

  • org.gvsig.projection:jar -> org.gvsig.projection.api:jar
  • org.gvsig.projection:jar:cresques-impl -> org.gvsig.projection.cresques:jar
  • org.gvsig.projection:jar:cresques-ui -> org.gvsig.projection.cresques.ui:jar
  • org.gvsig.fmap.mapcontext:jar -> org.gvsig.fmap.mapcontext.api:jar
  • org.gvsig.fmap.mapcontext:jar:impl -> org.gvsig.fmap.mapcontext.impl:jar
  • org.gvsig.fmap.mapcontext:jar:operation -> org.gvsig.fmap.mapcontext.operation:jar
  • org.gvsig.fmap.dal:jar -> org.gvsig.fmap.dal.api:jar
  • org.gvsig.fmap.dal:jar:spi -> org.gvsig.fmap.dal.spi:jar
  • org.gvsig.fmap.dal:jar:impl -> org.gvsig.fmap.dal.impl:jar
  • org.gvsig.fmap.dal.db:jar -> org.gvsig.fmap.dal.db.lib:jar
  • org.gvsig.fmap.dal.db:jar:jdbc -> org.gvsig.fmap.dal.db.jdbc:jar
  • org.gvsig.fmap.dal.index.spatial:jar:gt2 -> org.gvsig.fmap.dal.index.spatial.gt2:jar
  • org.gvsig.fmap.dal.index.spatial:jar:jts -> org.gvsig.fmap.dal.index.spatial.jts:jar
  • org.gvsig.fmap.dal.index.spatial:jar:jsi -> org.gvsig.fmap.dal.index.spatial.jsi:jar
  • org.gvsig.fmap.dal.file:jar: -> org.gvsig.fmap.dal.file.lib:jar
  • org.gvsig.fmap.dal.file:jar:store.dbf -> org.gvsig.fmap.dal.file.dbf:jar
  • org.gvsig.fmap.dal.file:jar:store.shp -> org.gvsig.fmap.dal.file.shp:jar
  • org.gvsig:org.gvsig.fmap.geometry:jar -> org.gvsig.fmap.geometry.api:jar
  • org.gvsig:org.gvsig.fmap.geometry:jar:impl -> org.gvsig.fmap.geometry.impl:jar
  • org.gvsig:org.gvsig.fmap.geometry:jar:operation -> org.gvsig.fmap.geometry.operation:jar
  • org.gvsig:org.gvsig.compat:jar -> org.gvsig.compat.api:jar
  • org.gvsig:org.gvsig.compat:jar:se -> org.gvsig.compat.se:jar

#4 Updated by Joaquín del Cerro Murciano almost 11 years ago

En el proyecto org.gvsig.fmap.geom he realizadeo cambios relacionados con:

  • Eliminada la imlpementacion del GeneralPathX del API de geometrias, r40388
  • Añadido a la libreria de geometrias soporte para indices espaciales, r40387 , r40363
  • Eliminacion de las dependencias de la implementacion sobre la libreria de las operaciones con geometrias, r40386 , r40364, r40359,
  • Añadido soporte para poder especificar el srs en la conversion a wkb, r40366
  • Añadido metodos de utilidad en el GeometryManager para crear curve,surface,multicurve y multisurface, r40393
  • Añadidos metodos de utilidad en OrientablePrimitive para añadir vertices usando x,y,z en lugar de Point, r40393
  • Marcados como deprecated todos los metodos del GeometryManager que trabajan con GeneralPathX, y comentado en su javadoc que se debe usar en su lugar, r40393

#5 Updated by Joaquín del Cerro Murciano almost 11 years ago

En org.gvsig.proyection:

  • Modificado el codigo para que sea compatible con java 1.4, r40358, r40357
  • Traido el codigo que habia en appgvsig dependiente de la libreria de proyecciones. He mantenido los mismos nombres de paquetes para no romper compatibilidad con lo que ya habia. r40392, r40398, r40398 y r40400 (por cierto, me he confundido al picar el mensaje en el commit y he puesto geometrias donde habia que poner proyecciones)

El otro dia crei que habia llevado al API de la libreria de proyecciones lo que habia en appgvsig, pero no, va a ser que falle. Al hacerlo perdiamos compatibilidad binaria, asi que he descartado esa opcion.

El problema principal es que tanto en el API como la implementacion de partes de la gestion del GUI de proyecciones depende de andami (IWindow).
Ahora mismo, tras trocear libProjection, hay tres proyectos relacionados con proyecciones:

  • org.gvsig.projection.api
  • org.gvsig.projection.cresques.impl
  • org.gvsig.projection.cresques.ui

Lo que he hecho es meter la parte del API de gestion del GUI de proyecciones en org.gvsig.projection.cresques.ui, que llevaba ya la implementacion de ese API. Asi que ahora alli esta el API y la IMPL del GUI, con lo que este tiene una dependencia con andami.

Quien antes necesitaba depender de appgvsig para sacar algun dialogo de proyecciones ahora debera depender de org.gvsig.projection.cresques.ui . He conservado los paquetes y nombres de clases, con lo que no hay perdida de compatibilidad binaria (por lo menos que haya detectado). Pero me parece una guarrada que org.gvsig.projection.cresques.ui depende de
andami.

#6 Updated by Joaquín del Cerro Murciano almost 11 years ago

En org.gvsig.remoteclient:

- Cambiado codigo para que sea compatible con java 1.4, r40360

#7 Updated by Joaquín del Cerro Murciano almost 11 years ago

En el proyecto org.gvsig.fmap.dal:

  • Corregidas dependencias entre el API/SPI/impl, r40361
  • Eliminadas dependencias con JTS en los tests, r40394
  • Eliminado el uso de GeneralPathX en algunos de los test, r40394

En el proyecto org.gvsig.fmap.dal.index se ha cambiado:

  • Eliminadas anotaciones por compatibilidad con java 1.4, r40370

Al final parece que este proyecto no seria necesario ya que se han introducido en DAL
una implementacion de indices espaciales basada en los indices espaciales añadidos
a la libreria de geometrias.

En el proyecto org.gvsig.fmap.dal.files

  • Se ha eliminado las dependecias que habian entre el proveedor de shp y el de dgn, r40369
  • Eliminadas las dependecias con la implementacion de la libreria de geometrias y operaciones de geometrias, r40368
  • Eliminadas algunos usos de la implementacion de dal desde los tests, r40365
  • Cambiado codigo que no era competible con java 1.4, r40362
  • Eliminada la dependencia del proveedor de shp con el mapcontext, r40383

En el proyecto org.gvsig.fmap.dal.db

  • Eliminadas las dependecias con la implementacion de la libreria de geometrias y operaciones de geometrias, r40367

#8 Updated by Joaquín del Cerro Murciano almost 11 years ago

En el proyecto org.gvsig.fmap.mapcontext he realizado cambios relacionados con:

  • Eliminadas referencias a la implementacion de geometrias y las operaciones con geometrias, r40373 , r40372
  • Sustituido el uso del Quadtree de jts por el manejo de indices espaciales de la libreria de geometrias, r40371

#9 Updated by Joaquín del Cerro Murciano almost 11 years ago

En el proyecto de org.gvsig.fmap.mapcontrol he realizado cambios relacionados con:

  • Sustituido en mapcontrol, en el manejo de la tabla, el uso de jts por invocar a funciones del API de la libreria de geometrias, r40391
  • Eliminacion del uso de GeneralPathX que no era necesario en el mapcontrol, r40389

#10 Updated by Joaquín del Cerro Murciano almost 11 years ago

En el proyecto de org.gvsig.installer he realizado cambios relacionados con:

  • En el plugin de maven he dejado que el parametro buildNumber sea optativo, de forma que si no se especifica no genere el package.info, avisando de que no se va a generar. Esto facilita la configuracion de los poms de los plugins de gvSIG ya que asi no se genera el package.info para los proyectos padres de los plugins, haciendose solo para los que tengan definido el buildNumber en el fichero buildNumber.properties ( r40395 )

#11 Updated by Joaquín del Cerro Murciano almost 11 years ago

Cambios en el proyecto org.gvsig.tools.evaluator.sqljep :

  • Eliminadas dependencias con la implementacion de geometrias y las operaciones con geometrias, r40396 .

#12 Updated by Joaquín del Cerro Murciano almost 11 years ago

Cambios relacionados con org.gvsig.exportto:

  • El proveedor org.gvsig.exportto.swing.prov.jdbc tiene una dependencia con
    org.gvsig.geodb.app.mainplugin, y de forma indirecta el de postgresql y el de mysql.
    Habria que extraer el el panel ConnectionPanel y la clase ConnectionSettings a una libreria,
    probablemente a org.gvsig.ui o a org.gvsig.fmap.control

    No he hecho ningun cambio, pero el pom del proveedor de jdbc tiene a piñon
    la dependencia con el plugin, especificando la version muy a capon.

#13 Updated by Joaquín del Cerro Murciano almost 11 years ago

  • File transform-workspace-2.tar added

#14 Updated by Joaquín del Cerro Murciano almost 11 years ago

  • File deleted (trasnsform-workspace.tar)

#15 Updated by Joaquín del Cerro Murciano almost 11 years ago

  • File transform-workspace-3.tar added

#16 Updated by Joaquín del Cerro Murciano almost 11 years ago

  • File deleted (transform-workspace-2.tar)

#18 Updated by Joaquín del Cerro Murciano almost 11 years ago

  • File deleted (transform-workspace-3.tar)

#19 Updated by Joaquín del Cerro Murciano over 10 years ago

  • Status changed from In progress to Fixed
  • gvSIG version changed from 2.0.0 to 2.1.0

#20 Updated by Álvaro Anguix over 10 years ago

  • Status changed from Fixed to Closed

Also available in: Atom PDF