# build.xml + eclipse nachträgliche Intergration wie am Besten?



## dmike (18. Mrz 2011)

Was ist denn der Standardweg um ein bereits vorhandenes Projekt mit eigenem Ant build.xml
nachträglich in Eclipse einzubinden?

Ich habe versucht mit

New -> Project... -> Java Project from exsiting Ant Build File

das Projekt zu importieren. Das hat auch zuerst sehr gut geklappt. Aaaaber dann:

Wenn ich das Projekt kompilieren möchte, beschwert sich Ant, dass es meine Sourcen nicht finden
kann.

Als ich dann nachgeschaut habe, stelle ich fest, dass Eclipse das build.xml in das workspace-
Verzeichnis umkopiert hat. Ok, das ist dann natürlich klar, dass Ant nichts findet, den meine Sourcen
liegen ja außerhalb, des workspace. Wie bringe ich E bei nur das original build.xml  zu benutzen, denn
dann stimmen auch wieder alle Pfade.


----------



## dmike (18. Mrz 2011)

Ok vielleicht noch ein paar Details.


Ich möchte das Projekt ganz unabhängig von der IDE haben, deswegen soll der workspace von E
getrennt sein von dem src Baum. Das build.xml zähle ich mal zum den Sourcen dazu.

Jetzt ist die Frage, kann E damit umgehen und damit leben, dass Sourcen und build.xml _nicht_
im workspace enthalten sind? Oder braucht E all das unbedingt im workspace.

Anmerkung: Ich stelle mir aber der Fall vor, dass der workspace beim Start von E vielleicht mal Probleme
machen könnte und deshalb neu aufgesetzt werden müsste. Dann hätte ich den Salat, dass mein Projekt
mit dem workspace verbunden sind. Ausserdem müsste mit CVS/SVN immer aufpassen, dass ich keine
workspace-eigenen Dateien mit einchecke. 

Ok, das nur zur Erläuterung.


----------



## Wildcard (18. Mrz 2011)

> Anmerkung: Ich stelle mir aber der Fall vor, dass der workspace beim Start von E vielleicht mal Probleme
> machen könnte und deshalb neu aufgesetzt werden müsste. Dann hätte ich den Salat, dass mein Projekt
> mit dem workspace verbunden sind. Ausserdem müsste mit CVS/SVN immer aufpassen, dass ich keine
> workspace-eigenen Dateien mit einchecke.


Was ist das denn für eine Begründung? Nur weil ein Projekt in einem Eclipse Workspace liegt ist es doch nicht von Eclipse abhängig.
Wenn du die Eclipse metadaten (.project, .classpath,...) nicht einchecken willst, dann benutz .cvsignore, .svnignore, oder einfach Maven.


----------



## mvitz (18. Mrz 2011)

Wir haben das auf der Arbeit so gelöst:

.project und .classpath (die beiden wichtigsten Dateien für Eclipse Java Projekte) gibt es als "templates" und sind im svn eingecheckt. (allerdings dann in einem Ordner und mit anderem Namen).

Der Aufruf des ANT Targets "eclipse" kopiert die beiden Dateien in das Projekt root (hier sind sie per svn:ignore ignoriert).

Anschließend kann man in Eclipse über "Import" -> "Existing Eclipse Procekt" das Projekt in den Workspace importieren (und solange man den Haken "Copy to workspace" nicht anklickt, bleibt das Projekt komplett außerhalb des Workspaces.


----------



## Wildcard (18. Mrz 2011)

> .project und .classpath (die beiden wichtigsten Dateien für Eclipse Java Projekte) gibt es als "templates" und sind im svn eingecheckt. (allerdings dann in einem Ordner und mit anderem Namen).
> 
> Der Aufruf des ANT Targets "eclipse" kopiert die beiden Dateien in das Projekt root (hier sind sie per svn:ignore ignoriert).


Was soll denn der Nutzen davon sein? Wenn ihr die Dateien sowieso eincheckt, warum dann nicht an der richtigen Stelle?


----------



## dmike (18. Mrz 2011)

Wildcard hat gesagt.:


> Was ist das denn für eine Begründung? Nur weil ein Projekt in einem Eclipse Workspace liegt ist es doch nicht von Eclipse abhängig.
> Wenn du die Eclipse metadaten (.project, .classpath,...) nicht einchecken willst, dann benutz .cvsignore, .svnignore, oder einfach Maven.



Sorry, dass dieser Kommentar gerade Dich trifft. Vielleicht ist das auch eine Mentalitätsfrage, aber ich
finde die ziemlich barsche Art in deutschen Foren echt gewöhnungsbedürftig.  In Englisch würde man
sagen you may want to re-think... o-Ä. jedenfalls spürt man immer eine gewisse Höflichkeit. Was ist
das denn für eine Begründung? würde da wirklich aus dem Rahmen fallen und sehr plump wirken
(vorsichtig ausgedrückt) Ok das nur als Randnotiz.

Was Du vorschlägst geht natürlich auch, nur muss man immer sehr genau wissen, was in die .xxxignore
reingehört und was nicht.

Also wenn es eine wirklich elegante und "saubere" Trennung von IDE und project geben würde,
dann wäre mir das lieber.


Nachtrag: Es ist schon länger her, dass ich was mit E zu tun hatte. Aber ich kann mich daran erinnern,
dass der workspace öftermal zerschossen wurde, und es immer ein gutes Gefühl war, zu wissen,
dass die Sourcen nicht im workspace lagen. Man kann nat. trotzdem für die wichtigen Konfigdateien
von E im Repo einen eigenen Bereich haben. Aber die sind dann eben nicht mehr Teil des eigentlichen
Projekts und müssen deshalb auch nicht großartig berücksichtigt werden, separation of concerns so to
speak.


----------



## dmike (18. Mrz 2011)

mvitz hat gesagt.:


> Wir haben das auf der Arbeit so gelöst:
> 
> .project und .classpath (die beiden wichtigsten Dateien für Eclipse Java Projekte) gibt es als "templates" und sind im svn eingecheckt. (allerdings dann in einem Ordner und mit anderem Namen).



Ok, aber nicht mit absoluten Pfaden, oder? Wahrs. eher mit Umg.Variablen.



mvitz hat gesagt.:


> Der Aufruf des ANT Targets "eclipse" kopiert die beiden Dateien in das Projekt root (hier sind sie per svn:ignore ignoriert).
> 
> Anschließend kann man in Eclipse über "Import" -> "Existing Eclipse Procekt" das Projekt in den Workspace importieren (und solange man den Haken "Copy to workspace" nicht anklickt, bleibt das Projekt komplett außerhalb des Workspaces.



Aber könnt ihr dann zum Bauen das _selbe_ build.xml benutzen ? Sorry, ich hab das noch nicht ganz
verstanden.


Edit: Wegen "solange man den Haken "Copy to workspace.."
das hat mich ja gerade auch gewundert, dass wirklich nur das build.xml kopiert wurde. In dem
build.xml stehen natürlich relative Pfade zu den Sourcen, und wenn es jetzt aber in das workspace
Verzeichnis zwangsumgesiedelt wird, findet das arme build.xml natürlich keine Sourcen mehr.


----------



## mvitz (19. Mrz 2011)

Wildcard hat gesagt.:


> Was soll denn der Nutzen davon sein? Wenn ihr die Dateien sowieso eincheckt, warum dann nicht an der richtigen Stelle?



Tja, ich hab das auch nicht beschlossen und auf der Arbeit herrscht gegenüber IDEs eine gewisse Skepsis wenn es um eine Gesamtintegration geht. Bevor ich dort angefangen habe, waren IDE Dateien gar nicht eingecheckt, so ist es immerhin schon eine Verbesserung.

Den einzigen Vorteil den ich atm sehe ist, dass man z.B. den Projektnamen in der .project Individuell für sich ändern kann, ohne das dann aus versehen zu comnitten. Ich persönlich würde sowieso Maven bevorzugen.


@dmike: Naja, ANT nutze ich dann doch nicht aus Eclipse heraus sondern nach wie vor über die Kommandozeile, aber wenn du eben das gesamt Projekt inklusive Sourcen importierst, dann gilt für ANT das Basedir aus der Sandbox und da müssten relative Pfade doch passen (Evtl. im ant <project> das basedir auf "." setzen).

Und im .classpath muss man die Pfade afaik auch nicht Absolut angeben sondern, die gehen von der .classpath relativ ab, so dass das für verschiedene Entwickler auch kein Problem darstellt.


----------



## maki (19. Mrz 2011)

> Also wenn es eine wirklich elegante und "saubere" Trennung von IDE und project geben würde,
> dann wäre mir das lieber.


Dann nimm Maven wie vorgeschlagen, hat aber auch eine Lernkurve.

Ansonsten lass dir gesagt sein dass Wildcard einer der höflichsten Leute ist (Mods & User eingeschlossen) die hier schreiben 
Kann deine Aussage schon nachvollziehen, leider trifft es mit Wildcard den absolut falschen.

Zurück zum Thema, mit Maven bist du IDE unabhängig, ob Eclipse, Netbeans, IDEA oder einfach nur per Kommandozeile, wenn du Maven verwendest, brauchst du auch keine IDE spezifischen Dateien einzuchecken und der Build geht immer (wenn Maven und das Projekt richtig konfiguriert sind).


----------



## dmike (19. Mrz 2011)

Ok danke erst mal. Ich werd mal schauen.


Ich kann mich nur daran erinnern, dass ich damals das build.xml von Eclipse aus aufgerufen habe. Aber
das build.xml lag genau so wenig im workspace, wie die Sourcen selbst. Das weiß ich noch weil ich
den workspace ohne Probleme für das Projekt öfter mal mit rm -rf gelöscht habe. 

Also entweder habe ich eine falsche Erinnerung oder verwechsel da irgendwas, oder ich habe das
Projekt damals wirklich anders import und anders aufgesetzt :bahnhof: Naja ich lass das Thema
erst mal in Ruhe, vielleicht klärt sich die Verwirrung in meinem Kopf schon von alleine auf..


----------

