Запуск задач P2 Ant вне Eclipse

Я получил ant script, работающий нормально внутри 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>

Но я бы хотел, чтобы сервер Hudson CI мог запускать его, но независимо от того, все ли я помещал в ANT_HOME/lib, я не могу заставить эту задачу работать в простой командной строке ant... Я застрял в этой ошибке:

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.

Где определены задачи p2 ant? Есть ли способ запустить их за пределами Eclipse? Большое вам спасибо за помощь! Энтони

Ответ 1

Прочитав этот поток и Документация P2 Publisher, он должен находиться в org.eclipse.equinox.launcher_*.jar

Пример задачи P2 (а не задача ant здесь) только для аргумента -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

Ниже описаны P2 ant задачи, а в Справка Eclipse.


OP Anthony43 добавляет в комментарии:

Я просто хочу запустить цель ant с p2 taskdefs, вне eclipse.
Я узнал, что я должен использовать antRunner, используя такую ​​командную строку:

./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 

Но Эндрю Нифер (Комбитант Eclipse на PDE/Build, p2 и Equinox Framework) добавляет:

Задачи p2 должны выполняться внутри среды osgi и не будут работать в обычном ant run.
Вот почему вам нужно использовать приложение org.eclipse.ant.core.antRunner.
Начиная с "java -jar launcher.jar" это просто альтернативный метод вызова исполняемого файла eclipse.


martin jakubik упоминает:

Мне бы понравилось видеть команду, которую я мог бы вырезать и вставить, и все это соединить.
Я использовал:

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

Обратите внимание, что я не мог понять, что такое <targetProductFolder>, поэтому я использовал <eclipse-install...>.

Ответ 2

Я создал небольшой макрос Ant для этой цели

<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>

Ответ 3

Все задачи p2 НЕОБХОДИМО использовать время выполнения eclipse (как указано в приведенной выше помощи eclipse), поэтому вам обязательно нужно использовать eclipse.

Единственный способ обойти его - это проанализировать код затмения, извлечь все необходимое и создать с ним собственную систему сборки.