How to download sources for a jar with Maven?
In my project I am using a JAR file provided via Maven. But what Maven gives me is only this jar - no javadocs and no sources. Pressing "Download Sources" has no effect: Eclipse still does not find the sources of the jar.
What this depends on? Should repository provide sources automatically?
May be I need to write something in POM to instruct Maven to download sources?
My current pom follows:
<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>
Why Maven does not say any comments on it's sources download fail?
Solution 1:
2020 Update:
The maven dependency plugin should be used whit the dependency:sources
goal:
<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>
This can also be run from the command line as:
mvn dependency:sources -Dsilent=true
Executing mvn dependency:sources
will force maven to download all sources of all jars in the project, if the sources are available (are uploaded in the repository where the artifact is hosted). If you want to download javadoc the command is mvn dependency:resolve -Dclassifier=javadoc
Deprecated:
<properties>
<downloadSources>true</downloadSources>
<downloadJavadocs>true</downloadJavadocs>
</properties>
Solution 2:
mvn dependency:sources
mvn dependency:resolve -Dclassifier=javadoc
if it does not have sources it should say something like
[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
Solution 3:
It is best not to rely on the Eclipse plugin as it is deprecated. Using the downloadSources
and downloadJavadocs
properties did not work for me. The answer posted above regarding the use of the dependencies plugin word. However, you may wish to automatically download sources and javadocs. Furthermore you may wish to always create a source jar and a javadoc jar. Put this in the pom of your project. If you use modules, put in your parent pom.
<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>
Solution 4:
In eclipse, rigth click on your project then Maven>Download Sources
again Maven>Download Javadoc
Solution 5:
You can also download sources under target/dependencies
using:
mvn -Dclassifier=sources dependency:copy-dependencies