guix-more/more/packages/maven.scm

maven.scm

1
;;; GNU Guix --- Functional package management for GNU
2
;;; Copyright © 2017 Julien Lepiller <julien@lepiller.eu>
3
;;;
4
;;; This file is part of GNU Guix.
5
;;;
6
;;; GNU Guix is free software; you can redistribute it and/or modify it
7
;;; under the terms of the GNU General Public License as published by
8
;;; the Free Software Foundation; either version 3 of the License, or (at
9
;;; your option) any later version.
10
;;;
11
;;; GNU Guix is distributed in the hope that it will be useful, but
12
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
13
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
;;; GNU General Public License for more details.
15
;;;
16
;;; You should have received a copy of the GNU General Public License
17
;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
18
19
(define-module (more packages maven)
20
  #:use-module ((guix licenses) #:prefix license:)
21
  #:use-module (gnu packages)
22
  #:use-module (guix packages)
23
  #:use-module (guix download)
24
  #:use-module (guix utils)
25
  #:use-module (guix build-system ant)
26
  #:use-module (guix build-system trivial)
27
  #:use-module (gnu packages bash)
28
  #:use-module (gnu packages groovy)
29
  #:use-module (gnu packages java)
30
  #:use-module (gnu packages maven)
31
  #:use-module (gnu packages web)
32
  #:use-module (gnu packages version-control)
33
  #:use-module (gnu packages xml)
34
  #:use-module (more packages java))
35
36
(define-public maven-polyglot-common
37
  (package
38
    (name "maven-polyglot-common")
39
    (version "0.3.0")
40
    (source (origin
41
              (method url-fetch)
42
              (uri (string-append "https://github.com/takari/polyglot-maven/"
43
                                  "archive/polyglot-" version ".tar.gz"))
44
              (sha256
45
               (base32
46
                "0v8j2gj0s4vrddyk0ll38rbl69vm6rv2wnn0c8nlsz2824vhvzca"))))
47
    (build-system ant-build-system)
48
    (arguments
49
     `(#:jar-name "maven-polyglot-common.jar"
50
       #:source-dir "polyglot-common/src/main/java"
51
       #:tests? #f; No test
52
       #:jdk ,icedtea-8
53
       #:phases
54
       (modify-phases %standard-phases
55
         (add-before 'build 'copy-resources
56
           (lambda _
57
             (install-file "polyglot-common/src/main/resources-filtered/maven-polyglot.properties"
58
                           "build/classes")
59
             #t))
60
         (add-after 'build 'generate-metadata
61
           (lambda _
62
             (invoke "java" "-cp" (string-append (getenv "CLASSPATH") ":build/classes")
63
                     "org.codehaus.plexus.metadata.PlexusMetadataGeneratorCli"
64
                     "--source" "polyglot-common/src/main/java"
65
                     "--output" "build/classes/META-INF/plexus/components.xml"
66
                     "--classes" "build/classes"
67
                     "--descriptors" "build/classes/META-INF")
68
             #t))
69
         (add-after 'generate-metadata 'rebuild
70
           (lambda _
71
             (invoke "ant" "jar")
72
             #t)))))
73
    (inputs
74
     `(("java-plexus-classworlds" ,java-plexus-classworlds)
75
       ("java-plexus-component-annotations" ,java-plexus-component-annotations)
76
       ("java-plexus-container-default" ,java-plexus-container-default)
77
       ("java-plexus-utils" ,java-plexus-utils)
78
       ("maven-builder-support" ,maven-builder-support)
79
       ("maven-core" ,maven-core)
80
       ("maven-model" ,maven-model)
81
       ("maven-model-builder" ,maven-model-builder)
82
       ("maven-plugin-api" ,maven-plugin-api)))
83
    (native-inputs
84
     `(("java-plexus-component-metadata" ,java-plexus-component-metadata)
85
       ("java-plexus-cli" ,java-plexus-cli)
86
       ("java-eclipse-sisu-inject" ,java-eclipse-sisu-inject)
87
       ("java-eclipse-sisu-plexus" ,java-eclipse-sisu-plexus)
88
       ("java-commons-cli" ,java-commons-cli)
89
       ("java-asm" ,java-asm)
90
       ("java-guice" ,java-guice)
91
       ("java-guava" ,java-guava)
92
       ("java-cglib" ,java-cglib)
93
       ("java-jdom2" ,java-jdom2)
94
       ("java-qdox" ,java-qdox)
95
       ("java-javax-inject" ,java-javax-inject)))
96
    (home-page "https://github.com/takari/polyglot-maven")
97
    (synopsis "")
98
    (description "")
99
    (license license:epl1.0)))
100
101
(define-public maven-polyglot-java
102
  (package
103
    (inherit maven-polyglot-common)
104
    (name "maven-polyglot-java")
105
    (arguments
106
     `(#:jar-name "maven-polyglot-java.jar"
107
       #:source-dir "polyglot-java/src/main/java"
108
       #:tests? #f; No test
109
       #:jdk ,icedtea-8
110
       #:phases
111
       (modify-phases %standard-phases
112
         (add-before 'build 'copy-resources
113
           (lambda _
114
             (install-file "polyglot-java/src/main/resources/META-INF/maven/extension.xml"
115
                           "build/classes/META-INF/maven")
116
             #t))
117
         (add-after 'build 'generate-metadata
118
           (lambda _
119
             (invoke "java" "-cp" (string-append (getenv "CLASSPATH") ":build/classes")
120
                     "org.codehaus.plexus.metadata.PlexusMetadataGeneratorCli"
121
                     "--source" "polyglot-java/src/main/java"
122
                     "--output" "build/classes/META-INF/plexus/components.xml"
123
                     "--classes" "build/classes"
124
                     "--descriptors" "build/classes/META-INF")
125
             #t))
126
         (add-after 'generate-metadata 'rebuild
127
           (lambda _
128
             (invoke "ant" "jar")
129
             #t)))))
130
    (inputs
131
     `(("maven-polyglot-common" ,maven-polyglot-common)
132
       ("java-commons-beanutils" ,java-commons-beanutils)
133
       ("java-commons-io" ,java-commons-io)
134
       ("java-guava" ,java-guava)
135
       ,@(package-inputs maven-polyglot-common)))))
136
137
(define-public maven-polyglot-groovy
138
  (package
139
    (inherit maven-polyglot-common)
140
    (name "maven-polyglot-groovy")
141
    (arguments
142
     `(#:jar-name "maven-polyglot-groovy.jar"
143
       #:source-dir "polyglot-groovy/src/main/java:polyglot-groovy/src/main/groovy"
144
       #:tests? #f; No test
145
       #:jdk ,icedtea-8
146
       #:phases
147
       (modify-phases %standard-phases
148
         (add-before 'build 'use-groovy
149
           (lambda _
150
             (substitute* "build.xml"
151
               ;; Change the compiler to groovyc
152
               (("javac") "groovyc")
153
               ;; Make it fork
154
               (("includeantruntime=\"false\"")
155
                "includeantruntime=\"false\" fork=\"yes\"")
156
               ;; groovyc doesn't understand the --classpath argument (bug?)
157
               (("classpath=\"@refidclasspath\"")
158
                "classpathref=\"classpath\"")
159
               ;; To enable joint compilation
160
               (("classpathref=\"classpath\" />")
161
                "classpathref=\"classpath\"><javac source=\"1.5\" target=\"1.5\" /></groovyc>")
162
               ;; Actually create a definition of the groovyc task.
163
               ;; FIXME: Can't we use groovy-ant for that?
164
               (("<project basedir=\".\">")
165
                "<project basedir=\".\"><taskdef name=\"groovyc\"
166
classname=\"org.codehaus.groovy.ant.Groovyc\" />"))
167
             #t))
168
         (add-before 'build 'copy-resources
169
           (lambda _
170
             (install-file "polyglot-groovy/src/main/resources/META-INF/maven/extension.xml"
171
                           "build/classes/META-INF/maven")
172
             #t))
173
         (add-after 'build 'generate-metadata
174
           (lambda _
175
             (invoke "java" "-cp" (string-append (getenv "CLASSPATH") ":build/classes")
176
                     "org.codehaus.plexus.metadata.PlexusMetadataGeneratorCli"
177
                     "--source" "polyglot-groovy/src/main/java"
178
                     "--output" "build/classes/META-INF/plexus/components.xml"
179
                     "--classes" "build/classes"
180
                     "--descriptors" "build/classes/META-INF")
181
             #t))
182
         (add-after 'generate-metadata 'rebuild
183
           (lambda _
184
             (invoke "ant" "jar")
185
             #t)))))
186
    (inputs
187
     `(("maven-polyglot-common" ,maven-polyglot-common)
188
       ("groovy" ,groovy)
189
       ("java-slf4j-api" ,java-slf4j-api)
190
       ,@(package-inputs maven-polyglot-common)))))
191