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 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!