2013-02-20 3 views
8

Ich versuche, eine JAR-Datei zu generieren, die ein API-SDK für unser Produkt enthält, damit unsere Kunden Plugins erstellen und sie gegen unsere API kompilieren können. Alle Klassen/Schnittstellen, die wir als Teil unseres API-SDK-Krugs bereitstellen, sind auch in unserem Hauptprodukt enthalten, sodass API-Entwickler unser API-SDK-Krug nicht in ihr Plugin-Krug aufnehmen müssen. Daher mache ich mir keine Sorgen über die Größe unseres API-SDK-Krugs. Allerdings würde ich gerne das Leben von Plugin-Entwicklern vereinfachen und nur eine JAR-Datei bereitstellen, die sowohl die kompilierten Klassen als auch das Javadoc enthält (Entwickler können also inline-Kommentare als Teil der automatischen Vervollständigung sehen, wenn sie sich entwickeln).Erstellen Sie ein einzelnes Jar, das kompilierte Klassen und Javadoc mit Maven enthält

Wir verwenden Maven zu kompilieren und ich fügte die folgende Konfiguration an die API SDK pom.xml:

<build> 
    <plugins> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-javadoc-plugin</artifactId> 
      <version>2.7</version> 
      <executions> 
       <execution> 
        <id>attach-javadoc</id> 
        <goals> 
         <goal>jar</goal> 
        </goals> 
       </execution> 
      </executions> 
     </plugin> 
    </plugins> 
</build> 

Dies funktioniert, aber dies erzeugt zwei JAR-Dateien - eine mit kompilierten Klassen und eine mit javadoc. Stattdessen möchte ich nur eine JAR-Datei mit allem erzeugen.

Wir verwenden derzeit Maven, um dieses Projekt zu kompilieren, jedoch können wir auch andere Build-Tools verwenden.

Antwort

4

Sie können dies tun:

  • befestigen Sie das javadoc Ziel auf das Paket vorbereiten
  • das javadoc Ausgabeverzeichnis angeben/Klassen an Ziel

Die Glas-Plugin ein Glas mit allem schaffen innerhalb des Ziels/der Klassen (einschließlich der generierten Javadocs)

<build> 
    <plugins> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-javadoc-plugin</artifactId> 
      <version>2.7</version> 
      <executions> 
       <execution> 
        <id>attach-javadoc</id> 
        <phase>prepare-package</phase> 
        <goals> 
         <goal>javadoc</goal> 
        </goals> 
        <configuration> 
         <reportOutputDirectory>${project.build.directory}/classes/</reportOutputDirectory> 
        </configuration> 
       </execution> 
      </executions> 
     </plugin> 
    </plugins> 
</build> 
2

Haben Sie sich die Assembly plugin angesehen?

Das Assembly-Plug-in kann eine Assembly im JAR-Format erstellen (in Wirklichkeit eine Assembly im ZIP-Format mit einer Datei namens MANIFEST.MF). Sie können sowohl das Verzeichnis als auch das Verzeichnis apidocs in Ihrer Baugruppe angeben. kleben Sie eine MANIFEST.MF da drin, und Sie sind fertig.

Glücklicherweise ist das javadoc:javadoc Ziel kann es als Teil des Build Lebenszyklus so konfiguriert werden, in dem <build> Abschnitt der pom.xml in der generate-sources Phase durch die Konfiguration. Das bedeutet, dass die generierten JavaDocs für das Assembly-Plugin verfügbar sein sollten.

+0

David W .: Danke! Könnten Sie bitte ein Beispiel dafür geben, wie meine pom.xml aussehen wird (tut mir leid - Maven ist ein neues Werkzeug für mich, also bin ich noch in meiner Lernphase). –

+0

Ich bin kein Entwickler, sondern ein bloßer CM, und es ist lange her, seit ich Maven pom.xml-Dateien erstellt habe. Wenn ich mich erinnere, gibt es eine separate XML-Datei für die Assembly-Beschreibung. Ich kann mich nicht erinnern, dass es verglichen mit dem Rest von Maven zu schwierig war. Sonatype hat wahrscheinlich das beste Maven-Buch da draußen (http://www.sonatype.com/books/mvnref-book/reference/). Sie können auch eine [Hardcopy davon] kaufen (http://shop.oreilly.com/product/9780596517335.do). –

0

Nun, tatsächlich können Dinge einfacher gemacht werden.

erstellen sources jar Artefakt der maven-source-plugin mit:

<project> 
    ... 
    <build> 
    <plugins> 
     <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-source-plugin</artifactId> 
     <version>2.2.1</version> 
     <executions> 
      <execution> 
      <id>attach-sources</id> 
      <phase>verify</phase> 
      <goals> 
       <goal>jar-no-fork</goal> 
      </goals> 
      </execution> 
     </executions> 
     </plugin> 
    </plugins> 
    </build> 
    ... 
</project> 

Auf diese Weise wird Ihr Projekt die Quellen Ihrer Artefakt-Repository bereitstellen.

Dann können Sie in der Maven-Konfiguration Ihrer IDE einfach das Herunterladen von Quellartefakten einschalten, was bedeutet, dass Ihre IDE Javadocs hat, wenn Sie natürlich die richtigen Kommentare in Ihrem Code haben.

Auf diese Weise können Sie auch ordnungsgemäß Artefakte getrennt haben.

Darüber hinaus sind David W. und Ben75 die Antworten auch gültige Möglichkeiten.