Wie lade ich Quellen für ein Glas mit Maven herunter?

74

In meinem Projekt verwende ich eine über Maven bereitgestellte JAR-Datei. Aber was Maven mir gibt, ist nur dieses Glas - keine Javadocs und keine Quellen. Das Drücken von "Quellen herunterladen" hat keine Auswirkung: Eclipse findet die Quellen des Glases immer noch nicht.

Wovon hängt das ab? Sollte das Repository automatisch Quellen bereitstellen?

Möglicherweise muss ich etwas in POM schreiben, um Maven anzuweisen, Quellen herunterzuladen?

Mein aktueller Pom folgt:

<repositories>
    <repository>
        <id>xuggle repo</id>
        <url>http://xuggle.googlecode.com/svn/trunk/repo/share/java/</url>
    </repository>
</repositories>

<dependencies>

    <dependency>
        <groupId>xuggle</groupId>
        <artifactId>xuggle-xuggler</artifactId>
        <version>5.3</version>
        <type>rar</type>
    </dependency>

</dependencies>

Warum sagt Maven nicht, dass Kommentare zum Herunterladen der Quellen fehlschlagen?

Suzan Cioc
quelle

Antworten:

122

Update 2020:

Das Maven-Abhängigkeits-Plugin sollte mit dem dependency:sources Ziel verwendet werden :

  <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-dependency-plugin</artifactId>
    <version>3.1.1</version>
    <executions>
      <execution>
        <id>download-sources</id>
        <goals>
          <goal>sources</goal>
        </goals>
        <configuration>
        </configuration>
      </execution>
    </executions>
  </plugin>

Dies kann auch über die Befehlszeile ausgeführt werden als:

mvn dependency:sources -Dsilent=true

Veraltet:

Durch Ausführen mvn dependency:sourceswird maven gezwungen, alle Quellen aller Jars im Projekt herunterzuladen, sofern die Quellen verfügbar sind (werden in das Repository hochgeladen, in dem das Artefakt gehostet wird). Wenn Sie javadoc herunterladen möchten, lautet der Befehlmvn dependency:resolve -Dclassifier=javadoc

Es ist auch möglich, ein Profil in Ihrer Datei settings.xml zu erstellen und die folgenden Eigenschaften einzuschließen:

<properties>
  <downloadSources>true</downloadSources>
  <downloadJavadocs>true</downloadJavadocs>
</properties>

hovanessyan
quelle
Aber wenn es keine Quellen im Repository gibt, wird Maven einfach nichts im Stillen tun, oder? Keine Fehler, keine Warnungen?
Suzan Cioc
Ja, ich denke schon, zumindest wenn es nicht in einem sehr ausführlichen / Debug-Modus läuft. Möglicherweise ist es möglich, es im Debug- / Ausführlichkeitsmodus auszuführen und nach bestimmten Nachrichten zu suchen.
Hovanessyan
Ich habe eine Antwort hinzugefügt, um das Hinzufügen dieser Eigenschaften zur maven settings.xml
RaamEE
1
@hovanessyan - Können wir eine Einstellung hinzufügen, die Gläser nur für einige der Abhängigkeiten und nicht für alle zieht?
MasterJoe
1
Diese Eigenschaften gelten für das veraltete Eclipse Maven Plugin ( maven.apache.org/plugins/maven-eclipse-plugin/… ). Sie werden nichts tun, wenn Sie dieses Plugin nicht verwenden.
Andrew Bourgeois
53
mvn dependency:sources
mvn dependency:resolve -Dclassifier=javadoc

Wenn es keine Quellen hat, sollte es so etwas wie sagen

[INFO] The following files have NOT been resolved:
[INFO]    com.oracle:ojdbc6:java-source:sources:12.1.0.1
[INFO]    javax:javaee-api:java-source:sources:6.0
Kalpesh Soni
quelle
13

Es ist am besten, sich nicht auf das Eclipse-Plugin zu verlassen, da es veraltet ist. Die Verwendung der Eigenschaften downloadSourcesund downloadJavadocshat bei mir nicht funktioniert. Die oben gepostete Antwort bezüglich der Verwendung des Abhängigkeits-Plugin-Wortes. Möglicherweise möchten Sie jedoch automatisch Quellen und Javadocs herunterladen. Außerdem möchten Sie möglicherweise immer ein Quellglas und ein Javadoc-Glas erstellen. Fügen Sie dies in den Pom Ihres Projekts ein. Wenn Sie Module verwenden, geben Sie Ihren übergeordneten POM ein.

<build>
    <plugins>
        <!-- download sources and javadoc -->
        <plugin>
            <artifactId>maven-dependency-plugin</artifactId>
            <version>2.10</version>
            <executions>
                <execution>
                    <id>download-sources</id>
                    <goals>
                        <goal>sources</goal>
                    </goals>
                </execution>
                <execution>
                    <id>download-javadoc</id>
                    <configuration>
                        <classifier>javadoc</classifier>
                    </configuration>
                    <goals>
                        <goal>resolve</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
        <!-- Always create javadoc jar. -->
        <plugin>
            <artifactId>maven-javadoc-plugin</artifactId>
            <version>2.10.4</version>
            <executions>
                <execution>
                    <id>attach-javadoc</id>
                    <goals>
                        <goal>jar</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
        <!-- Always create source jar. -->
        <plugin>
            <artifactId>maven-source-plugin</artifactId>
            <version>2.10</version>
            <executions>
                <execution>
                    <id>attach-sources</id>
                    <goals>
                        <goal>jar</goal>
                        <goal>test-jar</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>
Douglass Parker
quelle
Ich stimme @AlmirCampos
user1561783
5

Klicken Sie in Eclipse dann Maven>Download Sourceserneut auf Ihr ProjektMaven>Download Javadoc

Alireza Fattahi
quelle
4

Die Quell- / Javadoc-Jars wurden möglicherweise nicht bereitgestellt und befinden sich nicht im Repository. Es gibt nichts, für das ein Quell- / Javadoc-JAR erforderlich sein muss.

Kevinpeterson
quelle
4

Sie können Quellen auch unter folgender target/dependenciesAdresse herunterladen :

mvn -Dclassifier=sources dependency:copy-dependencies
Marinos An
quelle
3

Erweiterung auf @hovanessyan Antwort.

Ein grundlegendes Profil zum Aktivieren von downloadSources und downloadJavadocs in Mavens settings.xml sieht folgendermaßen aus. Beispiel: Die Profil-ID lautet downloadSources

<!-- add the profile under profiles section -->

    <profile>
        <id>downloadSources</id>
        <properties>
            <downloadSources>true</downloadSources>
            <downloadJavadocs>true</downloadJavadocs>           
        </properties>
    </profile>

<!-- activate the profile under activeProfiles section -->

  <activeProfiles>
    <activeProfile>downloadSources</activeProfile>
  </activeProfiles>
RaamEE
quelle