Запуск задач 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.
Единственный способ обойти его - это проанализировать код затмения, извлечь все необходимое и создать с ним собственную систему сборки.