2010-05-22 2 views
8

Wenn Sie in Java die Quellcode-Dateien (.java) in das Jar zusammen mit Klassen packen ( .class), werden die meisten IDEs wie eclipse die Javadoc-Kommentare für die Code-Vervollständigung anzeigen.Gibt es einen Nachteil beim Einfügen von API-Code in ein JAR zusammen mit den Klassen?

IIRC gibt es einige Open-Source-Projekte, die dies wie JMock tun.

Sagen wir, ich habe meinen API-Code sauber vom Implementierungscode getrennt, so dass ich etwas wie myproject-api.jar und myproject-impl.jar habe, gibt es irgendeinen Grund, warum ich den Quellcode nicht in mein myproject-api schreiben sollte .Krug ?

Wegen der Leistung? Größe?

Warum machen andere Projekte das nicht?

EDIT: Abgesehen von dem Maven-Download-Problem wird es weh tun, meine Quellen in die Klassen Jar zu setzen, um so viele Entwickler wie möglich zu unterstützen (Maven oder nicht)?

+0

Ich hatte ein groovy Skript, das die code jars mit den Quellen jars von Maven assoziierte, indem er den Eclipse .classpath redigierte. Ich benutze das Maven-Plugin nicht, aber ich muss mir vorstellen, dass es diese Assoziation automatisch macht. –

Antwort

6

Allgemeinen wegen Verteilung Grund:

wenn Sie separate Binärdateien und Quellen halten, können Sie nur herunterladen, was Sie brauchen.
Zum Beispiel: Jetzt

  • myproject-api.jar und myproject-impl.jar
  • myproject-api-src.jar und myproject-impl-src.jar
  • myproject-api-docs.zip und myproject-impl-docs.zip

, m2eclipse - Maven for Eclipse kann download sources automatisch auch

mvn eclipse:eclipse -DdownloadSources=true -DdownloadJavadocs=true 

Jetzt kann es auch generate the right pom, die Verteilung der Quelle oder javadoc jar zu verhindern, wenn jemand eine Abhängigkeit von Ihrem jar erklären.
Die OP Kommentare:

kann auch nicht Download-Größe ist ein Problem vorstellen (ich meine es 2010 ein paar 100k ist, sollte kein Problem sein).

Nun eigentlich ist es (das heißt „die Größe) ist ein Problem.
Maven leidet bereits unter dem‚auf den ersten Build‘-Syndrom die Hälfte der Internet-Download.
Wenn die Downloads auch Quellen und/oder javadocs , das fängt wirklich ermüdend zu sein

plus, die "Verteilung" Aspekt der Implementierung beinhaltet:.. in einem webapp server, there is no real advantage to deploy a jar with sources in it

Schließlich, wenn Sie wirklich brauchen Quellen mit Binärdateien zu verknüpfen, dies SO question on Maven could help.

+0

Sicher kann ich das sehen. Aber es ist ein Schmerz in den Hintern, um dann myproject-api.jar myproject-api-src.jar zu verbinden, so dass Sie das Javadoc über die Codevervollständigung sehen können. Tut das das Maven Eclipse Plugin? –

+0

Ich kann mir auch nicht vorstellen, Download-Größe ist ein Problem (ich meine, es ist 2010 ein paar 100k sollte kein Problem sein). Erstellen Sie also die separaten Gläser, aber haben Sie auch die Quelle * -api.jar. –

+0

@Adam: gerade meine Antwort abgeschlossen. – VonC

1

Maven, befestigen Sie die Quellen automatisch wie folgt aus:

http://maven.apache.org/plugins/maven-source-plugin/usage.html

und die javadocs wie folgt aus:

http://maven.apache.org/plugins/maven-javadoc-plugin/jar-mojo.html

diese Weise werden sie von

automatisch abgeholt werden
mvn eclipse:eclipse -DdownloadSources=true -DdownloadJavadocs=true 

oder durch m2eclipse

+0

Ja, ich dachte, Maven hätte es getan, weil ich geschworen hätte, dass ich es das letzte Mal gemacht habe, als ich es benutzt habe. Das einzige Problem ist, dass viele Firmen/Gruppen (leider einschließlich meiner) Maven nicht verwenden, aber entweder Apache Ivy verwenden oder nur ihr eigenes Jar Repo. –

+0

wirklich? Ich habe in etwa 3 Jahren keine nicht-maven Kunden gehabt. aber da Efeu "Maven-kompatibel" ist, muss es eine Möglichkeit geben, dieses Verhalten in Efeu zu imitieren. –

+0

Sie müssen mit einigen klugen Leuten arbeiten :) Ja, ich wünschte, das wäre der Fall für mich, aber sowohl unsere Kunden/Kunden als auch unser interner Code verwenden Apache Ameise. Ich habe Ant-Skripte aufgrund der Inkonsistenz von Projekt zu Projekt wirklich nicht mehr gemocht. –