Hi all, As you may have noticed I have updated many Maven related packages recently, and I'd like to summarize quickly what I'm doing and where we're heading.
Maven in testing/unstable is currently at the latest upstream release (3.5.0). The most visible change since Maven 3.3.9 is the colored console output which is really nice (except for the builder logs, they are now cluttered with ANSI escape code and I don't know if there is a way to avoid that). If time allows I'll try to backport this version to Stretch. Our version of Maven is almost on par with upstream. The only difference is the default version of the plugins used since we've aligned them with the versions in Debian to avoid build failures. For example someone using our package in unstable to build its projects uses the maven-compiler-plugin 3.6.1 by default instead of the version 3.1 with the upstream binary, therefore the build may behave slightly differently. I've figured out a simple solution to this problem: our maven plugin packages now relocate the older version used by Maven to the latest one (for example our package maven-compiler-plugin/3.6.1-2 redirects the version 3.1 to 3.6.1). This means we can leave the default versions unchanged in our maven package, and still be able to build our packages with the latest versions of the plugins. This change will probably go live with the next update of the maven package. After investigating a couple of Maven related libraries/plugins responsible for build failures under Java 9 I realized that several packages were lagging behind upstream, and some had Java 9 fixes ready (such as maven-compiler-plugin 3.6.1). All Java 9 issues haven't been addressed upstream yet, but we'll be better prepared to integrate the Java 9 friendly versions if our packages are already up to date. For this reason I've undertaken an update of all Maven/Plexus libraries and plugins. This caused some disruptions, not all are resolved yet, but fortunately I've managed to avoid the trap of breaking Maven completely and being unable to fix it. That's the risk when playing with toolchain packages that build depend on themselves ;) I'm currently waiting for several packages in the NEW queue to move forward (the new maven-reporting-api package will unlock ~10 plugin updates). This update is also the opportunity to transition away from Maven 2. Maven 2 is still in the archive in library form as libmaven2-core-java and many plugins are still depending on it. This transition will allow us to remove several libraries that were duplicated to support both Maven 2 and Maven 3 (wagon vs wagon2, plexus-utils vs plexus-utils2, plexus-classworlds vs plexus-classworlds2, plexus-containers vs plexus-containers1.5, etc). I've already filed some removal requests and there are more to come. Once all of this is over I'd like to invest some time on maven-debian-helper to better support multi module projects. I have 3 improvements in mind: - Enable/disable the unit tests per module and not globally. I'm thinking about an additional parameter in the debian/*.poms file that would trigger the injection of a surefire configuration enabling or disabling the tests. - Build some modules without installing them. Sometimes modules contain test helper classes used by other modules, and installing them pulls many test libraries in the package dependencies. - Resolve the dependencies per package, ${maven:Depends} would be adapted to each binary package produced. This will allows us to easily split several packages and have finer-grained dependencies. With these changes I hope we'll able to better optimize the dependencies of our applications. Our maven package was rather fat a few releases ago, there was even a Launchpad bug rightfully complaining about it. Here is the result of 'apt-get install maven' since Wheezy (with the JRE already installed): wheezy: 129 packages, 95.3MB archives, 164MB on disk jessie: 118 packages, 59.5MB archives, 92MB on disk stretch: 82 packages, 29.8MB archives, 41MB on disk unstable: 56 packages, 23.0MB archives, 30MB on disk The situation is improving but we can do better. The upstream binary for Maven 3.5.0 weighs 8.2MB compressed, 10MB installed, so even with the package overhead I expect to halve the current numbers. Emmanuel Bourg