# Buckminster: Versionen einzelner Jars aus der Targetplatform



## code404 (22. Jun 2011)

Hallo zusammen,

ich möchte neben dem Bau eines RCP Client (welcher schon funktioniert) noch eine ausführbare .jar generieren.
Dies mache ich durch einen einfachen ANT Call (<javac...) aus Buckminster.
Beim generieren des Classpath benötige ich aber die Versionen der aktuellen Targetplatform.

Ist es also in Buckminster möglich, die Version einzelner Jars der aktuellen Targetplattform zu ermitteln?

Besten Dank


----------



## Wildcard (22. Jun 2011)

Buckminster hat die Informationen aber wie willst du sie nach Ant bringen?


> Beim generieren des Classpath benötige ich aber die Versionen der aktuellen Targetplatform.


Buckminster kann dir einen Classpath in einem Property übergeben oder bei Bedarf auch ein Ant Fileset in dem alle deine Abhängigkeiten stehen.
Du musst im Prinzip nur die benötigen Artifakte als Prerequiste der Action die Ant ausführt definieren.
Ich habe das zum Beispiel schon benutzt um diverse Artifakte die Buckminster aus Maven Repos und Eclipse Update Sites aufgelöst hat per Ant Script in einen lib Folder eines bestimmten Projekts zu kopieren.
Seite 177:
Eclipse downloads - mirror selection


----------



## code404 (23. Jun 2011)

Erst mal vielen Dank.
Theoretisch hab ich es verstanden, nur in der praktischen Ausführung mangelt es:
buckminster.cspex:
[XML]
 <public name="create.jar" actor="ant">
            <actorProperties>
                <property key="buildFile" value="build/build.ant" />
                <property key="targets" value="main" />
            </actorProperties>
            <prerequisites alias="input">
                <attribute name="org.eclipse.core.runtime" />
            </prerequisites>
  </public>
[/XML]
Ich weiß nicht was ich als alias bei den Prerequisites angeben soll (input????)?

Vielen Dank

Kann ich in der build.xml dann einfach auf die attribute zugreifen (${org.eclipse.core.runtime}.
[XML]
 <jar destfile="my.jar" filesetmanifest="mergewithoutmain">
            <manifest>
                <attribute name="Built-By" value="${user.name}"/>
                <attribute name="Main-Class" value="main"/>
                <attribute name="Class-Path" value=". ${org.eclipse.core.runtime}"/>
            </manifest>
            <fileset dir="bin"/>
        </jar>
[/XML]


----------



## Wildcard (23. Jun 2011)

Der alias ist deine eigene Benamsung unter der das Proptery in Ant zur Verfügung gestellt wird.
Dazu kommt dann noch der Prefix fs für Prerequiste die aus mehr als einem 'Ding' bestehen und sp wenn es nur eins ist.
Also zB ${sp:input}


----------



## code404 (23. Jun 2011)

build.ant müsste dann also so aussehen:
[XML]
<jar destfile="my.jar" filesetmanifest="mergewithoutmain">
            <manifest>
                <attribute name="Built-By" value="${user.name}"/>
                <attribute name="Main-Class" value="main"/>
                <attribute name="Class-Path" value=". ${sp:input}"/>
            </manifest>
            <fileset dir="bin"/>
        </jar>
[/XML]

Wie kann ich aber jetzt in <attribute name="..."/> (im .cspex-File) auf das in der TargetPlatform liegende Plugin org.eclipse.core.runtime zugreifen?

Vielen Dank


----------



## Wildcard (23. Jun 2011)

[XML]<attribute name="java.binaries" component="org.eclipse.core.runtime" />[/XML]
Die Komponente die die cspex enthält muss eine Abhängigkeit auf org.eclipse.core.runtime haben.


----------

