# Eclipse erkennt Projekte nicht



## H-Vollmilch (9. Apr 2009)

Hi alle miteinander,

Ich beschäftige mich gerade mit automatischen Builds, also versuche das ganze zum laufen zu bekommen. 
Ich verwende CruiseControl mit ANT und A4E.
Ant4Eclipse checkt die ganzen Sourcen aus (anhand von projectsets), danach wird compiliert, getestet etc. Funktioniert wunderbar.

Jetzt wollte ich im laufe des Buildprozesses Solutions erzeugen. Dazu hab ich unser Firmeninternes Plugin so umprogrammiert das es mit dem Startuphook mitstartet und einfach anfängt. Funktioniert auch soweit.

Jetzt das Problem. Eclipse startet und keine Projekte sind geladen. Der Workspace ist mit allem gefüllt aber er läd das einfach nicht. Habe dann mal eine andere Eclipse installation verwendet (gleiche Version mit der allerdings der Build nicht funktioniert). Die fährt hoch, läd die Projekte, aber das nicht richtig. Also alle sind da aber mehr als die Hälfte wird nicht als JavaProjekt erkannt, trotz .project und .classpath Dateien mit eingetragenem nature. Zwischen den Projekten die erkannt und nicht erkannt werden habe ich leider keinen Unterschied feststellen können. Man sollte noch erwähnen das während des BuildProzesses der .metadata Ordner mitgelöscht wird. Aber das die eine Eclipse install gar nichts und die andere alles findet aber nichts Richtig macht.....hmm hoffe mir kann jemand helfen

Danke und Gruß


----------



## Wildcard (9. Apr 2009)

Ohne Metadaten ist ein Verzeichnis eben kein Projekt. Ein IProject.create() kann dabei wunder bewirken.
Ich kenne jetzt deine genauen Anforderungen nicht, aber das erscheint mir recht umständlich. Eclipse Buckminster ist spezialisiert darauf Artefakte in einen Eclipse Workspace zu materialisieren, also solltest du dir das vielleicht mal ansehen.
Beschreib doch mal etwas mehr über dein Setup und deine Anforderungen, vielleicht kann ich dir noch das ein oder andere dazu sagen...


----------



## H-Vollmilch (9. Apr 2009)

Hey, 
Erstmal danke für die Antwort!

Was wird bezüglich der Projekte im .metadata Ordner gespeichert? Mir ist schon aufgefallen das wenn man den metadata Ordner eines Anderen Eclipse Wsp klaut, er Projekte erkennt die nichteinmal im aktuellen Wsp exisitieren...

Danke für den Tipp mit IProject.create, Könnte ich mal Probieren, allerdings müsste ich dann erst die Version von Eclipse zum springen kriegen die zwar mal die Projekte erkennt aber im Buildprozess versagt.

Hab gerade wenig Zeit aber Buckminister scheint ja auf den ersten Blick das gleiche zu erledigen. Wie ist das mit Scheduling und Benachrichtigung (via Mail (da kann man ja bestimmt ein Feature Proggen...)

Momentan sind die Anforderungen wie folgt.

Ein Build der vorraussichtlich jeden Tag automatisch anspringt, alle Projekte welche in der Projectset definiert sind aus SVN auscheckt (ohne.svn Verzeichnisse) und Compiliert. Die Projektstruktur ist dabei wie ein Eclispewsp (es ist im Prinzip einer da Ant4Eclispe das ganze erledigt und die eclipse jars nutzt). Danach werden anhand von .launch dateien mehrere Testcases gestartet mit einer Laufzeit vom insgesammt über 1h. Zum Schluss werden Coverage checks gemacht und Code Metriken überprüft. Das Funktioniert ja soweit. Nur die letzte Anforderung macht Probleme. Das Solutionserzeugen wird ja gerade von unserem Firmenplugin erledigt. Den Code rauszuziehen und in eine jar Packen wäre sehr sehr viel Aufwand (außer ich zieh vlt das ganze Plugin raus mit allen anderen Funktionen und versuch einen ANT Task draus zu machen). Wie gesagt bisher hab ichs etwas umgeschrieben das es mit eclipse automatisch startet, diverse Properties checkt, alle Projekte öffnet usw. Aber das ganze funktioniert eben nur wenn Eclipse die Projekte sieht und alle Buildpfade stimmen. 

So das wars  sorry für den langen Text

Danke und Gruß


----------



## Wildcard (9. Apr 2009)

H-Vollmilch hat gesagt.:


> Was wird bezüglich der Projekte im .metadata Ordner gespeichert? Mir ist schon aufgefallen das wenn man den metadata Ordner eines Anderen Eclipse Wsp klaut, er Projekte erkennt die nichteinmal im aktuellen Wsp exisitieren...


Da legen alle PlugIns ihre Informationen ab. Um den Workspace kümmert sich das Resources Plugin.



> Danke für den Tipp mit IProject.create, Könnte ich mal Probieren, allerdings müsste ich dann erst die Version von Eclipse zum springen kriegen die zwar mal die Projekte erkennt aber im Buildprozess versagt.


Er braucht keine Projekte zu erkennen. Das machst du mit IProject.create.



> Hab gerade wenig Zeit aber Buckminister scheint ja auf den ersten Blick das gleiche zu erledigen. Wie ist das mit Scheduling und Benachrichtigung (via Mail (da kann man ja bestimmt ein Feature Proggen...)


Buckminster ist weder ein CI System, noch ein Builder. Es hat die Aufgabe eine Component inklusive aller Abhängigkeiten aus einer Component Cloud (Dateisystem, CVS, SVN, Maven Repository, Eclipse Update Site,...) zu ziehen und Build Actors (Maven, Ant, PDE Builder) zu triggern.




> Ein Build der vorraussichtlich jeden Tag automatisch anspringt, alle Projekte welche in der Projectset definiert sind aus SVN auscheckt (ohne.svn Verzeichnisse) und Compiliert. Die Projektstruktur ist dabei wie ein Eclispewsp (es ist im Prinzip einer da Ant4Eclispe das ganze erledigt und die eclipse jars nutzt). Danach werden anhand von .launch dateien mehrere Testcases gestartet mit einer Laufzeit vom insgesammt über 1h. Zum Schluss werden Coverage checks gemacht und Code Metriken überprüft. Das Funktioniert ja soweit. Nur die letzte Anforderung macht Probleme. Das Solutionserzeugen wird ja gerade von unserem Firmenplugin erledigt. Den Code rauszuziehen und in eine jar Packen wäre sehr sehr viel Aufwand (außer ich zieh vlt das ganze Plugin raus mit allen anderen Funktionen und versuch einen ANT Task draus zu machen). Wie gesagt bisher hab ichs etwas umgeschrieben das es mit eclipse automatisch startet, diverse Properties checkt, alle Projekte öffnet usw. Aber das ganze funktioniert eben nur wenn Eclipse die Projekte sieht und alle Buildpfade stimmen.


Was buildest du da überhaupt? Plain Java Projekte? OSGi Bundles? PlugIns?
Lässt du ein volles Eclipse laufen, oder wie ist das zu verstehen?

Also für mich habe ich die perfekte Kombination für CI, Coverage, PlugIn Tests, Metriken,... gefunden in Hudson + Buckminster + Cobertura + Sonar. Extrem wenig Konfigurationsaufwand, praktisch keine Build Scripte und die Funktionalität lässt keine Wünsche offen.


----------



## H-Vollmilch (14. Apr 2009)

Hey,

sorry waren ja Feiertage...

Wir Builden normale JavaProjekte, 
Fürs Builden an und für sich läuft kein Eclipse. Die jars von Ant4Eclipse & Eclipse übernehmen die Arbeit ohne das ein Eclipse gestartet wird. Nur beim Solutionsbuilden, (da werden HTML Masken generiert und noch n paar Sachen gemacht und am Schluss alles gepackt) ist die einfachste Lösung Eclipse zu starten und mit dem StartupHook unser Plugin laufen zu lassen.

Ich glaube die ganze Buildlandschaft über den haufen zu werfen steht mittlerweile eig. schon außer frage. Ein Teil unserer Produkte werden schon mit dieser Kombination gebuildet (allerdings ohne Solutionsbuilden). Ich glaube ich versuch mal das create() vor dem Pluginstart anzustoßen. 

Hab noch ne Frage, wenn ich im Plugin sage Project.build oder open, hängt Eclipse. Also er macht den Build und das öffnen aber Eclipse scheint zu hängen, obwohl ich dem einen eigenen Job verpasst hab. 


```
[SIZE=2]
Job openProjectJob = [/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]new[/B][/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] Job([/SIZE][SIZE=2][COLOR=#2a00ff][SIZE=2][COLOR=#2a00ff]"Project is closed, opening project..."[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2]){
[/SIZE][SIZE=2][COLOR=#646464][SIZE=2][COLOR=#646464]@Override[/LEFT]
[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2][LEFT][/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]protected[/B][/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] IStatus run(IProgressMonitor monitor) {
[/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]try[/B][/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] {
[/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]for[/B][/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] (IProject project : XNSGPlugIn.[I]getWorkspace[/I]().getRoot().getProjects()) {
project.open([/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]new[/B][/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] SubProgressMonitor(monitor,10));
} 
XNSGPlugIn.[I]getWorkspace[/I]().build(IncrementalProjectBuilder.[/SIZE][I][SIZE=2][COLOR=#0000c0][SIZE=2][COLOR=#0000c0]FULL_BUILD[/I][/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2],[/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]new[/B][/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] SubProgressMonitor(monitor,11));
} [/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]catch[/B][/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] (CoreException e) {
e.printStackTrace();
log(e.getMessage());
[/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]return[/B][/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] Status.[/SIZE][I][SIZE=2][COLOR=#0000c0][SIZE=2][COLOR=#0000c0]CANCEL_STATUS[/I][/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2];
}
[/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]return[/B][/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] Status.[/SIZE][I][SIZE=2][COLOR=#0000c0][SIZE=2][COLOR=#0000c0]OK_STATUS[/I][/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2];
} [/LEFT]
};
[LEFT][/SIZE]
```
 
mach ich was grundlegend falsch?

Danke und Gruß

Denis​


----------

