2012-08-28 11 views
6

Estoy empezando con Tycho, y estoy perplejo en una etapa temprana. Tal vez estoy malinterpretando algo, así que por las dudas, esto es lo que estoy esperando: defino las necesidades de mi paquete en estilo OSGi (es decir, en MANIFEST.MF por Import-Package), y Tycho de alguna manera usa esa información sobre la marcha en lugar de necesitar redefinirla todo en estilo Maven (es decir, no tengo que poner dependencias en pom.xml).Tycho - "Restricción insatisfecha" en un paquete de importación

Por lo tanto, hice un simple proyecto Maven, en Eclipse con el plugin m2eclipse, m2eclipse-Tycho añadir, y el plugin de PDE, y ponga el siguiente material Tycho en el POM:

<properties> 
    <tycho-version>0.15.0</tycho-version> 
</properties> 

<build> 
    <plugins> 
     <plugin> 
      <groupId>org.eclipse.tycho</groupId> 
      <artifactId>tycho-maven-plugin</artifactId> 
      <version>${tycho-version}</version> 
      <extensions>true</extensions> 
     </plugin> 
    </plugins> 
</build> 

luchado a través de algunos errores de configuración extravagantes, y finalmente obtuve un proyecto esencialmente vacío (es decir, sin código fuente) que no dio errores ni advertencias en Eclipse. Luego copié mi código fuente de otro proyecto y (como era de esperar) recibí un montón de errores de compilación debido a dependencias perdidas. El primero fue AbstractChannel de org.jboss.netty.channel. Yo uso la versión 3.5.1.Final de Netty, por lo que he editado mi MANIFIEST.MF incluir:

Import-Package: org.jboss.netty.channel;version="[3.5.1,4)" 

entonces yo estaba esperando Tycho de entender de alguna manera mágica que necesito Netty, y por lo tanto actuar como si tuviera insertado algo como lo siguiente en mi Maven pom.xml:

<dependency> 
    <groupId>org.jboss.netty</groupId> 
    <artifactId>netty</artifactId> 
    <version>3.5.1.Final</version> 
</dependency> 

en su lugar, todo lo que sucedió fue que consiguió un error adicional en Eclipse, diciendo:

Unsatisfied constraint: 'Import-Package: org.jboss.netty.channel;version="[3.5.1,4.0.0)" 

no sé a dónde ir de el re. ¿Tengo algún malentendido fundamental sobre lo que se supone que debe hacer Tycho? ¿O hay algo más que tengo que configurar para que pueda hacer la traducción "mágica" de una entrada Import-Package en MANIFEST.MF a una entrada <dependency> pom.xml? ¿O algo mas?

Gracias de antemano.

Respuesta

3

Sí, aún quedan algunos obstáculos por tomar.

En resumen, deberá proporcionar a Tycho un repositorio desde el que pueda recuperar las dependencias.

En un poco más de detalle:

  • que necesita para configurar la plataforma de destino, y pasarlo a Tycho. Supongo que ya ha configurado su plataforma de destino de alguna manera, de lo contrario Eclipse se quejaría también por no encontrar Netty.
  • Asegúrese de compartir su plataforma de destino en su espacio de trabajo, para que Tycho pueda acceder a ella también.
  • Dile Tycho utilizar esa plataforma de destino como this
  • Tycho plataformas de destino compatibles sólo diseños de soporte P2, así que no hay directorios de civil. No estoy seguro de cuál es la mejor manera de hacer un repositorio de p2 así, ya que he pedido un while back. Sin respuesta en absoluto, pero explico allí qué (tipo de) funciona para mí.

creo que sirve, Frank

+0

Gracias! La plataforma de destino era lo que me faltaba. – user1628103

3

Su comprensión es bastante bueno ya, pero hay un pequeño pero esencial pieza que falta: A diferencia de Maven, hay ningún repositorio predeterminado canónica (como "central") en Tycho. Debe configurar dónde buscará Tycho para resolver las dependencias OSGi.

Este ámbito de búsqueda se llama "target platform" en Tycho. Hay different ways so include artifacts in the target platform; la más fácil es configurar el repositorio p2 que contiene sus dependencias en el POM con un atributo adicional <layout>p2</layout> (suponiendo que conoce un repositorio p2 que contiene las dependencias).

0

También existe la posibilidad de agregar el paquete faltante a través de una dependencia adicional configuración, directamente al paquete que falla:

<plugin> 
<groupId>org.eclipse.tycho</groupId> 
<artifactId>target-platform-configuration</artifactId> 
<version>${tycho.version}</version> 
<configuration> 
    <dependency-resolution> 
    <extraRequirements> 
    <requirement> 
    <type>eclipse-plugin</type> 
    <id>org.eclipse.jface.text</id> 
    <versionRange>0.0.0</versionRange> 
    </requirement> 
    </extraRequirements> 
</dependency-resolution> 
</configuration> 
</plugin> 
Cuestiones relacionadas