MapStruct 1.1.0.Final seen in the wild!

I’m more than thrilled to report that MapStruct 1.1 Final has been spotted in the wild! We grew that puppy for almost one year since the announcement of MapStruct 1.0, so it was about time to let it go and put a final release into your hands.

Besides a plethora of bug fixes the 1.1 release adds many new features which should be very welcome to users of MapStruct 1.0:

  • Nested target properties
  • @ValueMapping annotation for enum mappings
  • @Named annotation for simple string based mapping qualifiers
  • Support for custom hasXyz() methods to check the presence of source properties instead of null checks
  • Extended support of java.text.NumberFormat for Number types to String mapping
  • OSGi support
  • New built-in conversions around date/time type

This list is by no means exhaustive. Check out the individual announcements for the Beta1, Beta2, CR1 and CR2 releases for all the details. Also be sure to take a look at the migration notes to learn more about some issues to consider when migrating from MapStruct 1.0 to 1.1.

MapStruct would be nowhere without its steadily growing community of users and contributors. So let me say a big thank you to everyone involved, be it through reporting bugs, starting discussions on the mailing list and of course helping out with contributions on the code base itself.

The following people have sent in code changes for MapStruct 1.1: Vincent Alexander Beelte, Oliver Ehrenmüller, Dominik Gruntz, Filip Hrisafov, Sean Huang, Markus Heberling, Maxim Kolesnikov, Peter Larson, Ciaran Liedeman, Pavel Makhov, Stefan May, Samuel Wright as well as MapStruct old-timers and dear fellows Andreas Gudian and Sjaak Derksen. Kudos to you, your efforts and hard work are highly appreciated!

Also let me use the opportunity and introduce Filip Hrisafov to you, the latest committer to the project. He has been very busy with hacking on MapStruct lately, first by adding some more built-in conversions around date and time types, and now working on the long-awaited support for field based mappings. Welcome aboard, Filip!

Some stats

Speaking of numbers and stats, not only the number of contributors grew, also adoption numbers steadily increased over the course of the last year. We see more and more discussions in our Google group and increasing numbers of MapStruct-related questions on Stack Overflow as well as star gazers on GitHub.

Most impressive though are the download numbers we get from the Maven Central repo. As an example here are the numbers for the org.mapstruct:mapstruct artifact:

The downloads grew by factor 5 from about 10,000 in November 2015 to about 50,000 in the last month. It’s just great to see that MapStruct is that useful for so many users out there!

What’s next?

Finally let’s take a look at what to expect from MapStruct in the next time. As already discussed in the CR 2 announcement, we’d like to get out MapStruct 1.2 much quicker than 1.1, so you can expect it in much less than one year from now :)

Two features planned for 1.2 are the aforementioned field based mappings and support for immutable beans on the target side by leveraging non-default constructors. Also take a look at the backlog. If there is anything in there you’d like to see addressed rather sooner than later, let us know by commenting or voting.

Our general idea is to keep the number of new features per release a bit lower and in turn do more frequent releases, living up to the “Release early, release often” principle.


Use these GAV coordinates with Maven, Gradle or similar dependency management tools:

Alternatively, you can obtain distribution bundles containing the binaries, source and documentation from SourceForge or BinTray.

comments powered by Disqus