Expand Authors Top

If you have a few years of experience in the Java ecosystem and you’d like to share that with the community, have a look at our Contribution Guidelines.

Expanded Audience – Frontegg – Security (partner)
announcement - icon User management is very complex, when implemented properly. No surprise here.

Not having to roll all of that out manually, but instead integrating a mature, fully-fledged solution - yeah, that makes a lot of sense.
That's basically what Frontegg is - User Management for your application. It's focused on making your app scalable, secure and enjoyable for your users.
From signup to authentication, it supports simple scenarios all the way to complex and custom application logic.

Have a look:

>> Elegant User Management, Tailor-made for B2B SaaS

Generic Top

Get started with Spring 5 and Spring Boot 2, through the Learn Spring course:

>> CHECK OUT THE COURSE

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.

Generic bottom

Get started with Spring 5 and Spring Boot 2, through the Learn Spring course:

>> CHECK OUT THE COURSE
Maven footer banner
Comments are closed on this article!