2011-09-04 10 views
7

Actualmente estoy intentando hacer mi compilación (~ 30 paquetes) por tycho.
Me enfrenté a algunos problemas confusos al usar Mockito en mis pruebas unitarias.
Creé un eclipse-test-plugin como proyecto de fragmento para el paquete probado. Dado que tycho debería resolver los paquetes necesarios utilizando el manifiesto, eliminé la dependencia a mockito del pom.xml.
Cuando intento agregar mockito a los paquetes requeridos en el manifiesto, mockito no aparece en la lista. Encontré this post y creé una plataforma de destino que apuntaba a eclipse índigo.
Incluí los detalles de la plataforma, así que no necesito el paquete eclipse delta. Entonces ocurre la primera cosa extraña. Eclipse me dice que hay algunas dependencias insatisfactorias y cuando configuro la plataforma de destino recién creada como activa dentro de Eclipse, no se pueden resolver más paquetes como org.osgi.framework, etc. por eclipse. Pero cuando construyo un eclipse-product usando tycho y la plataforma de destino, está funcionando.¿Cómo hacer referencia a mockito dentro de tycho?

My target-platform

si fijo la instalación actual eclipse como plataforma activa se resuelven los paquetes. He seleccionado el seguimiento de la liberación de índigo:

  • Eclipse RCP Plug-in inicial de desarrolladores Componentes
  • Equinox objetivo Componentes
  • embarcadero objetivo

Así que mi primera pregunta es "¿Qué está mal con mi plataforma de destino para que Tycho pueda usarlo pero ¿eclipse no? "

Para acercarme a mi problema original (ejecutar mockito) configuré la instalación del eclipse actual como la plataforma de destino activa. Eclipse luego puede resolver el paquete org.osgi.framework y otros.
Agregué la dependencia eliminada previamente a mockito de nuevo a mi pom.xml como en la publicación mencionada anteriormente. Pero todavía no puedo encontrar el mockito cuando intento agregarlo a los paquetes requeridos en el manifiesto.

Así que mi segunda pregunta es "¿Qué estoy haciendo mal? ¿Cómo se hace referencia a paquetes que no se publican en el sitio de actualización de Eclipse, por ejemplo el repositorio central de Maven?"

Actualización: Durante mi investigación, he encontrado dos formas de incluir paquetes de los no-P2-update-sitios en mi objetivo de la plataforma:

  1. Nexus Pro
    El profesional la versión de Nexus admite repositorios p2-Proxy que pueden envolver repositorios maven predeterminados como Maven Central Repository en un sitio de actualización p2, pero la versión profesional cuesta alrededor de $ 800 por año.
  2. Crear un eclipse-repositorio
    Se puede crear un nuevo proyecto Maven con el empaquetadoeclipse-repositoryincluyendo todos sus paquetes deseados. El artefacto creado se implementa en un servidor web común.

En su blanco-plataforma a continuación, puede hacer referencia a la cesión temporal p2-proxy Nexus o de la web alojado p2-repo.
¿Alguien conoce otras formas, probablemente más conveniente/menos costoso?

Por favor, me ayudan a entender el mundo confuso de Tycho un poco más ...
Gracias de antemano

+1

Esta pregunta tiene demasiados extremos abiertos; debería considerar limitarlo a una pregunta, por ej. "¿Cómo hacer referencia a Mockito con Tycho?" – oberlies

+0

He agregado una respuesta a una pregunta similar que enumera una forma nueva y elegante de crear un repositorio de Eclipse de manera muy automatizada y limpia a través de 'p2-maven-plugin' - http://stackoverflow.com/a/24777560/464590 – berezovskyi

Respuesta

3

Si Mockito no está en la plataforma de destino (y no tenerlo en un repositorio p2) , lo más fácil es probablemente volver a agregar la dependencia a tu pom (sin quitar la importación de mockito de tu manifiesto).

Creo que también se debe especificar lo siguiente en el POM, en la configuración para el plugin-plataforma de configuración de destino:

<plugin> 
    <groupId>org.eclipse.tycho</groupId> 
    <artifactId>target-platform-configuration</artifactId> 
    <version>${tycho-version}</version> 
    <configuration> 
     <pomDependencies>consider</pomDependencies> 
    </configuration> 
    </plugin> 

Consulte las instrucciones en adding a dependency on a pom-first artifact. (No estoy seguro de si necesitarás especificar el resolver).

En cuanto al apoyo para los repositorios p2 en Nexus, mi entendimiento es que el plugin p2 para Nexus ya ha sido abierta externalizadas:

Cuestiones relacionadas