mirror of
https://git.in.rschanz.org/ryan77627/guix.git
synced 2024-11-07 07:26:13 -05:00
gnu: Add maven-artifact.
* gnu/packages/maven.scm (maven-artifact): New variable. * gnu/packages/patches/maven-generate-component-xml.patch: New file. * gnu/packages/patches/maven-generate-javax-inject-named.patch: New file. * gnu/local.mk (dist_patch_DATA): Add them.
This commit is contained in:
parent
816db9668c
commit
458687d586
4 changed files with 242 additions and 0 deletions
|
@ -918,6 +918,8 @@ dist_patch_DATA = \
|
|||
%D%/packages/patches/mars-install.patch \
|
||||
%D%/packages/patches/mars-sfml-2.3.patch \
|
||||
%D%/packages/patches/maxima-defsystem-mkdir.patch \
|
||||
%D%/packages/patches/maven-generate-component-xml.patch \
|
||||
%D%/packages/patches/maven-generate-javax-inject-named.patch \
|
||||
%D%/packages/patches/mcron-install.patch \
|
||||
%D%/packages/patches/mcrypt-CVE-2012-4409.patch \
|
||||
%D%/packages/patches/mcrypt-CVE-2012-4426.patch \
|
||||
|
|
|
@ -128,3 +128,41 @@ (define-public maven-resolver-connector-basic
|
|||
(synopsis "Maven repository connector implementation")
|
||||
(description "This package contains a repository connector implementation
|
||||
for repositories using URI-based layouts.")))
|
||||
|
||||
(define-public maven-artifact
|
||||
(package
|
||||
(name "maven-artifact")
|
||||
(version "3.5.3")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "https://archive.apache.org/dist/maven/"
|
||||
"maven-3/" version "/source/"
|
||||
"apache-maven-" version "-src.tar.gz"))
|
||||
(sha256 (base32 "06by23fz207lkvsndq883irfcf4p77jzkgf7n2q7hzyw1hs4h5s7"))
|
||||
(modules '((guix build utils)))
|
||||
(snippet
|
||||
'(begin
|
||||
(for-each delete-file (find-files "." "\\.jar$"))
|
||||
#t))
|
||||
(patches
|
||||
(search-patches "maven-generate-component-xml.patch"
|
||||
"maven-generate-javax-inject-named.patch"))))
|
||||
(build-system ant-build-system)
|
||||
(arguments
|
||||
`(#:jar-name "maven-artifact.jar"
|
||||
#:source-dir "maven-artifact/src/main/java"
|
||||
#:test-dir "maven-artifact/src/test"
|
||||
#:main-class "org.apache.maven.artifact.versioning.ComparableVersion"))
|
||||
(inputs
|
||||
`(("java-plexus-utils" ,java-plexus-utils)
|
||||
("java-commons-lang3" ,java-commons-lang3)))
|
||||
(native-inputs
|
||||
`(("java-junit" ,java-junit)))
|
||||
(home-page "https://maven.apache.org/")
|
||||
(synopsis "Build system")
|
||||
(description "Apache Maven is a software project management and comprehension
|
||||
tool. This package contains the Maven Artifact classes, providing the
|
||||
@code{Artifact} interface, with its @code{DefaultArtifact} implementation. The
|
||||
jar file is executable and provides a little tool to display how Maven parses
|
||||
and compares versions:")
|
||||
(license license:asl2.0)))
|
||||
|
|
171
gnu/packages/patches/maven-generate-component-xml.patch
Normal file
171
gnu/packages/patches/maven-generate-component-xml.patch
Normal file
|
@ -0,0 +1,171 @@
|
|||
From da9e282d834f0e2128501a8154128dc95b4c599d Mon Sep 17 00:00:00 2001
|
||||
From: Julien Lepiller <julien@lepiller.eu>
|
||||
Date: Sat, 9 Sep 2017 20:34:38 +0200
|
||||
Subject: [PATCH] Add a script to generate component.xml files.
|
||||
|
||||
plexus-component-metadata is normally used for this task, but it
|
||||
depends on maven-core, which depends on maven-model-builder, which needs
|
||||
plexus-component-metadata. This script is meant to break this dependency
|
||||
cycle.
|
||||
---
|
||||
components.sh | 132 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
1 file changed, 132 insertions(+)
|
||||
create mode 100755 components.sh
|
||||
|
||||
diff --git a/components.sh b/components.sh
|
||||
new file mode 100755
|
||||
index 0000000..c6748bd
|
||||
--- /dev/null
|
||||
+++ b/components.sh
|
||||
@@ -0,0 +1,148 @@
|
||||
+## This script generates a rough plexus/components.xml file. It is meant to
|
||||
+## replace plexus-component-metadata as it eventually has a recursive dependency
|
||||
+## on itself.
|
||||
+##
|
||||
+## This script must be run in the source directory (usually src/main/java).
|
||||
+
|
||||
+# Finds the complete name from a class name.
|
||||
+function find_role() {
|
||||
+ role=$1
|
||||
+ # Find role
|
||||
+ case $role in
|
||||
+ "SettingsWriter" | "SettingsReader")
|
||||
+ role=org.apache.maven.settings.io.$role
|
||||
+ ;;
|
||||
+ "SecDispatcher")
|
||||
+ role=org.sonatype.plexus.components.sec.dispatcher.$role
|
||||
+ ;;
|
||||
+ "SettingsDecrypter")
|
||||
+ role=org.apache.maven.settings.crypto.$role
|
||||
+ ;;
|
||||
+ "SettingsBuilder")
|
||||
+ role=org.apache.maven.settings.building.$role
|
||||
+ ;;
|
||||
+ "SettingsValidator")
|
||||
+ role=org.apache.maven.settings.validation.$role
|
||||
+ ;;
|
||||
+ "LoggerFactory")
|
||||
+ role=org.eclipse.aether.spi.log.$role
|
||||
+ ;;
|
||||
+ "RemoteRepositoryManager" | "VersionResolver" | "VersionRangeResolver" \
|
||||
+ | "ArtifactResolver" | "RepositoryEventDispatcher" | "MetadataResolver" \
|
||||
+ | "SyncContextFactory" | "MetadataGeneratorFactory" | "MetadatResolver" \
|
||||
+ | "ArtifactDescriptorReader")
|
||||
+ role=org.eclipse.aether.impl.$role
|
||||
+ ;;
|
||||
+ "ModelBuilder" | "ModelProcessor")
|
||||
+ role=org.apache.maven.model.building.$role
|
||||
+ ;;
|
||||
+ "ModelValidator")
|
||||
+ role=org.apache.maven.model.validation.$role
|
||||
+ ;;
|
||||
+ "ProfileInjector" | "ProfileSelector")
|
||||
+ role=org.apache.maven.model.profile.$role
|
||||
+ ;;
|
||||
+ "ProfileActivator")
|
||||
+ role=org.apache.maven.model.profile.activation.$role
|
||||
+ ;;
|
||||
+ "SuperPomProvider")
|
||||
+ role=org.apache.maven.model.superpom.$role
|
||||
+ ;;
|
||||
+ "ReportConfigurationExpander" | "PluginConfigurationExpander" \
|
||||
+ | "ReportingConverter" | "LifecycleBindingsInjector")
|
||||
+ role=org.apache.maven.model.plugin.$role
|
||||
+ ;;
|
||||
+ "ModelLocator")
|
||||
+ role=org.apache.maven.model.locator.$role
|
||||
+ ;;
|
||||
+ "ModelPathTranslator" | "PathTranslator" | "UrlNormalizer" | "ModelUrlNormalizer")
|
||||
+ role=org.apache.maven.model.path.$role
|
||||
+ ;;
|
||||
+ "DependencyManagementInjector" | "PluginManagementInjector")
|
||||
+ role=org.apache.maven.model.management.$role
|
||||
+ ;;
|
||||
+ "ModelWriter" | "ModelReader")
|
||||
+ role=org.apache.maven.model.io.$role
|
||||
+ ;;
|
||||
+ "DependencyManagementImporter")
|
||||
+ role=org.apache.maven.model.composition.$role
|
||||
+ ;;
|
||||
+ "ModelNormalizer")
|
||||
+ role=org.apache.maven.model.normalization.$role
|
||||
+ ;;
|
||||
+ "ModelInterpolator")
|
||||
+ role=org.apache.maven.model.interpolation.$role
|
||||
+ ;;
|
||||
+ "InheritanceAssembler")
|
||||
+ role=org.apache.maven.model.inheritance.$role
|
||||
+ ;;
|
||||
+ *)
|
||||
+ role=$role
|
||||
+ ;;
|
||||
+ esac
|
||||
+ echo $role
|
||||
+}
|
||||
+
|
||||
+function generate_xml() {
|
||||
+echo "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"
|
||||
+echo "<component-set>"
|
||||
+echo "<components>"
|
||||
+
|
||||
+for file in `find -name '*.java'`; do
|
||||
+ annot=`grep "@Component" $file`
|
||||
+ if [ "$?" == "0" ]; then
|
||||
+ # We have a component!
|
||||
+ role=$(echo $annot | sed 's|.*role = \(.*\).class.*|\1|')
|
||||
+ role_hint=$(echo $annot | sed 's|.*hint = "\(.*\)" .*|\1|')
|
||||
+ if [ "$role_hint" = "$annot" ]; then
|
||||
+ role_hint=default
|
||||
+ fi
|
||||
+ implem=$(echo $file | sed -e 's|^\./||' -e 's|\.java||' -e 's|/|.|g')
|
||||
+ role=$(find_role $role)
|
||||
+
|
||||
+ echo "<component>"
|
||||
+ echo " <role>$role</role>"
|
||||
+ echo " <role-hint>$role_hint</role-hint>"
|
||||
+ echo " <implementation>$implem</implementation>"
|
||||
+ echo " <description />"
|
||||
+ echo " <isolated-realm>false</isolated-realm>"
|
||||
+ echo " <requirements>"
|
||||
+ reqn=1
|
||||
+ cont=true
|
||||
+ while [ "$cont" = "true" ]; do
|
||||
+ requirement=$(grep "@Requirement" $file -A1 | head -n ${reqn} | tail -1)
|
||||
+ ((reqn++))
|
||||
+ property=$(grep "@Requirement" $file -A1 | head -n ${reqn} | tail -1)
|
||||
+ if (echo $requirement | grep "@Requirement" >/dev/null); then
|
||||
+ ((reqn++))
|
||||
+ ((reqn++))
|
||||
+ optional=$(echo $requirement | sed 's|.*optional = \(.*\) .*|\1|')
|
||||
+ req_role=$(echo $requirement | sed 's|.*role = \(.*\).class .*|\1|')
|
||||
+ if (echo $req_role | grep "@Requirement" >/dev/null); then
|
||||
+ req_role=$(echo $property | sed 's|.*private \(.*\) .*|\1|')
|
||||
+ fi
|
||||
+ req_role=$(find_role $req_role)
|
||||
+ req_name=$(echo $property | sed 's|[^ ]* [^ ]* \([^ ;]*\).*|\1|')
|
||||
+ echo " <requirement>"
|
||||
+ echo " <role>$req_role</role>"
|
||||
+ echo " <field-name>$req_name</field-name>"
|
||||
+ if (echo $optional | grep "@Requirement" >/dev/null); then
|
||||
+ :
|
||||
+ else
|
||||
+ echo " <optional>$optional</optional>"
|
||||
+ fi
|
||||
+ echo " </requirement>"
|
||||
+ else
|
||||
+ cont=false
|
||||
+ fi
|
||||
+ done
|
||||
+ echo " </requirements>"
|
||||
+ echo "</component>"
|
||||
+ fi
|
||||
+done
|
||||
+
|
||||
+echo "</components>"
|
||||
+echo "</component-set>"
|
||||
+}
|
||||
+
|
||||
+(cd $1; generate_xml) > $2
|
||||
--
|
||||
2.14.1
|
||||
|
31
gnu/packages/patches/maven-generate-javax-inject-named.patch
Normal file
31
gnu/packages/patches/maven-generate-javax-inject-named.patch
Normal file
|
@ -0,0 +1,31 @@
|
|||
From 1d20c0e403f1a38d4aca830e0eb4db03ba43efd3 Mon Sep 17 00:00:00 2001
|
||||
From: Julien Lepiller <julien@lepiller.eu>
|
||||
Date: Tue, 19 Sep 2017 22:21:29 +0200
|
||||
Subject: [PATCH] Add sisu-maven-plugin replacement
|
||||
|
||||
---
|
||||
sisu.sh | 12 ++++++++++++
|
||||
1 file changed, 12 insertions(+)
|
||||
create mode 100755 sisu.sh
|
||||
|
||||
diff --git a/sisu.sh b/sisu.sh
|
||||
new file mode 100755
|
||||
index 0000000..979f373
|
||||
--- /dev/null
|
||||
+++ b/sisu.sh
|
||||
@@ -0,0 +1,12 @@
|
||||
+## This script generates a rough javax.inject.Named file. It is meant to
|
||||
+## replace sisu-maven-plugin as it eventually has a recursive dependency
|
||||
+## on maven.
|
||||
+##
|
||||
+## This script must be run in the source directory (usually src/main/java).
|
||||
+
|
||||
+for file in `(cd $1; find -name '*.java')`; do
|
||||
+ annot=`grep "^@Named" $1/$file`
|
||||
+ if [ "$annot" != "" ]; then
|
||||
+ echo $file | sed -e 's|^\./||' -e 's|\.java||' -e 's|/|.|g'
|
||||
+ fi
|
||||
+done > $2
|
||||
--
|
||||
2.14.1
|
||||
|
Loading…
Reference in a new issue