Subject: [bug#55929] [PATCH] gnu: maven: Add maven-doxia-sink-api

From: Julien Lepiller <[email-masked]>
Date: Mon, 13 Jun 2022 07:41:58 +0200

Le Mon, 13 Jun 2022 07:29:43 +0300,
"Artyom V. Poptsov" <[email-masked]> a écrit :

> Hello Julien,
> 
> first of all, thanks for reviewing my patches!
> 
> I fixed my patch, at least the part I understood -- see below.
> 
> > Great to see someone trying to package more maven-related stuff! I
> > think I've seen it in the dependency graph to the
> > maven-plugin-plugin, which I'd like to package at some point to
> > make our life easier.  
> 
> Indeed, I started my work on packaging Doxia because I wanted to
> package 'maven-plugin-plugin' which in turn is required for
> 'maven-release-plugin'[1].  And 'maven-release-plugin' is required for
> 'java-json-simple'[2] ...
> 
> So the dependency order looks like this:
> 0. 'ugs' (Universal G-Code sender) [3]
> 1. 'java-jts'
> 2. 'java-json-simple'
> 3. 'maven-release-plugin'
> 4. 'maven-plugin-plugin' <-- I'm here.  ;-)
> 
> Also, while we on it, I have the following questions:
> 0. How did you check the dependency graph for 'maven-plugin-plugin'
>    without packaging it?
> 1. Is it possible with Guix to generate the reverse dependency graph
> to see that packages depend on the specified package?

0. I tried to package it, but somehow it was more difficult than I
expected and I had other projects. Apache projects have "dependencies"
link on their web page, like this one:
https://maven.apache.org/plugin-tools/maven-plugin-plugin/dependencies.html
where they list all dependencies.

1. guix graph -t reverse-package (or guix graph -t reverse-bag), see
guix graph --list-types for more options.

> 
> > This might require a parent-pom (probably the top-level pom.xml and
> > maybe its own parent pom), so you'll have to provide a patch for it
> > as well. You can have a look at (gnu packages maven-parent) for
> > examples.  
> 
> This part I don't understand.  Could you elaborate?

The installed pom contains the following:

<parent>
 <artifactId>doxia</artifactId>
 <groupId>org.apache.maven.doxia</groupId>
 <version>2.0.0-M2</version>
 <relativePath>../pom.xml</relativePath>
</parent>

If the referenced pom file is not installed, it won't be found by Maven
later when we use it to run the maven-plugin-plugin. See for instance
how the parent pom is installed in java-slf4j-parent, and propagated
from java-slf4j-api (and recursively from java-slf4j-simple).

This top-level pom also has the following, so it should propagate it:

<parent>
 <groupId>org.apache.maven</groupId>
 <artifactId>maven-parent</artifactId>
 <version>34</version>
 <relativePath />
</parent>

We already have it: maven-parent-pom-34.