Thursday, December 27, 2018

MavenLocal

Take this scenario.

You are writing a new application A
B is an existing application that needs to be integrated with A

Now A is not in production yet and definitely not uploaded to your firm's Maven repository.
Or you might want to see how A works with B. Some basic integration, that I, as A's developer, need to ensure.

What I need is, to publish A in a local repository from where B will read from.

A and B both are gradle projects.

From A :


    publishing {
        repositories {
            mavenLocal()
        }
       
        publications {
            mavenJava(MavenPublication) {
                from components.java
            }
        }
    }


This uploads A's artifacts to m2 repository

And at B:



repositories {
        maven {
            url 'http://mavenAtMyFirm'
        }
        // Added to look for dependent libraries in local maven repo. Helps in integration
        mavenLocal()
    }


mavenLocal will read dependencies from local m2 repository.


Java 8 : Collectors.toMap | Do you know that Values cannot be null?

In Java Map, you can have null key and null values as well.

But when you are using Collectors.toMap() be wary not to have a KeyMapper and ValueMapper that will give null keys or null values.

Internally it uses Map.merge which will throw NPE if key or value is null. This is an open bug at JDK


Reference :
https://stackoverflow.com/questions/24630963/java-8-nullpointerexception-in-collectors-tomap