# Javadoc - Autofinder Plugin für Location Path



## pocketom (5. Jun 2009)

Hi,

nachdem ich Maven und Mule installiert habe, befinden sich ca. 200 weitere Libraries in meinem Build-Path. Dies ist ein Problem, den ich versuche auch den Javadoc stets gepflegt zu halten. Jetzt müsste ich theoretisch hingehen und für jedes JAR file den "Javadoc location path" konfigurieren. Das ist bei der Menge an Files aber wirklich sehr stressig. Gibt es hier ein kleines Eclipse-Plugin das die Location URLs automatisch setzt (z.B. aus einer zentralen URL Datenbank holt o.Ä....)?

THX,
Tom


----------



## maki (5. Jun 2009)

m2eclipse kann automatisch die javadoc für die artefakte runterladen, und vieles mehr.


----------



## pocketom (8. Jun 2009)

Hi, danke für den Tipp. Ich habe m2eclipse installiert, aber ich finde nirgends die Möglichkeit die apidoc URLs automatisch erkennen zu lassen. Muss ich die Quellen in m2eclipse von Hand einpflegen?


----------



## maki (8. Jun 2009)

Rechtsklick aufs Projekt -> m2 Maven -> Download JavaDoc bzw. Download Sources, was dir lieber ist.


----------



## pocketom (8. Jun 2009)

Ok, habe ich probiert, aber es scheint nichts zu passieren? Komischerweise kann ich jetzt auch gar kein Javadoc mehr erstellen (gesamtes Projekt markiert und "Generate Javadoc" ausgewählt).


EDIT: javadoc: error - No packages or classes specified.


----------



## maki (8. Jun 2009)

Verstehe dich nicht ganz... denke jetzt dass ich deine erste Frage schon nicht verstanden habe...

Warum sollte man mit Eclipse die JavaDoc für Projekte erstellen wenn man Maven2 nutzt? Das macht man mit Maven2...


----------



## pocketom (8. Jun 2009)

Ah ok. Für mich ist das alles noch ganz neu. Hatte noch nie Maven. 

Verstehe aber trotzdem nicht wieso nichts passiert wenn ich "Download Javadoc/Sources" verwende?

EDIT: Muss ich mir das "Maven 2 Javadoc Plugin" zusätzlich installieren?


----------



## maki (8. Jun 2009)

Solltest dir die Grundlagen zu Maven 2 aneignen:
http://repo.exist.com/dist/maestro/1.7.0/BetterBuildsWithMaven.pdf
An introduction to Maven 2 - JavaWorld
The Maven 2 POM demystified - JavaWorld



> Verstehe aber trotzdem nicht wieso nichts passiert wenn ich "Download Javadoc/Sources" verwende?


Dann lädt er dir entweder die JavaDoc oder die Sourcen zu den eingebundenen jars runter.


----------



## pocketom (8. Jun 2009)

Danke. Habe mich mal ein wenig eingelesen und unter reporting das maven-javadoc plugin konfiguriert. Leider produziert werder 

mvn site
mvn javadoc:javadoc

die docs. Bzw. ich finde es wohl nicht, denn Fehlermeldungen spuckt es dabei keine aus ???

Die generierte "site" enthält alles mögliche, nur eben auch keine apidocs...



```
<reporting>
  	<outputDirectory>.</outputDirectory>
  	<plugins>
  		<plugin>
  			<groupId>org.apache.maven.plugins</groupId>
  			<artifactId>maven-javadoc-plugin</artifactId>			
  		</plugin>
  	</plugins>
  </reporting>
```


----------



## maki (8. Jun 2009)

Mit javadoc:javadoc starten, dann findest du unter target/site/apidocs deine JavaDoc, wenn du sie als Jar willst dann eben mit mvn javadoc:jar starten.

Maven Javadoc Plugin - Introduction


----------



## pocketom (8. Jun 2009)

Das habe ich bereits ausprobiert, mvn javadoc:javadoc tut zwar irgend etwas aber unter target/site entsteht kein neur folder "apidocs" ?


----------



## maki (8. Jun 2009)

Du hast das outputDirectory verbogen, mach das mal rückgängig.


----------



## pocketom (8. Jun 2009)

Hab die Zeile entfernt aber es tut sich immer noch nichts.


----------



## maki (8. Jun 2009)

Wie sieht denn deine pom aus?


----------



## pocketom (8. Jun 2009)

```
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.mycompany</groupId>
  <artifactId>hellomule</artifactId>
  <name>HelloMule</name>
  <version>0.0.1-SNAPSHOT</version>
  <description>Hello World as Mule service.</description>
  <url>www.mycompany.com</url>
  <developers>
  	<developer>
  		<id>gtb2</id>
  		<name>Tom B.</name>
  		<email>mymail@mycompany.com</email>
  		<organization>MyCompany</organization>
  		<organizationUrl>http://www.mycompany.com</organizationUrl>
  		<timezone>+1</timezone>
  		<roles>
  			<role>Sr. Application Developer</role>
  		</roles>
	</properties>
  	</developer>
  </developers>
  <scm>
  	<url>scm:svn:svn://user:pass@bugtrack.mycompany.com/repos/mule</url>
  </scm>
  <organization>
  	<name>MyCompany</name>
  	<url>http://mycompany.com/</url>
  </organization>
  <build>
  	<sourceDirectory>./src/org/mule/example/hello</sourceDirectory>
  </build>
  <reporting>
  	<plugins>
  		<plugin>
  			<groupId>org.apache.maven.plugins</groupId>
  			<artifactId>maven-javadoc-plugin</artifactId>			
  		</plugin>
  	</plugins>
  </reporting>
</project>
```


----------



## maki (8. Jun 2009)

Schmeiss mal das gesetzte sourceDirectory raus.


----------



## pocketom (8. Jun 2009)

Jetzt moniert er:

[INFO] skip non existing resourceDirectory N:\workspace\java\HelloMule\src\main\
resources


Und tut nicht mehr viel... In der Tat existiert src\main\
resources auch nicht.


----------



## maki (8. Jun 2009)

src/main/resources ist Optional, du bekommst auch keinen Fehler, nicht mal 'ne Warnung, ist nur 'ne Info, also wird da nix "moniert" 

Sieh doch mal unter target/site/apidocs nach, zur Not einen Refresh in Eclipse machen.


----------



## pocketom (8. Jun 2009)

Nix. Kein apidoc folder unter target/site, auch nicht nach refresh.



```
N:\workspace\java\HelloMule>mvn site
[INFO] Scanning for projects...
[INFO] ------------------------------------------------------------------------
[INFO] Building HelloMule
[INFO]    task-segment: [site]
[INFO] ------------------------------------------------------------------------
[INFO] Preparing javadoc:javadoc
[INFO] No goals needed for project - skipping
[INFO] Preparing javadoc:test-aggregate
[INFO] ------------------------------------------------------------------------
[INFO] Building HelloMule
[INFO] ------------------------------------------------------------------------
[INFO] [resources:resources]
[WARNING] Using platform encoding (Cp1252 actually) to copy filtered resources,
i.e. build is platform dependent!
[INFO] skip non existing resourceDirectory N:\workspace\java\HelloMule\src\main\
resources
[INFO] [compiler:compile]
[b][INFO] No sources to compile[/b]
[INFO] Preparing javadoc:aggregate
[INFO] ------------------------------------------------------------------------
[INFO] Building HelloMule
[INFO] ------------------------------------------------------------------------
[INFO] No goals needed for project - skipping
[INFO] Preparing javadoc:test-javadoc
[INFO] [resources:resources]
[WARNING] Using platform encoding (Cp1252 actually) to copy filtered resources,
i.e. build is platform dependent!
[INFO] skip non existing resourceDirectory N:\workspace\java\HelloMule\src\main\
resources
[INFO] [compiler:compile]
[INFO] No sources to compile
[INFO] [site:site]
[INFO] Generating "About" report.
[INFO] Generating "Issue Tracking" report.
[INFO] Generating "Project Team" report.
[INFO] Generating "Dependencies" report.
[INFO] Generating "Project Plugins" report.
[INFO] Generating "Continuous Integration" report.
[INFO] Generating "Source Repository" report.
[INFO] Generating "Project License" report.
[INFO] Generating "Mailing Lists" report.
[INFO] Generating "Plugin Management" report.
[INFO] Generating "Project Summary" report.
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESSFUL
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 6 seconds
[INFO] Finished at: Mon Jun 08 16:09:59 CEST 2009
[INFO] Final Memory: 29M/53M
[INFO] ------------------------------------------------------------------------
N:\workspace\java\HelloMule>
```

Er scheint auch jetzt nicht mehr zu kompilieren?


----------



## maki (8. Jun 2009)

Ok, nochmal ganz langsam...

1. Du hast Java Quellcode in deinem Projekt unter src/main/java, ja?
2. Du startest einen Build mit mvn javadoc:javadoc, was ist die Ausgabe?


----------



## pocketom (8. Jun 2009)

S.o.

Der Code liegt nicht unter "src/main/java" sondern in diesem Beispiel unter "\src\org\mule\example\hello". Ich habe also den SourcePfad wieder eingetragen und siehe da, es klappt. Hatte vorhin wohl nen Fehler im Pfad o.Ä....


----------



## maki (8. Jun 2009)

> Der Code liegt nicht unter "src/main/java" sondern in diesem Beispiel unter "\src\org\mule\example\hello". Ich habe also den SourcePfad wieder eingetragen und siehe da, es klappt. Hatte vorhin wohl nen Fehler im Pfad o.Ä....


Wo nimmst du denn solche schlechten Beispiele her? 

Naja, Ende gut... jedenfalls versucht man sich mit Maven an die Konventionen zu halten, macht alles viel einfacher.


----------



## pocketom (8. Jun 2009)

Das beispiel kommt von Mule, ich habe beim Anlegen einfach nur ausgewählt das Beispielcode mit inkludiert werden soll... Nun habe ich zwar die Apidocs, aber finde mich jetzt ganz oben am Anfang meines Problems wieder. In der Doku werden leider keine Links zu den verwendeten Bibliotheken aufgelöst. Nun könnte ich für jede Lib die Apidoc URL spezifizieren, aber ich habe keine Lust das für >200 libs zu pflegen. Wie kann mir Maven hier jetzt helfen?


----------



## maki (8. Jun 2009)

> Wie kann mir Maven hier jetzt helfen?


Beispiel um das JavaDoc Plugin zu konfigurieren um die Java 5 API Doku zu verlinken, Java 5 Quelltext zu dokumentieren, das Maven StyleSheet zu verwenden und nicht soviel auf die Konsole zu schreiben:
[xml]
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-javadoc-plugin</artifactId>
				<configuration>
					<links>
						<link>http://java.sun.com/j2se/1.5.0/docs/api</link>
					</links>
					<source>1.5</source>
					<stylesheet>maven</stylesheet>
					<quiet>true</quiet>
				</configuration>
			</plugin>
[/xml]
Nebenbei bemerkt, du wirst wohl kaum 200 jars direkt verwenden, dabei handelt es sich wohl um die transitiven Dependencies, dir würde es reichen nur die JavaDoc der Jars zu verlinken, die du auch direkt nutzt.


----------



## pocketom (8. Jun 2009)

Ok, danke. Ich werde mal ein bisschen rumprobieren.


----------

