2016-12-02 4 views
0

Ich habe ein Multi-Modul-Projekt. In der Elternpom (die nicht der Aggregator POM ist), verwende ich maven-javadoc-plugin. Es hat zwei Ausführungen, sowohl in der package Phase, eine für die jar Ziel, und eine für die aggregate-jar Ziel.Wie man maven-javadoc-plugin erzeugt mehrere Gläser?

Dies erzeugt eine vollständige Aggregat Javadoc jar aller (Nicht-Test-) Klassen im Build.

Was muss ich tun, um in der Lage ist ZWEI Javadoc Gläser zu erzeugen, ein genau so, wie es jetzt ist zu erzeugen, aber eine andere, die eine begrenzte Anzahl von Modulen umfasst, und schließt möglicherweise bestimmte Pakete oder Klassen.

Ich dachte vielleicht, dass dies ZWEI "Ausführung" -Elemente hinzufügen würde, beide für die "aggregate-jar" Aufgabe, aber mit unterschiedlichen Konfigurationswerten. Dies schien nichts zu tun. Es hat nur einen einzigen Javadoc-Baum für "alle" Klassen erzeugt. Wie bekomme ich das?

Dies war mein Versuch, dies zu verwirklichen:

  <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-javadoc-plugin</artifactId> 
      <version>2.10.4</version> 
      <configuration> 
       <additionalparam>-Xdoclint:none</additionalparam> 
      </configuration> 
      <executions> 
       <execution> 
        <id>module-javadoc-jar</id> 
        <phase>package</phase> 
        <goals> 
         <goal>jar</goal> 
        </goals> 
        <configuration> 
         <show>protected</show> 
         <detectLinks>true</detectLinks> 
        </configuration> 
       </execution> 
       <execution> 
        <id>aggregated-documentation-all</id> 
        <phase>package</phase> 
        <inherited>false</inherited> 
        <goals> 
         <goal>aggregate-jar</goal> 
        </goals> 
        <configuration> 
         <sourcepath> 
         ../something-api: 
         ../something-impl: 
         ../something-else-api: 
         ../something-else-impl: 
         </sourcepath> 
         <destDir>all</destDir> 
         <finalName>all</finalName> 
         <show>protected</show> 
         <detectLinks>true</detectLinks> 
        </configuration> 
       </execution> 
       <execution> 
        <id>aggregated-documentation-interface</id> 
        <phase>package</phase> 
        <inherited>false</inherited> 
        <goals> 
         <goal>aggregate-jar</goal> 
        </goals> 
        <configuration> 
         <sourcepath> 
         ../something-api: 
         ../something-else-api: 
         </sourcepath> 
         <destDir>interface</destDir> 
         <finalName>interface</finalName> 
         <show>protected</show> 
         <detectLinks>true</detectLinks> 
        </configuration> 
       </execution> 
      </executions> 
     </plugin> 

Antwort

0

Wahrscheinlich fehlt Ihnen eine wichtige Rolle dort nur in der <configuration> und also <classifier>

What is the purpose of Classifier tag in maven?

So Ihre Ausführungsphasen arbeiten soll fein

<configuration> 
    <classifier>aggregated-documentation-all</classifier> 
    .... 
</configuration> 
... 
... 
<configuration> 
    <classifier>aggregated-documentation-interface</classifier> 
    .... 
</configuration> 

Quelle-Ant to Maven - multiple build targets Antwort von @ Tim O'Brien

nützliche Einblicke-Maven JAR plugin

Haftungsausschluss-Why-you-shouldnt?

Edit1 - Bemerkt weiter von Kommentaren, dass Ihr pom ein Aggregator pom.xml ist, in dem Fall, dass Sie verwenden würde vorschlagen -

<inherited>true</inherited> 

und halten Sie auch einen Punkt der Angabe unterschiedlicher <destDir> für verschiedene executions zur Bestätigung an den verschiedenen Ausgängen suchen.


EDIT2 - Um mehr anhand eines Beispiels zu verdeutlichen. Was hier für mich funktionierte, war die Bearbeitung der Elternmodule pom.xml , um die unten angegebenen zu enthalten. Die Ausführung mvn clean install erzeugt zwei unterschiedliche /target Ordner für diese Änderung in den Ausführungen angegeben unterschiedliche Konfiguration mit -

 <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-javadoc-plugin</artifactId> 
      <version>2.10.4</version> 
      <configuration> 
       <additionalparam>-Xdoclint:none</additionalparam> 
      </configuration> 
      <executions> 
       <execution> 
        <!--This shall generate the package inside the /target folder of parent module--> 
        <id>first</id> 
        <phase>package</phase> 
        <inherited>true</inherited> 
        <goals> 
         <goal>aggregate-jar</goal> 
        </goals> 
        <configuration> 
         <classifier>first</classifier> 
         <show>protected</show> 
         <detectLinks>true</detectLinks> 
        </configuration> 
       </execution> 
       <execution> 
        <!--This shall generate the /target on project.basedir of your project--> 
        <id>second</id> 
        <phase>package</phase> 
        <inherited>true</inherited> 
        <goals> 
         <goal>aggregate-jar</goal> 
        </goals> 
        <configuration> 
         <destDir>${project.basedir}</destDir> 
         <classifier>second</classifier> 
         <!--Notice the package in this /target would not include following packages--> 
         <excludePackageNames>com.xyz.in.my.project</excludePackageNames> 
         <finalName>second</finalName> 
         <show>protected</show> 
         <detectLinks>true</detectLinks> 
        </configuration> 
       </execution> 
      </executions> 
     </plugin> 
+0

Dank für die Antwort, aber das schien keinen Unterschied überhaupt zu machen. Beachten Sie, dass mein Top-Level-Pom ein Aggregat Pom ist.Ich habe das Javadoc-Plugin im Eltern-Pom definiert, welches eines der Kind-Module ist. Alle anderen untergeordneten Module geben das als ihr Eltern-Pom an. Ich habe "mvn install" auf der obersten Ebene ausgeführt, und es wurde "target/* - javadoc.jar" erstellt, das scheinbar das Javadoc für alle Klassen enthält. Ich sehe keine Anzeige in irgendeiner Ausgabe von irgendwelchen Effekten von den Klassifikatoreinstellungen. –

+0

@David okay, die Frage lesen * Eltern POM (die nicht der Aggregator POM ist) *. Beachten Sie auch, wenn Sie es als Aggregator POM verwenden möchten Sie wahrscheinlich angeben möchten True ' – nullpointer

+0

Ich bin wirklich verwirrt von dem, was Sie hier sagen. Ich war ziemlich klar in der ursprünglichen Posting, dass ich einen Aggregator POM UND einen Eltern Pom habe, und meine Javadoc Plugin-Einstellung ist in der Eltern Pom. Das POM im obersten Verzeichnis ist das Aggregatorpom, und eines der Kindpoms ist das Elternpom. –

Verwandte Themen