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

From: "Artyom V. Poptsov" <[email-masked]>
Date: Mon, 13 Jun 2022 07:29:43 +0300

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?

> Here the subject should omit "maven", so simply:

Done.

> Is this intentional? Shouldn't it be doxia-sink-api.jar?

That was a mistake indeed.  Fixed it.

> Also I'm wondering, since this will be used by maven eventually,
> shouldn't we install it to lib/m2 with its pom file? To do so, we would
> change the install phase to something like this:

> (replace 'install (install-from-pom "doxia-sink-api/pom.xml"))

Done.

> 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 description doesn't follow all our conventions, in particular,
> double space between sentences :)

Fixed.

- Artyom

References:
1. https://maven.apache.org/maven-release/maven-release-plugin/
2. https://github.com/fangyidong/json-simple
3. https://github.com/winder/Universal-G-Code-Sender

From b4020bc283f18d7b7394976c4288d04130f1e651 Mon Sep 17 00:00:00 2001
From: "Artyom V. Poptsov" <[email-masked]>
Date: Sun, 12 Jun 2022 21:42:33 +0300
Subject: [PATCH] gnu: maven: Add maven-doxia-sink-api

* gnu/packages/maven.scm (maven-doxia-sink-api): New variable.
---
 gnu/packages/maven.scm | 29 +++++++++++++++++++++++++++++
 1 file changed, 29 insertions(+)

diff --git a/gnu/packages/maven.scm b/gnu/packages/maven.scm
index 817fee1c71..93c1538bae 100644
--- a/gnu/packages/maven.scm
+++ b/gnu/packages/maven.scm
@@ -3,6 +3,7 @@
 ;;; Copyright © 2019 Tobias Geerinckx-Rice <[email-masked]>
 ;;; Copyright © 2019 Björn Höfling <[email-masked]>
 ;;; Copyright © 2020 Efraim Flashner <[email-masked]>
+;;; Copyright © 2022 Artyom V. Poptsov <[email-masked]>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -3887,3 +3888,31 @@ reports in two different file formats, plain text and xml.")))
     (description "This plugin provides the capability to build jars.  If you
 would like to sign jars please use the Maven Jarsigner Plugin instead.")
     (license license:asl2.0)))
+
+(define-public maven-doxia-sink-api
+  (package
+    (name "maven-doxia-sink-api")
+    (version "2.0.0-M2")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://gitbox.apache.org/repos/asf/maven-doxia.git")
+                    (commit (string-append "doxia-" version))))
+              (file-name (git-file-name "doxia" version))
+              (sha256
+               (base32
+                "0jx96lg0hgjsrm8mynhac4hwh2hmgiwjpwpx2k03yr14040zcr48"))))
+    (build-system ant-build-system)
+    (native-inputs
+     (list java-javax-inject))
+    (arguments
+     (list #:jar-name "doxia-core.jar"
+           #:source-dir "doxia-sink-api/src/main/java"
+           #:tests? #f))                ; no tests
+    (home-page "https://maven.apache.org/doxia/index.html")
+    (synopsis "Generic markup language interface")
+    (description "The @code{Sink} interface is a generic markup language
+interface provided as a Java API. It contains several methods that encapsulate
+common text syntax. A start tag is denoted by @code{xxxx()} method and a end
+of tag by @code{xxxx_()} method.")
+    (license license:asl2.0)))
-- 
2.25.1

--
Artyom "avp" Poptsov <[email-masked]>
Home page: https://memory-heap.org/~avp/
CADR Hackerspace co-founder: https://cadrspace.ru/
GPG: D0C2 EAC1 3310 822D 98DE  B57C E9C5 A2D9 0898 A02F