Subject: Re: [bug#42100] [PATCH] Add maven-build-system.

From: Julien Lepiller <[email-masked]>
Date: Mon, 6 Jul 2020 21:09:27 +0200

Friendly ping :)

If anyone wants to review, but needs more time, please say so.
Otherwise, I'll push next week!

Le Sun, 28 Jun 2020 03:41:35 +0200,
Julien Lepiller <[email-masked]> a écrit :

> Hi Guix!
> 
> This patch series adds the maven-build-system, at last! You can find
> the patches on the wip-maven-build-system branch of my repository, at
> https://framagit.org/tyreunom/guix/-/tree/wip-maven-build-system
> 
> I haven't sent the patches on this mailing because there are ~100 of
> them. If you prefer, I'll send the series with git send-patch.
> 
> Here is a summary of the changes:
> 
> guix: java-utils: Add Maven-related phases.
> 
> This patch adds some functionalities to guix/build/java-utils.scm, in
> particular the install-from-pom and install-pom-file functions that
> are phases you can use instead of the install phase. As their name
> suggests, they install a package from a pom.xml file to a maven
> repository directory structure in lib/m2. install-pom-file only
> installs a single pom.xml file, instead of the file and its jar.
> 
> gnu: java-asm: Remove dependency on bnd libraries.
> ...
> gnu: java-jarjar: unbundle maven-plugin-api.
> 
> This small series of patches improves the bootstrap of java-junit by
> not relying on bundled libraries (binaries), by enabling tests in
> junit and by reducing the number of dependencies that must be built
> before junit. Junit is now fully bootstrapped.
> 
> gnu: java-junit: Install from pom file.
> 
> This patch converts junit and its dependencies to the maven repository
> structure. It also takes care of changing junit's dependents that had
> a hardcoded path to the junit jar file.
> 
> gnu: Add apache-parent-pom-13.
> ...
> gnu: Add maven-components-parent-pom-21.
> 
> This series adds many parent pom packages to a new file,
> maven-parent-pom.scm.  A parent pom is a single pom.xml file that
> contains information about a project. Actual packages can then
> reference these files to inherit some or all of these information.
> 
> gnu: java-commons-lang3: Update to 3.9.
> ...
> gnu: maven: Install from pom file.
> 
> These patches update some dependencies of maven and the maven build
> system, and convert them so they are installed in the maven repository
> structure.
> 
> gnu: maven-shared-utils: Fix /bin/sh invocation.
> gnu: java-modello-core: Propagate inputs.
> 
> These two patches implement fixes that are required later on.
> 
> gnu: Add java-plexus-digest.
> ...
> gnu: Add maven-jar-plugin.
> 
> This patch series adds more packages that are maven plugins or their
> dependencies.  Maven doesn't do anything by itself, it's simply a
> dependency/lifecycle manager.  It requires plugins to actually do
> things such as compiling, creating a jar archive, installing, testing,
> etc... This is what these patches implement.
> 
> guix: Add maven-build-system.
> 
> The actual commit that adds the maven-build-system :)
> 
> In the end, the maven-build-system only has the very basic plugins by
> default, but it is able to compile, test and install a simple hello
> world example application, generated by maven (see test.scm attached).
> 
> Next step is building the maven-plugin-plugin, which is the plugin
> that builds other plugins. Currently the plugins are built with a
> custom plugin.xml generator that uses a buggy java parser, so I don't
> want to rely on it for other plugins. Note that we can't use the
> maven-plugin-plugin to build any of the current plugins, since they
> are needed to build themselves...
> 
> I also noticed that our maven is acting weird wrt lifecycles: it seems
> to be doing some test-related work during the build step, and rebuilds
> in the test and install steps. This is weird, but I'm not sure how to
> fix. Re-building maven with the maven-build-system might give as a
> better version of maven. I don't really want to investigate that now,
> that's why I'm sending the patch series anyway.
> 
> Hope you enjoy!