[PATCH] gnu: maven: Use required logger

  • Done
  • quality assurance status badge
Details
2 participants
  • Julien Lepiller
  • Ludovic Courtès
Owner
unassigned
Submitted by
Julien Lepiller
Severity
normal
J
J
Julien Lepiller wrote on 8 Feb 2022 10:42
(address . guix-patches@gnu.org)
20220208104231.415fc1ba@tachikoma.lepiller.eu
Hi Guix!

I figured there was a small issue with our maven package. It warns that
the current logger is not supported, and lists no supported logger.
This is because I forgot to copy resources in maven-embedder (first
patch). I also noticed I missed resources in maven-compat, so I fixed
that in the second patch.

Then, maven uses its own logger instead of a default one, even if it
does support slf4j-simple. The third patch adds maven-slf4j-wrapper. It
is essentially a fork of slf4j-simple, but the way it's written
requires me to copy most of slf4j-simple's sources. The last patch
switches the use of slf4j-simple to maven-slf4j-provider. I checked
that java-jmh still builds properly with this change, and no warnings
are shown about the logger anymore.
From 6af76778dd0fb3436e673ee00984fb87fb72cdde Mon Sep 17 00:00:00 2001
Message-Id: <6af76778dd0fb3436e673ee00984fb87fb72cdde.1644313064.git.julien@lepiller.eu>
From: Julien Lepiller <julien@lepiller.eu>
Date: Tue, 8 Feb 2022 10:20:28 +0100
Subject: [PATCH 1/4] gnu: maven-embedder: Install resources.

* gnu/packages/maven.scm (maven-embedder)[arguments]: Add copy-resources
phase.
---
gnu/packages/maven.scm | 4 ++++
1 file changed, 4 insertions(+)

Toggle diff (17 lines)
diff --git a/gnu/packages/maven.scm b/gnu/packages/maven.scm
index ba4f111930..b7ae2cc225 100644
--- a/gnu/packages/maven.scm
+++ b/gnu/packages/maven.scm
@@ -1791,6 +1791,10 @@ (define-public maven-embedder
(invoke "./sisu.sh" "maven-embedder/src/main/java"
"build/classes/META-INF/sisu/javax.inject.Named")
#t))
+ (add-before 'build 'copy-resources
+ (lambda _
+ (mkdir-p "build/classes/")
+ (copy-recursively "maven-embedder/src/main/resources" "build/classes")))
(add-before 'build 'generate-models
(lambda* (#:key inputs #:allow-other-keys)
(define (modello-single-mode file version mode)
--
2.34.0
From 3b44f6052ce0d9aa65d2642f8561d585fbdb8dd3 Mon Sep 17 00:00:00 2001
Message-Id: <3b44f6052ce0d9aa65d2642f8561d585fbdb8dd3.1644313064.git.julien@lepiller.eu>
In-Reply-To: <6af76778dd0fb3436e673ee00984fb87fb72cdde.1644313064.git.julien@lepiller.eu>
References: <6af76778dd0fb3436e673ee00984fb87fb72cdde.1644313064.git.julien@lepiller.eu>
From: Julien Lepiller <julien@lepiller.eu>
Date: Tue, 8 Feb 2022 10:24:41 +0100
Subject: [PATCH 2/4] gnu: maven-compat: Install resources.

* gnu/packages/maven.scm (maven-compat)[arguments]: Add copy-resources
phase.
---
gnu/packages/maven.scm | 4 ++++
1 file changed, 4 insertions(+)

Toggle diff (17 lines)
diff --git a/gnu/packages/maven.scm b/gnu/packages/maven.scm
index b7ae2cc225..b95aec121b 100644
--- a/gnu/packages/maven.scm
+++ b/gnu/packages/maven.scm
@@ -2000,6 +2000,10 @@ (define-public maven-compat
(modello-single-mode file "1.0.0" "xpp3-reader")
(modello-single-mode file "1.0.0" "xpp3-writer"))
#t))
+ (add-before 'build 'copy-resources
+ (lambda _
+ (mkdir-p "build/classes/")
+ (copy-recursively "src/main/resources" "build/classes")))
(add-after 'build 'generate-metadata
(lambda _
(invoke "java" "-cp" (string-append (getenv "CLASSPATH") ":build/classes")
--
2.34.0
From 9eef3c21cc802abf76f4037000a378d8cb4f7812 Mon Sep 17 00:00:00 2001
Message-Id: <9eef3c21cc802abf76f4037000a378d8cb4f7812.1644313064.git.julien@lepiller.eu>
In-Reply-To: <6af76778dd0fb3436e673ee00984fb87fb72cdde.1644313064.git.julien@lepiller.eu>
References: <6af76778dd0fb3436e673ee00984fb87fb72cdde.1644313064.git.julien@lepiller.eu>
From: Julien Lepiller <julien@lepiller.eu>
Date: Tue, 8 Feb 2022 10:26:22 +0100
Subject: [PATCH 3/4] gnu: Add maven-slf4j-provider.

* gnu/packages/maven.scm (maven-slf4-provider): New variable.
---
gnu/packages/maven.scm | 34 ++++++++++++++++++++++++++++++++++
1 file changed, 34 insertions(+)

Toggle diff (47 lines)
diff --git a/gnu/packages/maven.scm b/gnu/packages/maven.scm
index b95aec121b..cf07c08b8e 100644
--- a/gnu/packages/maven.scm
+++ b/gnu/packages/maven.scm
@@ -1772,6 +1772,40 @@ (define-public maven-core
("maven-core-boot" ,maven-core-bootstrap)
,@(package-native-inputs maven-core-bootstrap)))))
+(define-public maven-slf4j-provider
+ (package
+ (inherit maven-artifact)
+ (name "maven-slf4j-provider")
+ (arguments
+ `(#:jar-name "maven-slf4j-provider.jar"
+ #:source-dir "maven-slf4j-provider/src/main/java"
+ #:tests? #f; no tests
+ #:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'unpack-slf4j
+ (lambda* (#:key inputs #:allow-other-keys)
+ (mkdir-p "generated-sources")
+ (with-directory-excursion "generated-sources"
+ (invoke "tar" "xf" (assoc-ref inputs "java-slf4j-simple-source"))
+ (for-each delete-file (find-files "." "StaticLoggerBinder.java")))
+ (for-each
+ (lambda (simple)
+ (for-each
+ (lambda (java)
+ (copy-file java
+ (string-append
+ "maven-slf4j-provider/src/main/java/org/slf4j/impl/"
+ (basename java))))
+ (find-files (string-append simple "/src/main/java/") "\\.java$")))
+ (find-files "generated-sources" "slf4j-simple" #:directories? #t))))
+ (replace 'install
+ (install-from-pom "maven-slf4j-provider/pom.xml")))))
+ (inputs
+ `(("java-slf4j-api" ,java-slf4j-api)
+ ("java-slf4j-simple-source" ,(package-source java-slf4j-simple))
+ ("maven-shared-utils" ,maven-shared-utils)))
+ (native-inputs (list unzip))))
+
(define-public maven-embedder
(package
(inherit maven-artifact)
--
2.34.0
L
L
Ludovic Courtès wrote on 16 Feb 2022 16:03
(name . Julien Lepiller)(address . julien@lepiller.eu)(address . 53872@debbugs.gnu.org)
877d9ux39g.fsf@gnu.org
Hi,

Julien Lepiller <julien@lepiller.eu> skribis:

Toggle quote (14 lines)
> I figured there was a small issue with our maven package. It warns that
> the current logger is not supported, and lists no supported logger.
> This is because I forgot to copy resources in maven-embedder (first
> patch). I also noticed I missed resources in maven-compat, so I fixed
> that in the second patch.
>
> Then, maven uses its own logger instead of a default one, even if it
> does support slf4j-simple. The third patch adds maven-slf4j-wrapper. It
> is essentially a fork of slf4j-simple, but the way it's written
> requires me to copy most of slf4j-simple's sources. The last patch
> switches the use of slf4j-simple to maven-slf4j-provider. I checked
> that java-jmh still builds properly with this change, and no warnings
> are shown about the logger anymore.

I know nothing about Maven but I’d say you can go ahead if the other
Java folks around here have nothing to say.
(When do we set up teams? :-))

Thanks,
Ludo’.
J
J
Julien Lepiller wrote on 28 Feb 2022 11:00
(name . Ludovic Courtès)(address . ludo@gnu.org)(address . 53872-done@debbugs.gnu.org)
20220228110000.1872f52e@tachikoma.lepiller.eu
With no other answer after more than two weeks since I posted the patch
series, pushed to master as ea23386e084a035e4bc23273fffc3d114b311789 -
9aae8a3e0d53fd0c11b8e98e1fd2d2232598b036. Thanks!

Le Wed, 16 Feb 2022 16:03:23 +0100,
Ludovic Courtès <ludo@gnu.org> a écrit :

Toggle quote (25 lines)
> Hi,
>
> Julien Lepiller <julien@lepiller.eu> skribis:
>
> > I figured there was a small issue with our maven package. It warns
> > that the current logger is not supported, and lists no supported
> > logger. This is because I forgot to copy resources in
> > maven-embedder (first patch). I also noticed I missed resources in
> > maven-compat, so I fixed that in the second patch.
> >
> > Then, maven uses its own logger instead of a default one, even if it
> > does support slf4j-simple. The third patch adds
> > maven-slf4j-wrapper. It is essentially a fork of slf4j-simple, but
> > the way it's written requires me to copy most of slf4j-simple's
> > sources. The last patch switches the use of slf4j-simple to
> > maven-slf4j-provider. I checked that java-jmh still builds properly
> > with this change, and no warnings are shown about the logger
> > anymore.
>
> I know nothing about Maven but I’d say you can go ahead if the other
> Java folks around here have nothing to say.
> (When do we set up teams? :-))
>
> Thanks,
> Ludo’.
Closed
?