2010-02-24 18 views
10

yo nos script Ant funcionando bien dentro de Eclipse Esto es un pedazo de él:la ejecución de tareas P2 Ant fuera Eclipse

<p2.composite.repository failOnExists="true"> 
      <repository location="file:/${basedir}/compRepo" name="Repository description goes here" /> 
      <add> 
       <repository location="http://url/Eclipse/repo/Galileo-3.5.1/" /> 
       <repository location="http://another-url/Java/repo/4.0/" /> 
       <repository location="${diag.location}" /> 
      </add> 
     </p2.composite.repository> 

Pero me gustaría servidor Hudson CI para poder ejecutarlo, pero, no importa todos los frascos que puse en ANT_HOME/lib no puedo conseguir esta tarea a ejecutar de una forma sencilla hormiga línea de comandos ... me quedé atrapado con este error:

C:\workspaces\workspace\project\junit.script\createCompRepo.xml:10: Problem: failed to create task or type p2.composite.repository 
Cause: The name is undefined. 
Action: Check the spelling. 
Action: Check that any custom tasks/types have been declared. 
Action: Check that any <presetdef>/<macrodef> declarations have taken place. 

donde se definen las tareas p2 hormiga? ¿Hay alguna forma de ejecutarlos fuera de Eclipse? ¡Muchas gracias por su ayuda! Anthony

+0

He actualizado mi respuesta para reflejar lo que ha encontrado. Nota: Andrew Niefer (Eclipse committer en PDE/Build, p2, y Equinox Framework) hizo un comentario interesante que tal vez quiera leer (lo he incluido también en mi respuesta) – VonC

Respuesta

12

Al leer this thread y la P2 Publisher documentation, que deben estar en org.eclipse.equinox.launcher_*.jar

Ejemplo de una tarea P2 (no es una tarea ant aquí) sólo por el argumento -jar:

java -jar <targetProductFolder>/plugins/org.eclipse.equinox.launcher_*.jar 
-application org.eclipse.equinox.p2.publisher.UpdateSitePublisher 
-metadataRepository file:/<some location>/repository 
-artifactRepository file:/<some location>/repository 
-source /<location with a site.xml> 
-configs gtk.linux.x86 
-compress 
-publishArtifacts 

El P2 Ant tasks are described here, y en el Eclipse help.


El PO Anthony43 añade en los comentarios:

sólo quiero ejecutar una tarea ant con un taskdefs p2, fuera de Eclipse.
descubrí que debo utilizar antRunner, utilizando una línea tales comando:

./eclipse -vm /opt/sun-java2-6.0/bin/java -nosplash \ 
-data ${java.io.tmpdir}/workspace -consolelog  \ 
-application org.eclipse.ant.core.antRunner   \ 
-f /path/to/scripts/partialMirrorFromRepo.xml 

Pero Andrew Niefer (confirmador Eclipse PDE/Generar, p2, & Equinox marco) agrega:

Las tareas de p2 deben ejecutarse dentro de un entorno osgi y no funcionarán en un experimento normal.
Es por eso que necesita utilizar la aplicación org.eclipse.ant.core.antRunner.
Comenzar con "java -jar launcher.jar" es solo un método alternativo para invocar el ejecutable de eclipse.


martin jakubik menciones:

Me hubiera gustado ver un comando que podía cortar & pasta y que poner todo junto.
Lo que utilicé fue:

java -jar <eclipse-install-directory>\eclipse\plugins\org.eclipse.equinox.launcher_*.jar -application org.eclipse.ant.core.antRunner. 

Tenga en cuenta que yo no podía entender lo que era <targetProductFolder>, por lo que utiliza <eclipse-install...> lugar.

+0

Véase también http: //aniefer.blogspot. com/2009/08/versioning-p2-slides-from-eclipsecon.html – VonC

+0

¡Hola! gracias por su respuesta, pero ... Solo quiero ejecutar un objetivo ant y con taskdefs p2, fuera de eclipse. Descubrí que debería usar antRunner, usando una línea de comando como esta: ./eclipse -vm /opt/sun-java2-6.0/bin/java -nosplash -data $ {java.io.tmpdir}/workspace -consolelog -application org.eclipse.ant.core.antRunner \ \t \t -f /home/nboldt/eclipse/workspace-jboss/org.eclipse.dash.common.releng/tools/scripts/partialMirrorFromRepo.xml ¡De todos modos! –

+0

Las tareas p2 deben ejecutarse dentro de un entorno osgi y no funcionarán en una ejecución normal de hormigas. Es por eso que necesita utilizar la aplicación org.eclipse.ant.core.antRunner. Comenzar con "java -jar launcher.jar" es solo un método alternativo para invocar el ejecutable eclipse. –

1

Todas las tareas p2 NECESITAN el tiempo de ejecución del eclipse (como se indica explícitamente en la ayuda del eclipse mencionado anteriormente), por lo que definitivamente necesita usar eclipse.

La única manera de evitarlo sería analizar el código de eclipse, extraer lo que se necesita y crear su propio sistema de compilación con él.

2

he creado una pequeña hormiga macro para ese propósito exacto

<path id="equinox.launcher.path"> 
    <fileset dir="${eclipse.home}/plugins"> 
     <include name="org.eclipse.equinox.launcher_*.jar" /> 
    </fileset> 
</path> 

<macrodef name="antRunner"> 
    <!-- Ant script location --> 
    <attribute name="antFile" /> 
    <!-- the arguments for the script that is executed --> 
    <attribute name="args" default=""/> 
    <sequential> 
     <java 
      classname="org.eclipse.equinox.launcher.Main" 
      fork="true" 
      failonerror="true"> 

      <arg line="-application org.eclipse.ant.core.antRunner" /> 
      <arg line="-f @{antFile}" /> 
      <arg line="@{args}"/> 
      <classpath refid="equinox.launcher.path" /> 
     </java> 
    </sequential> 
</macrodef> 
+0

más uno para mostrar cómo hacerlo desde dentro de un script ant, pero no tengo el propósito de @antFile. ¿Tenemos que especificar el archivo de la hormiga en eclipse o lo encuentra un antrunner por mí? ¿Cómo sé dónde encontrar los archivos ant para las tareas comunes? – Rhubarb

Cuestiones relacionadas