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

[SOLUCIONADO] Slf4j, maven y scope

Estas en el tema de Slf4j, maven y scope en el foro de Java en Foros del Web. Estoy utilizando slf4j y leyendo diversos manuales me he encontrado con algo que no acabo de entender. http://blogs.cservenak.com/2011/04/s...ing-maven.html Cita: From SLF4J project, the slf4j-api is ...
  #1 (permalink)  
Antiguo 02/04/2013, 02:21
Avatar de Xerelo  
Fecha de Ingreso: mayo-2009
Mensajes: 2.175
Antigüedad: 15 años, 7 meses
Puntos: 306
Slf4j, maven y scope

Estoy utilizando slf4j y leyendo diversos manuales me he encontrado con algo que no acabo de entender.

http://blogs.cservenak.com/2011/04/s...ing-maven.html

Cita:
From SLF4J project, the slf4j-api is the only and the one and only one artifact you want to depend in compile scope. Full stop.
Esto me sorprendió un poco porque las dependencias de log suelen funcionar en runtime. El caso es que para implementarlo con Spring me he encontrado esto

http://blog.springsource.org/2009/12...ies-in-spring/

Donde pone todas las dependencias como Runtime, lo he probado y sí funciona.

No acabo de ver la necesidad de que scope compile.
__________________
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.
  #2 (permalink)  
Antiguo 02/04/2013, 04:24
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 20 años, 2 meses
Puntos: 454
Respuesta: Slf4j, maven y scope

Hola:

Realmente los log que use tu código los necesitas en "compile", si no tienes la librería de log correspondiente en tu classpath de compilación, no compila.

Si pones runtime y compilas con maven, posiblemente tampoco compile. Otro tema es que generes tu proyecto eclipse o lo que sea con algo como "mvn eclipse:eclipse". Eclipse no entiende de runtime o compile, si está la dependencia, pone el jar y listo, por lo que eclipse funciona igual con runtime, compile, test o provided.

slf4j está pensado para lo siguiente. Tu haces una aplicación web (un war, por ejemplo) o una librería (un jar sin main) que pretendes que otros usen en sus aplicaciones. Estaría feo que ese war o librería usara y me obligara a usar log4j, por ejemplo, cuando yo en mi aplicación o servidor web no tengo log4j, o uso otra alternativa como el logging de java.

slf4j nace como un puente entre tu librería y un log de verdad como log4j. Tu usas en tu código slf4j y luego, cuando alguien use tu librería en su proyecto o despliegue tu war en su servidor, "conecta" tu slf4j con log4j (añadiendo el jar slf4j-log4j12.jar), de esta forma tu log se integra con el log que tenga el servidor web o la aplicación.

Es por eso que en tu proyecto maven sólo debes poner dependencia de slf4j-api como compile (si no lo haces así, tu código no compila) y dejar las dependencias de slf4j-log4j12 y log4j como "provided". Ni siquiera "runtime", porque si la pones "runtime", cuando maven genere tu war incluirá slf4j-log4j12 y log4j dentro del war, cosa que no queremos.

Se bueno.
__________________
Apuntes Java
Wiki de Programación
  #3 (permalink)  
Antiguo 02/04/2013, 05:02
Avatar de Xerelo  
Fecha de Ingreso: mayo-2009
Mensajes: 2.175
Antigüedad: 15 años, 7 meses
Puntos: 306
Respuesta: Slf4j, maven y scope

Cita:
Si pones runtime y compilas con maven, posiblemente tampoco compile. Otro tema es que generes tu proyecto eclipse o lo que sea con algo como "mvn eclipse:eclipse". Eclipse no entiende de runtime o compile, si está la dependencia, pone el jar y listo, por lo que eclipse funciona igual con runtime, compile, test o provided.
Creo que esa es la clave, yo uso eclipse con el plugin de maven, así que como tú dices para eclipse siempre existe, de ahí que me compilase sin problemas a pesar del Runtime.

De todas formas en el blog de Spring, ponen todas las dependencias como Runtime, así que entre eso y que me compilaba me rompieron los esquemas.
__________________
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.

Etiquetas: maven, scope, spring
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 02:14.