Webstart Mit Buckminster JNLP erzeugen

OliverR

Mitglied
Hallo,

ich habe bis jetzt eine Hudson-Buckminster Installation die sehr schön headless baut und am Ende ein ZIP-File erzeugt. Nun möchte ich gerne die Anwendung per WebStart starten. Was muss ich nun ändern, dass Buckminster ein JNLP-File erzeugt...?

Viele Grüße,

Oliver
 
Ein Plain Java Anwendung oder ein Eclipse RCP?
Für Eclipse RCP gibt es theoretisch einen build-in JNLP Support der allerdings kein first class citizen ist und AFAIK so seine Problem hat.
Für eine plain Java Anwendung ist die Frage was in deinem JNLP stehen soll.
Grundsätzlich musst du nur in einer CSPEC, CSPEX eine neue Action eintragen die einen Ant Actor verwendet um eine JNLP zu generieren.
Interessant ist wie diese JNLP entstehen soll. Wenn du zB die Dependencies dynamisch eintragen willst, dann kannst du dir von Buckminster eine Liste aller (transitiven) Component dependencies injezieren lassen (als Ant Property) und die dann in dein JNLP eintragen.
Wenn du konkreter beschreibst wie du den Inhalt der JNLP erzeugen willst, kann ich konkreter Helfen.
 
Hallo, es handelt sich dann doch schon um eine Eclipse-RCP-Anwendung.

Mein aktuelles cspex sieht im Moment so aus:

[XML]
<?xml version="1.0" encoding="UTF-8"?>
<cspecExtension
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:bc="http://www.eclipse.org/buckminster/Common-1.0"
xmlns="http://www.eclipse.org/buckminster/CSpec-1.0">
<dependencies>
<!-- Place your Dependencies here -->
</dependencies>
<generators>
<!-- Place your Generators here -->
</generators>
<artifacts>
<!-- Place your Artifacts here -->
</artifacts>
<actions>
<public name="create.product" actor="ant">
<actorProperties>
<property key="buildFile" value="build/product.ant" />
<property key="targets" value="create.product" />
</actorProperties>
<properties>
<property key="profile" value="ClientProfile" />
<property key="iu" value="org.abcd.client.product" />
</properties>
<prerequisites alias="repository">
<attribute name="site.p2" />
</prerequisites>
<products alias="destination" base="${buckminster.output}">
<path path="Client.${target.ws}.${target.os}.${target.arch}/" />
</products>
</public>
<public name="create.product.zip" actor="ant">
<actorProperties>
<property key="buildFileId" value="buckminster.pdetasks" />
<property key="targets" value="create.zip" />
</actorProperties>
<prerequisites alias="action.requirements">
<attribute name="create.product" />
</prerequisites>
<products alias="action.output" base="${buckminster.output}">
<path path="Client.${target.ws}.${target.os}.${target.arch}.zip" />
</products>
</public>
</actions>

<groups>
<!-- Place your Groups here -->
</groups>
<alterDependencies>
<!-- Place your Dependency alterations here -->
</alterDependencies>
<alterArtifacts>
<!-- Place your Artifact alterations here -->
</alterArtifacts>
<alterActions>
<!-- Place your Action alterations here -->
</alterActions>
<alterGroups>
<!-- Place your Group alterations here -->
</alterGroups>
</cspecExtension>
[/XML]

Es wäre natürlich schön, wenn der Inhalt der JNLP dynamisch bei jedem build erzeugt werden könnte. Aber im Prinzip würde es wohl auch reichen wenn man die JNLP einmal von Hand erzeugt, oder?
Ich stelle mir vor, dass nach jedem erfolgreichen Hudson-Build die Anwendung sofort zur Verfügung gestellt werden kann und der Anwender sie per WebStart starten kann. Ist das möglich?

Viele Grüße,

Oliver
 
Wie gesagt, es gibt Support in Buckminster um automatisiert aus einem RCP eine Webstart Anwendung zu machen.
Hier sollte ein Beispiel zu finden sein:
Eclipse Community Forums
Wenn du die JNLP allerdings von Hand erzeugst, dann brauchst du doch nur noch von Hudson aus deine Artifakte zu deployen. Dafür sollte doch aber ein Shell Script oder Ant Script genügen das du nach dem Buckminster Build aufrufst?
 
danke für den Link. Ich werde es mal ausprobieren....
Zum deploy aus Hudson heraus sollte sicherlich ein Shell-Script funktionieren - denke ich mal.

Mal eine andere Frage. Im cspex baue ich ja meinen Dateiname der Zip-datei zusammen. Hier zum Beispiel:
[XML]
...
<public name="create.product.zip" actor="ant">
<actorProperties>
<property key="buildFileId" value="buckminster.pdetasks" />
<property key="targets" value="create.zip" />
</actorProperties>
<prerequisites alias="action.requirements">
<attribute name="create.product" />
</prerequisites>
<products alias="action.output" base="${buckminster.output}">
<path path="Client.${target.ws}.${target.os}.${target.arch}.zip" />
</products>
</public>
...
[/XML]

Wie kann ich hier z.B. eine Build-Nummer oder ein Datum einbauen? Gibt es irgendwo eine Liste von Variablen, die Buckminster hier an dieser Stelle unterstützt?

Viele Grüße,

Oliver
 
Im Bucky Book gibt es einen Abschnitt zu Version Qualifiers.
Eclipse downloads - mirror selection
Welche Strategien für das Qualifier Replacement zur Verfügung stehen hängt auch von deiner RMAP ab. Zb die SVN Revision Number ist natürlich nur verfügbar wenn dein Build Material auch aus einem SVN Repository ausgecheckt wurde.
Die (Hudson) Build Nummer stellt dir Hudson als Umgebungsvariable zur Verfügung. Habe ich selbst noch nie benutzt, wenn es also nicht funktionieren sollte, sag bescheid, dann fixe ich das die Tage.
Timestamp ist ebenfalls kein Problem, den bekommst du von Ant selbst und auch von Hudson. Nur eben die Revision Number, last modified property usw. stehen nur zur Verfügung wenn deine Quellen aus einem SCM ausgecheckt werden.

EDIT: wenn der Checkout von Hudson und nicht von Buckminster erledigt wird, dann stellt dir Hudson (je nach SCM) folgende Umgebungsvariablen zur Verfügung:
# SVN_REVISION: For Subversion-based projects, this variable contains the revision number of the module.
# CVS_BRANCH: For CVS-based projects, this variable contains the branch of the module. If CVS is configured to check out the trunk, this environment variable will not be set.
 
Zuletzt bearbeitet:

Zurück
Oben