Ausgangssituation
Wenn man, z.B. in Netbeans, ein Maven Projekt anlegt, bekommt man eine minimale pom.xml erstellt. Diese beinhaltet die Maven-Basisdaten (groupId, artefactId, version) sowie weitere Infos, damit beim Bauen des Projektes ein sinnvolles "Ergebnis", nämlich eine JAR-Datei mit den kompilierten Klassen, herauskommt.
Kleiner Einschub hier: in meinem ersten Artikel JSP Taglib in einem Maven JAR habe ich beschrieben, wie man weitere Dateien - also nicht nur die kompilierten Klassen - in das JAR hineinbekommt.
Zielsetzung
Manchmal möchte man jedoch nicht nur das JAR mit den Klassen herausbekommen, sondern auch ein JAR mit den Sourcen sowie ein weiteres JAR mit dem Javadoc.
Die Lösung
Dies lässt sich recht einfach erreichen - der folgende Block muss in die pom.xml unterhalb des properties-Blocks eingefügt werden.
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-source-plugin</artifactId> <executions> <execution> <id>attach-sources</id> <goals> <goal>jar</goal> </goals> </execution> </executions> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-javadoc-plugin</artifactId> <executions> <execution> <id>attach-javadocs</id> <goals> <goal>jar</goal> </goals> </execution> </executions> </plugin> </plugins> </build>
Das Ergebnis
Wenn man nun das Projekt mit Maven bauen lässt, indem man mvn package aufruft, werden drei JAR-Dateien jeweils mit den Klassen, den Sourcecode-Dateien sowie dem Javadoc erstellt.
Soweit dies sinnvoll erscheint, werde ich dies zukünftig bei neuen Projekten berücksichtigen und gegebenenfalls auch bestehende Projekte ergänzen.