2010-02-24 30 views
10

Tôi có kịch bản kiến ​​chạy tốt trong Eclipse Đây là một mảnh của nó:Chạy nhiệm vụ P2 Ant bên ngoài 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> 

Nhưng tôi muốn Hudson CI máy chủ để có thể chạy nó, nhưng, không có vấn đề tất cả các lọ tôi đặt trong ANT_HOME/lib tôi có thể không nhận được nhiệm vụ này để chạy trong một kiến ​​dòng lệnh đơn giản ... tôi đã bị mắc kẹt với lỗi này:

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. 

đâu được định nghĩa nhiệm vụ p2 kiến? Có cách nào để chạy chúng bên ngoài Eclipse không? Cảm ơn bạn rất nhiều vì đã giúp bạn! Anthony

+0

Tôi đã cập nhật câu trả lời của tôi để phản ánh những gì bạn đã được tìm thấy. Lưu ý: Andrew Niefer (Eclipse committer trên PDE/Xây dựng, p2, & Equinox Framework) đã làm cho một bình luận thú vị bạn có thể muốn đọc (Tôi đã bao gồm nó trong câu trả lời của tôi là tốt) – VonC

Trả lời

12

Bằng cách đọc this threadP2 Publisher documentation, nó phải ở trong org.eclipse.equinox.launcher_*.jar

Ví dụ về một nhiệm vụ P2 (không phải là một nhiệm vụ kiến ​​ở đây) chỉ dành cho lập luận -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 

Các P2 Ant tasks are described here, và trong số Eclipse help.


Các OP Anthony43 thêm trong các ý kiến:

Tôi chỉ muốn chạy một một mục tiêu kiến ​​với taskdefs p2, bên ngoài của nhật thực toàn phần.
tôi phát hiện ra rằng tôi nên sử dụng antRunner, sử dụng như một dòng lệnh:

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

Nhưng Andrew Niefer (Eclipse committer trên PDE/Xây dựng, p2, & Equinox Framework) cho biết thêm:

Các nhiệm vụ p2 cần phải được chạy bên trong một môi trường osgi và sẽ không hoạt động trong một kiến ​​chạy bình thường.
Đó là lý do tại sao bạn cần sử dụng ứng dụng org.eclipse.ant.core.antRunner.
Bắt đầu bằng "java -jar launcher.jar" chỉ là một phương pháp thay thế để gọi thực thi nhật thực.


martin jakubik đề cập:

tôi đã có thể thích để xem một lệnh rằng tôi có thể cắt & dán và đặt mọi thứ lại với nhau.
Những gì tôi được sử dụng là:

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

Lưu ý rằng tôi không thể tìm ra <targetProductFolder> là gì, vì vậy tôi sử dụng <eclipse-install...> để thay thế.

+0

Xem thêm http: //aniefer.blogspot. com/2009/08/versioning-p2-slides-from-eclipsecon.html – VonC

+0

Xin chào! cảm ơn bạn cho câu trả lời của bạn, nhưng ... Tôi chỉ muốn chạy một mục tiêu kiến ​​với p2 taskdefs, bên ngoài nhật thực. Tôi phát hiện ra rằng tôi nên sử dụng antRunner, sử dụng một dòng lệnh: ./eclipse -vm /opt/sun-java2-6.0/bin/java -nosplash -data $ {java.io.tmpdir}/workspace -consolelog -ứng dụng org.eclipse.ant.core.antRunner \ \t \t -f /home/nboldt/eclipse/workspace-jboss/org.eclipse.dash.common.releng/tools/scripts/partialMirrorFromRepo.xml Thnaks anyway! –

+0

Nhiệm vụ p2 cần được chạy bên trong một môi trường osgi và sẽ không hoạt động bình thường. Đó là lý do tại sao bạn cần sử dụng ứng dụng org.eclipse.ant.core.antRunner. Bắt đầu với "java -jar launcher.jar" chỉ là một phương thức thay thế để gọi thực thi nhật thực. –

1

Tất cả các nhiệm vụ p2 CẦN thời gian chạy nhật thực (như được nêu rõ trong nhật thực giúp nêu trên), vì vậy bạn chắc chắn cần sử dụng nhật thực.

Cách duy nhất để nhận được vòng của nó là phân tích mã nhật thực, trích xuất những gì cần thiết và tạo hệ thống xây dựng của riêng bạn với nó.

2

tôi đã tạo một macro Ant nhỏ cho rằng mục đích chính xác

<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

cộng với một để hiển thị cách làm điều đó từ withIN một tập lệnh kiến, nhưng tôi không nhận được mục đích của @antFile. Chúng ta có phải xác định các antfile trong nhật thực hay antrunner thấy rằng đối với tôi? Làm cách nào để biết nơi tìm tệp kiến ​​cho các tác vụ phổ biến? – Rhubarb

Các vấn đề liên quan