Entendiendo el proyecto javaMéxico 2.0 (un punto de partida)
Como algunos sabrán, la comunidad tiene un proyecto de Software Libre para crear un portal manejador de contenido (CMS) orientado a comunidades como la nuestra. Este proyecto se llama "javaMéxico 2.0".
Si bien muchos están enterados, no hemos dado una guía de entrada apropiada para quienes gusten unirse al desarrollo del proyecto, este post servirá como dicha guía de entrada.
Primero que nada, me gustaría compartirles la presentación que hicimos ezamudio y yo en el Spring I/O 2010, la cual describe el por qué del proyecto, la funcionalidad deseada y el estatus del avance al momento.
La presentación es la siguiente (se ve mejor en pantalla completa):
Perfecto, ahora ya tienen una idea de... la funcionalidad del sistema a grandes rasgos y en dónde estamos parados actualmente.
Lo ideal es que descarguen el proyecto de Google Code y lo echen a andar en su IDE preferido, así pueden probar la funcionalidad que ya se tiene.
Para esto necesitarán Mercurial instalado, pueden obtenerlo de http://mercurial.selenic.com/downloads/
En caso de que no hayan ocupado antes Mercurial, les servirá leer esto: http://devnull.li/libromercurial/onepage/hgbook.html. Principalmente con la introducción y el punto 2 (Una gira de Mercurial: lo básico) ya pueden comenzar.
Ya instalado Mercurial, deben "clonar" el proyecto del repositorio de la siguiente manera en la consola:
hg clone https://javamexico.googlecode.com/hg/ javamexico
Una vez clonado, sigan las instrucciones que se encuentran en la página principal del proyecto para echarlo a andar: http://code.google.com/p/javamexico/
Si recuerdan la presentación del inicio, el proyecto utiliza las siguientes tecnologías Java:
- Tapestry 5 - GUI y MVC
- Hibernate 3 y JPA - Persistencia
- Spring 3 - Inyección de Dependencias
- Maven 2 - Build manager.
Es posible que no conozcan alguna de estas tecnologías, si es el caso les que recomiendo estas lecturas:
- Introducción a Tapestry 5, por ezamudio:
- Introducción a Spring Framework:
- Hibernate 3 Reference.
- Tutorial Maven 2.
Lo ideal sería que se adentraran en el código, comprendieran cómo funciona y posteriormente si hacen una mejora envíen el changeset por correo para integrarlo, esto lo permite Mercurial de una manera muy fácil (ver cómo funciona el "changeset" en el libro de mercurial que puse arriba).
Si les late la idea de seguir colaborando en el desarrollo del proyecto podemos agregarlos posteriormente como commiters para que envíen directo al repositorio sus cambios.
Espero que esto despierte la curiosidad e iniciativa de algunos aquí, cualquier duda o comentario al respecto del proyecto es bienvenida en este tema. :-)
¡Saludos a todos!
--
Javier Ramírez Jr.
http://twitter.com/_benek
- Inicie sesión o regístrese para enviar comentarios
Otra forma de participar es creando un clon en Google code.
Otra forma en la que se puede participar es creando un clon en google code mismo.
Este clon en el servidor funciona como una especie de "branch" del proyecto y quién lo crea se vuelve dueño de ese branch.
Para ello en la página del proyecto, en la pestaña source:
Uploaded with ImageShack.us
Viene la opción: "Crear tu propio clon hospedado en Google code":
Uploaded with ImageShack.us
Por ejemplo, yo creé el clon: "oscarryz-javadb" donde la idea es hacer las modificaciones necesarias para que Javamexico2.0 corra sobre JavaDB
Con un clone como este, yo puedo hacer los cambios que quiera, puedo hacer commits al servidor e incluso, si el repositorio principal hace modificaciones, yo puedo integrarlas en mi branch, sin necesidad que el branch principal me de permiso alguno, pues finalmente es mi copia.
Uploaded with ImageShack.us
¡Esta es la esencia de un controlador de versiones distribuido! Si a alguien le gusta tus cambios, puede incluirlos en su código. Esto es muy diferente a como funcionan los "otros" controladores de versiones ( como Subversion o CVS ) que no son nada malos, simplemente requieren otro modelo de funcionar.
Si el repositorio central quiere incluir mis cambio nomás tiene que hacer "pull" de mi repositorio.
:)
Yo voy!
Quiero ayudar al proyecto en la medida de mis posibilidades. Creo que puedo ayudarlos con la traduccion de scripts SQL para los otros DB y documentacion pero primero voy a ver que pex con el codigo y luego vemos.
Genial
Me encantaria ayudar a este proyect jeje lo malo es ke no conozco algunas de esas tecnologias asi ke tendre ke dar algunas leidas y ver ke onda con el codigo pero genial proyect
:)
A mi tambien me gustaria ayudarles...espero checar el código y pensar en como ayuarles aunque sea un poco
Módulos
El módulo de preguntas y respuestas es el más cercano a estar completo. El módulo de foros tiene algo de avance pero le faltan algunos detalles (por ejemplo dar de alta un foro nuevo). El de bolsa de trabajo no tiene nada de avance aún, porque no lo tenemos bien definido todavía; el de anuncios tampoco lo tenemos bien definido. El de blogs no tiene nada de avance simplemente porque no hemos programado nada, pero pues es muy similar al de foros, incluso los comentarios deben funcionar igual, aunque quiero agregar la opción de que el usuario pueda deshabilitar comentarios en cada entrada de su blog, y pondremos a discusión si los usuarios deben poder moderar los comentarios que otros hagan en sus blogs (o sea borrar comentarios que no les gusten) o no.
Falta la detección de spam, que debe ser algún filtro que se pueda agregar a cualquier módulo (foros, blogs, bolsa, etc), ahí tenemos que ver por una parte cuáles serán las medidas que vamos a tomar para determinar si algo es spam, y la otra es cómo lo vamos a implementar; cuando tengamos la segunda parte, podremos definir interfaces y dejar implementaciones vacías para empezar a invocar los filtros aunque no hagan nada, y después ya iremos implementando los filtros pertinentes.
Tampoco hay registro de usuarios nuevos, ni mensajes privados (que no sabemos si los queremos tener o no), ni una página para que un usuario pueda editar su información.
Así que como pueden ver, hay bastante por hacer.
Extraordinario
ps la verdad tendremos que leer un poco mas acerca de la utilizacion de estas tecnologias para poder ayudar un poco en el proyecto, ya que de esta manera nos ayudamos entre si a crear un super mejorado portal...
Build Path problem
Hola, tengo un problema al intentar abrir el proyecto, no se que estoy haciendo mal, me aparece el siguiente error:
By null at 2010-08-03
By jsantosr09 at 2010-08-03
Me interesa seguir de cerca este proyecto porque no tengo experiencia en Java EE, por lo tanto tengo algunas dudas:
* Debo de tener instalado Tapestry 5, Hibernate, Spring y Maven para poder correr la aplicacion en Eclipse ?.
* ó puedo correr la aplicación solo teniendo instalado Eclipse (con el plugin m2eclipse) y la base de datos creada en PostgreSQL?
Gracias.
Carpetas faltantes
Hay carpetas faltantes en el proyecto porque están vacías actualmente. Simplemente crea la carpeta que te indica, ya sea desde dentro de Eclipse o directo en tu filesystem.
Con tener instalado Eclipse con el plugin m2eclipse y la base de datos en PostgreSQL es suficiente; Maven va bajar Tapestry, Hibernate, Spring y todas las otras librerías que se necesitan (la primera vez que abres el proyecto y parece que estás bajando medio internet, es por Maven).
Ya agregué un archivo vacío en esa carpeta, puedes simplemente hacer pull y luego update en tu repositorio.
sigo con problemas de novato
Gracias ezamudio, ya compilan los tres, pero al momento de ejecutar las pruebas de los DAOs tengo errores:
By jsantosr09 at 2010-08-03
No se si tenga algo que ver el warm que Maven me manda al iniciar eclipse:
By jsantosr09 at 2010-08-03
Ya intenté solucionarlo por mi cuenta (según yo) pero no sé que es lo que estoy haciendo mal, no doy.
autenticación
Pues no veo el stack trace completo pero el error parece ser que no se puede conectar a la base de datos. Edita los datos del DataSource que se utiliza para las pruebas (y de la aplicación también) para que tenga los datos de conexión a tu base de datos.
seguro que es porque eclipse
seguro que es porque eclipse esta intentando compilar con la jre y no con el jdk, para solucionar eso crea un acceso directo de tu eclipse, y ve a propiedades y en la opcion destino despues de lo que tiene agrega un espacio y luego:
-vm "ruta al bin de java\javaw"
como ejemplo, yo lo tengo asi:
C:\eclipse\eclipse\eclipse\eclipse.exe -vm "C:\Archivos de programa\Java\jdk1.6.0_12\bin\javaw"
lo que esta en negrita ya lo tiene solo agrega lo que viene despues.
Saludos
De nuevo gracias ezamudio, y
De nuevo gracias ezamudio, y a ti Shadonwk, lo de la conexión a la BD ya quedó (me faltaba ponerle la contraseña a la BD que hice en PostgreSQL, la contraseña era javamex2); lo que me comentas Shadonwk soluciona el problema del warm, ya tampoco me aparece el warm de maven. pero ahora me surge otro probreblema, y me imagino que tiene que ver con los permisos de Windows 7, por que ahora me aparece el error:
GRAVE: Error reading /oscache.properties in CacheAdministrator.loadProps() java.lang.NullPointerException
03-ago-2010 17:57:07 com.opensymphony.oscache.base.Config loadProps
GRAVE: Ensure the /oscache.properties file is readable and in your classpath.
No sé, si ese error tenga como consecuencia que no se pueda crear el usuario(tratándose de TestUsuario.java), o este sea otro error aparte que no tiene relacion con el anterior ? el error es:
2131 [main] ERROR org.hibernate.util.JDBCExceptionReporter - ERROR: no existe la relación «usuario»
Position: 261
2144 [main] WARN org.hibernate.util.JDBCExceptionReporter - SQL Error: 0, SQLState: 42P01
2144 [main] ERROR org.hibernate.util.JDBCExceptionReporter - ERROR: no existe la relación «usuario»
Position: 261
pongo todo el stack trace o se entiende mi problema.
Perdon por tanta pregunta de novato, pero espero que en este foro haya gente como yo sin experiencia en proyectos y que esto les sirva si quieren hecharle un ojo al proyecto javamexico 2.0, de hecho no se si mover mis preguntas que estoy haciendo en otro hilo de este subforo, un hilo que se llame algo asi como: "Proyecto JavaMexico 2.0 para dummies" .
Saludos.
oscache
Según yo el oscache es opcional, si no lo tienes no pasa nada, no hay cache de Hibernate.
El otro error es porque no tienes la tabla usuario... ya corriste el script para crear las tablas en PostgreSQL? en tu base de datos? revisa bien...
No estaría mal hacer ese foro que dices. Para eso tenemos la sección JavaMexico 2.0 dentro de Comunidad...
pasu mecha
Perdon pero como dijo Don Chente: "Mientras el público no de apludir, Chente no deja de cantar"...
Pos asi estoy yo, "Mientras los problemas no dejen de surgir, Juancho no deja de preguntar".
Ahora al momento de darle al proyecto Run As: Maven build, le pongo "jetty:run" en Goals, pero me da este resultado:
[INFO] ------------------------------------------------------------------------
[WARNING] Missing POM for org.javamexico:javamexico-core:jar:1.0-SNAPSHOT
[WARNING] Missing POM for org.javamexico:javamexico-hibernate3:jar:0.0.1-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 1.205s
[INFO] Finished at: Wed Aug 04 10:56:10 CDT 2010
[INFO] Final Memory: 1M/4M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal on project JavaMexico: Missing:
----------
1) org.javamexico:javamexico-core:jar:1.0-SNAPSHOT
Try downloading the file manually from the project website.
Then, install it using the command:
mvn install:install-file -DgroupId=org.javamexico -DartifactId=javamexico-core -Dversion=1.0-SNAPSHOT -Dpackaging=jar -Dfile=/path/to/file
Alternatively, if you host your own repository you can deploy the file there:
mvn deploy:deploy-file -DgroupId=org.javamexico -DartifactId=javamexico-core -Dversion=1.0-SNAPSHOT -Dpackaging=jar -Dfile=/path/to/file -Durl=[url] -DrepositoryId=[id]
Path to dependency:
1) org.javamexico:JavaMexico:pom:pom:1.0-SNAPSHOT
2) org.javamexico:javamexico-core:jar:1.0-SNAPSHOT
2) org.javamexico:javamexico-hibernate3:jar:0.0.1-SNAPSHOT
Try downloading the file manually from the project website.
Then, install it using the command:
mvn install:install-file -DgroupId=org.javamexico -DartifactId=javamexico-hibernate3 -Dversion=0.0.1-SNAPSHOT -Dpackaging=jar -Dfile=/path/to/file
Alternatively, if you host your own repository you can deploy the file there:
mvn deploy:deploy-file -DgroupId=org.javamexico -DartifactId=javamexico-hibernate3 -Dversion=0.0.1-SNAPSHOT -Dpackaging=jar -Dfile=/path/to/file -Durl=[url] -DrepositoryId=[id]
Path to dependency:
1) org.javamexico:JavaMexico:pom:pom:1.0-SNAPSHOT
2) org.javamexico:javamexico-hibernate3:jar:0.0.1-SNAPSHOT
----------
2 required artifacts are missing.
for artifact:
org.javamexico:JavaMexico:pom:1.0-SNAPSHOT
from the specified remote repositories:
tapestry (<a href="http://tapestry.formos.com/maven-repository/" title="http://tapestry.formos.com/maven-repository/">http://tapestry.formos.com/maven-repository/</a>, releases=true, snapshots=true),
tapestry-snapshots (<a href="http://tapestry.formos.com/maven-snapshot-repository/" title="http://tapestry.formos.com/maven-snapshot-repository/">http://tapestry.formos.com/maven-snapshot-repository/</a>, releases=true, snapshots=true),
codehaus.snapshots (<a href="http://snapshots.repository.codehaus.org" title="http://snapshots.repository.codehaus.org">http://snapshots.repository.codehaus.org</a>, releases=true, snapshots=true),
OpenQA_Release (<a href="http://archiva.openqa.org/repository/releases/" title="http://archiva.openqa.org/repository/releases/">http://archiva.openqa.org/repository/releases/</a>, releases=true, snapshots=true),
central (<a href="http://repo1.maven.org/maven2" title="http://repo1.maven.org/maven2">http://repo1.maven.org/maven2</a>, releases=true, snapshots=false)
-> [Help 1]
jetty:run
Eso funciona si lo corres desde Eclipse, con la opción de Run as Maven Target... y le tienes que activar la opción de resolver dependencias en el workspace, por ahí viene un checkbox con esa opción, ya con eso funciona. Ya estás cerca de echarlo a andar.
wow, esto me anima a echarlo
wow, esto me anima a echarlo andar en mi pc.. creo que para el siguiente fin lo intentare!!
y colorin colorado ...por fin
Mil Gracias por tu paciencia y ayuda ezamudio, por fin lo logré:
By jsantosr09 at 2010-08-04
Ahora si ..."a darle que es mole de ollo" ...perdon es de olla; y aver en que puedo ayudar, por lo mientras voy a hacer una especia de guía o tutorial para a quellos novatos como yo, que quieran descargar el proyecto y correrlo.
Saludos
Eeheeeehhhh bravo... ...
Eeheeeehhhh bravo... ... creo que estás entre las primeras 10 personas que ven esa pantalla :) :)
Duda Java Mexico 2.0
Al ejecutar la prueba unitaria de esta clase me sale el sigueinte error.
TestUsuarios
2328 [main] WARN org.hibernate.util.JDBCExceptionReporter - SQL Error: 0, SQLState: 42501
2328 [main] ERROR org.hibernate.util.JDBCExceptionReporter - ERROR: permiso denegado a la relación usuario
2328 [main] WARN org.hibernate.util.JDBCExceptionReporter - SQL Error: 0, SQLState: 42501
2328 [main] ERROR org.hibernate.util.JDBCExceptionReporter - ERROR: permiso denegado a la relación usuario
2344 [Thread-4] INFO org.springframework.context.support.GenericApplicationContext - Closing org.springframework.context.support.GenericApplicationContext@15f5897: startup date [Wed May 18 12:28:49 CDT 2011]; root of context hierarchy
2344 [Thread-4] INFO org.springframework.beans.factory.support.DefaultListableBeanFactory - Destroying singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@1c86be5: defining beans [org.springframework.context.annotation.internalConfigurationAnnotationProcessor,org.springframework.context.annotation.internalAutowiredAnnotationProcessor,org.springframework.context.annotation.internalRequiredAnnotationProcessor,org.springframework.context.annotation.internalCommonAnnotationProcessor,org.springframework.context.annotation.internalPersistenceAnnotationProcessor,org.springframework.aop.config.internalAutoProxyCreator,org.springframework.transaction.annotation.AnnotationTransactionAttributeSource#0,org.springframework.transaction.interceptor.TransactionInterceptor#0,org.springframework.transaction.config.internalTransactionAdvisor,usuarioDao,preguntaDao,foroDao,bolsaDao,hibTxManager,hibFactory,hibInterceptor,jdbcTemplate,dataSource]; root of factory hierarchy
2360 [Thread-4] INFO org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean - Closing Hibernate SessionFactory
2360 [Thread-4] INFO org.hibernate.impl.SessionFactoryImpl - closing
base de datos
Ya tienes bien configurada tu base de datos? el error es claro: no se pudo insertar a la tabla Usuario.
Si de echo segui este tutorial
http://www.javamexico.org/foros/comunidad_javamexico_2_0/instalando_el_p...
2328 [main] WARN org.hibernate.util.JDBCExceptionReporter - SQL Error: 0, SQLState: 42501
2328 [main] ERROR org.hibernate.util.JDBCExceptionReporter - ERROR: permiso denegado a la relación usuario
2344 [Thread-4] INFO org.springframework.context.support.GenericApplicationContext - Closing
Lo que me llama la atencion es esta parte la base de datos esta a mi entender bien configurada
Bueno pero recuerda que el
Bueno pero recuerda que el propietario (owner) de la base de datos "javamexico" debe ser "javamex"... lo tienes asi??
O a ver echale unos INSERTS a patita para ver si es bronca de la configuracion del stio (que no creo) o es cuestion de como levantaste tu DB
Ya le meti los registros
Ya hize lo que me comentas y si los inserta bien pero sigo con el problema. Y tambien a la hora de levantar la aplicacion me sale este error. lo del owner tambien lo tengo como javamex y la base de datos javamexico
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building JavaMexico Tapestry 5 Application 1.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] >>> maven-jetty-plugin:6.1.26:run (default-cli) @ JavaMexico >>>
[WARNING] The POM for org.javamexico:javamexico-hibernate3:jar:0.1-SNAPSHOT is missing, no dependency information available
[WARNING] The POM for org.javamexico:javamexico-core:jar:1.0-SNAPSHOT is missing, no dependency information available
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 0.656s
[INFO] Finished at: Wed May 18 15:45:28 CDT 2011
[INFO] Final Memory: 2M/15M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal on project JavaMexico: Could not resolve dependencies for project org.javamexico:JavaMexico:war:1.0-SNAPSHOT: The following artifacts could not be resolved: org.javamexico:javamexico-hibernate3:jar:0.1-SNAPSHOT, org.javamexico:javamexico-core:jar:1.0-SNAPSHOT: Could not find artifact org.javamexico:javamexico-hibernate3:jar:0.1-SNAPSHOT -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/DependencyResolutionException
Sigue Igual
Bueno pos le volvi a intentar siguiendo al pie de letra el tutorial y nada de nada seguire intentando.
permisos
Está claro que tienes un problema de permisos en la base de datos. Seguramente la base de datos la creaste con un usuario y estás conectándote a la aplicación con un usuario distinto, que no tiene permisos en las tablas porque no son suyas.
Ya casi
Ahora me sigue saliendo este error pero lo de las pruebas unitarias ya fue corregido si era problema con los permisos.
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building JavaMexico Tapestry 5 Application 1.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] >>> maven-jetty-plugin:6.1.26:run (default-cli) @ JavaMexico >>>
[WARNING] The POM for org.javamexico:javamexico-hibernate3:jar:0.1-SNAPSHOT is missing, no dependency information available
[WARNING] The POM for org.javamexico:javamexico-core:jar:1.0-SNAPSHOT is missing, no dependency information available
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 0.485s
[INFO] Finished at: Thu May 19 11:09:24 CDT 2011
[INFO] Final Memory: 2M/15M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal on project JavaMexico: Could not resolve dependencies for project org.javamexico:JavaMexico:war:1.0-SNAPSHOT: The following artifacts could not be resolved: org.javamexico:javamexico-hibernate3:jar:0.1-SNAPSHOT, org.javamexico:javamexico-core:jar:1.0-SNAPSHOT: Could not find artifact org.javamexico:javamexico-hibernate3:jar:0.1-SNAPSHOT -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/DependencyResolutionException
desde Eclipse
Hay dos formas de que funcione:
1. Usas Eclipse o STS con el plugin m2eclipse, configurado para que resuelva "workspace dependencies"
2. Ya que hayas compilado el core, lo debes instalar (mvn install), luego compilas e instalas el hib3 de la misma forma y finalmente ya puedes correr la aplicación
Despues de mucho tiempo
Por fin corrio el proyecto.Gracias por la ayuda
¿Como puedo ayudar?
Hola! me gustaria ayudar aunque no se nada de las tecnologias usadas pero puedo aprender.
Por cierto ¿Para la documentacion que se necesita?
Supongo que alli no es vital tener conocimientos altos en las tecnologias, ¿O si?
La verdad me gustaria ayudar con codigo, yo por mientras me baño con la teoria y me pongo a practicar.
Si yo pudiera ayudar, este seria el primer proyecto real en el que participe, se que la idea no es mia y que no eh sido un usuario muy activo ultimamente y tampoco es que mis conocimientos puedan cambiar el desarrollo del proyecto pero si me aceptan para mi seria unico.
Yo veo una oportunidad de aprender y formar parte de algo importante y de trabajar con profesionales.
empieza por echarlo andar
Jose Manuel,
lo primero que necesitas hacer es bajar el proyecto y echarlo a andar para que lo puedas ver corriendo. Con eso podrás después analizar el código, alguna parte que te interese, puedes empezar a moverle. A veces la mejor manera de entender cómo funciona algo, es descomponiéndolo, total no pasa nada si después ya no corre, lo borras todo y lo vuelves a bajar (o simplemente le das revert; con esto también vas a tener que aprender algo de cómo funcionan los sistemas de control de versiones, en particular Mercurial que es lo que usamos).