1. Overview

Peeking at the source code and documentation of different libraries and frameworks is a good way to learn more about them.

In this short tutorial, we’ll see how to configure Maven, or ask of Maven, to download the dependency sources and their Javadocs for us.

2. Command Line

By default, Maven only downloads the actual JAR file of each dependency, not the sources and documentation files.

To download just the sources, first, we should navigate to the directory containing the pom.xml and then execute the command:

mvn dependency:sources

It may take a while to download the sources. Similarly, to download just the Javadocs, we can issue the command:

mvn dependency:resolve -Dclassifier=javadoc

Of course, we can download both of them in one command, too:

mvn dependency:sources dependency:resolve -Dclassifier=javadoc

Obviously, if we add a new dependency after issuing these commands, we have to re-issue the commands to download sources and Javadocs for the new dependency.

3. Maven Settings

It’s also possible to download sources and documentation system-wide on all Maven projects. To do that, we should edit the ~/m2/settings.xml file or create one and add the following configuration to it:

<settings>
    <!-- ... other settings omitted ... -->
    <profiles>
        <profile>
            <id>downloadSources</id>
            <properties>
                <downloadSources>true</downloadSources>
                <downloadJavadocs>true</downloadJavadocs>
            </properties>
        </profile>
    </profiles>

    <activeProfiles>
        <activeProfile>downloadSources</activeProfile>
    </activeProfiles>
</settings>

As shown above, we’re creating a profile and activating it by default. In this profile, we’re setting two properties that tell Maven to download sources and documentation. Moreover, Maven will apply these settings to all projects.

4. The pom.xml

It’s even possible to put this configuration into the pom.xml. This way, we force all project contributors to download sources and documentation as part of the dependency resolution:

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-dependency-plugin</artifactId>
            <version>3.1.2</version>
            <executions>
                <execution>
                    <goals>
                        <goal>sources</goal>
                        <goal>resolve</goal>
                    </goals>
                    <configuration>
                        <classifier>javadoc</classifier>
                    </configuration>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

Here, we’re configuring the maven-dependency-plugin to download the sources and documentation.

5. IDE Setup

We can also set up our favorite IDEs to do this for us. For instance, in IntelliJ IDEA, we just have to go to Preference > Build, Execution, Deployment > Build Tools > Maven > importing and check the sources and documentation checkboxes:

idea src doc

6. Conclusion

In this quick tutorial, we saw how to download dependency sources and documentation in Maven in a variety of ways, ranging from command-line solutions to per-project or system-wide configurations.