2011-11-25 15 views
11

Quiero construir una aplicación RCP con una plataforma de destino que sea un directorio con Maven/Tycho.
Ahora tengo algunos problemas que las dependencias no se pudieron resolver.¿Cómo puedo usar un directorio local como plataforma de destino para una compilación de Tycho?

Internal error: java.lang.RuntimeException: "No solution found because the 
problem is unsatisfiable.": ["Unable to satisfy dependency from 
de.test.prototype.main 1.0.0.qualifier to bundle org.eclipse.ui 0.0.0.", 
"Unable to satisfy dependency from de.test.prototype.main 1.0.0.qualifier 
to bundle org.eclipse.core.runtime 0.0.0.", ... 

En total hay varios problemas de resolución de la dependencia, por lo que creo Tycho no puede usar mi plataforma de destino.
leí http://wiki.eclipse.org/Tycho/Target_Platform y no es la nota siguiente:.

Los tipos de ubicación "instalación" "directorio", y "características" no son compatibles"

Así que mi pregunta es: ¿Cómo hacer consigo Tycho usar mi plataforma de destino, aunque es un directorio?

+0

Hice un archivo .target e intenté usarlo a través de "configuración-plataforma-destino" y artefacto pero no puedo resolver dependencias ... ¿es solo un soporte de repositorio en línea? – Orri

+0

Orri, tu comentario parece ser un problema diferente. Debería hacer una nueva pregunta para ello. – oberlies

Respuesta

1

Según mi exprerience, Tycho sólo admite línea p2 repositorios. se niega a trabajar con un acuerdo de recompra p2 ubicada en un disco local. extraño, pero cierto

+3

Esta afirmación no es correcta: Tycho tiene soporte total de modo fuera de línea desde 0.14.0, y no ha habido informes de errores sobre este tema desde entonces. Obviamente necesitará una compilación en línea primero para que se llene la caché, pero luego funciona el modo sin conexión. – oberlies

7

Tycho requiere metadatos p2 para resolver dependencias en su compilación. Esta es la razón por la cual una carpeta con solo paquetes y características no puede ser utilizada.

Sin embargo, puede convertir su carpeta en un repositorio p2 utilizando Features and Bundles Publisher Application. Después de haber hecho esto, puede hacer referencia a la carpeta como ubicación "Sitio de software" a través de una URL file: en su archivo de definición de destino. Entonces Tycho también podrá usarlo.

Sin embargo, tenga en cuenta que primero debe preguntarse si realmente necesita hacer esto: ¿las características y los paquetes en su carpeta realmente no están disponibles en ningún repositorio de p2? Si es así, se recomienda encarecidamente que no ejecute las funciones y los editores de Bundles en ellos (o puede estar causando violaciones de las suposiciones básicas de p2, lo que puede ocasionar problemas que normalmente solo son visibles para los usuarios). En su lugar, debe hacer referencia a estas características y paquetes directamente desde el repositorio de p2, p. a través de la ubicación de "Sitio de software" en su archivo de destino.

3

Crear un acuerdo de recompra de sus plug-ins y subirlo a un servidor HTTP (como Apache) y apuntar su pom Tycho al repositorio

Este ejemplo es para el mac y eclipsar a 4, pero con un poco de que pellizcar puede hacer que funcione en otras plataformas.

primero cree una carpeta src en el escritorio. En esta carpeta, cree 2 carpetas: características complementos

Ahora copie sus complementos en la carpeta de complementos y funciones en la carpeta de características.

A continuación, crear una carpeta de destino vacía en algún lugar (subir esta carpeta a su servidor)

para este ejemplo he creado mis dos carpetas en el escritorio para que sea sencillo

Entonces hago esto:

destination folder : /Users/yves/Desktop/repo 
source folder : /Users/yves/Desktop/src 

Terminal app : cd /Applications/Eclipse4 

./eclipse  -debug -consolelog -nosplash -verbose -application org.eclipse.equinox.p2.publisher.FeaturesAndBundlesPublisher -metadataRepository file:/Users/yves/Desktop/repo -artifactRepository file:/Users/yves/Desktop/repo -source /Users/yves/Desktop/src -compress -append -publishArtifacts 

La carpeta de repositorio ahora contiene un repositorio de su plataforma de destino. Suba, ajuste el pom y compile.

Cuestiones relacionadas