diff --git a/0001-Make-the-alias-generation-reproducible.patch b/0001-Make-the-alias-generation-reproducible.patch new file mode 100644 index 0000000..c35945b --- /dev/null +++ b/0001-Make-the-alias-generation-reproducible.patch @@ -0,0 +1,25 @@ +From 88ca6f13c707652c9992e9f7f4b86c5bdc198d03 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Fridrich=20=C5=A0trba?= +Date: Sun, 3 Sep 2023 01:03:26 +0200 +Subject: [PATCH] Make the alias generation reproducible + +--- + java-utils/maven_depmap.py | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/java-utils/maven_depmap.py b/java-utils/maven_depmap.py +index 6a0520fa..4bfb877d 100644 +--- a/java-utils/maven_depmap.py ++++ b/java-utils/maven_depmap.py +@@ -213,7 +213,7 @@ def add_aliases(artifact, additions): + + aliases = additions.split(',') + result = list() +- for a in aliases: ++ for a in sorted(aliases): + alias = MetadataAlias.from_mvn_str(a) + alias.extension = artifact.extension + result.append(alias) +-- +2.41.0 + diff --git a/6.1.0.tar.gz b/6.1.0.tar.gz deleted file mode 100644 index 076247b..0000000 --- a/6.1.0.tar.gz +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:6b31e5d858c7a1d62cc6e95450590a4e4526237403ecfad34d1a39a1f496d673 -size 155816 diff --git a/6.2.0.tar.gz b/6.2.0.tar.gz new file mode 100644 index 0000000..c2537e4 --- /dev/null +++ b/6.2.0.tar.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9359a584df4034c14b7d9fd35e610caed8b7b82d33738a768f571c11f8a0e35e +size 185818 diff --git a/javapackages-6.1.0-maven-depmap.patch b/javapackages-6.1.0-maven-depmap.patch deleted file mode 100644 index bc4b20a..0000000 --- a/javapackages-6.1.0-maven-depmap.patch +++ /dev/null @@ -1,4441 +0,0 @@ -diff --git a/build b/build -index 8e676f2d..e728aeaf 100755 ---- a/build -+++ b/build -@@ -66,6 +66,7 @@ expand etc/java.conf - expand etc/eclipse.conf - expand macros.d/macros.jpackage - expand macros.d/macros.fjava -+expand macros.d/macros.javapackages-compat - expand java-utils/java-functions - expand depgenerators/maven.req - expand depgenerators/maven.prov -diff --git a/install b/install -index e80db4cf..52c714f4 100755 ---- a/install -+++ b/install -@@ -187,6 +187,12 @@ inst_data target/pom_xpath_remove.7 "${mandir}/man7" - inst_data target/pom_xpath_replace.7 "${mandir}/man7" - inst_data target/pom_xpath_set.7 "${mandir}/man7" - -+exec >files-compat -+ -+inst_data java-utils/install_pom.py "${javadir}-utils" -+inst_data java-utils/maven_depmap.py "${javadir}-utils" -+ -+inst_data target/macros.javapackages-compat "${rpmmacrodir}" - - exec >files-extra - -diff --git a/java-utils/install_pom.py b/java-utils/install_pom.py -new file mode 100644 -index 00000000..e0282773 ---- /dev/null -+++ b/java-utils/install_pom.py -@@ -0,0 +1,261 @@ -+# -+# Copyright (c) 2014-2016, Red Hat, Inc. -+# All rights reserved. -+# -+# Redistribution and use in source and binary forms, with or without -+# modification, are permitted provided that the following conditions -+# are met: -+# -+# 1. Redistributions of source code must retain the above copyright -+# notice, this list of conditions and the following disclaimer. -+# 2. Redistributions in binary form must reproduce the above copyright -+# notice, this list of conditions and the following disclaimer in the -+# documentation and/or other materials provided with the -+# distribution. -+# 3. Neither the name of Red Hat nor the names of its -+# contributors may be used to endorse or promote products derived -+# from this software without specific prior written permission. -+# -+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -+# -+# Authors: Michal Srb -+ -+from javapackages.maven.pom import POM, PomLoadingException -+ -+from javapackages.xmvn.xmvn_resolve import (XMvnResolve, ResolutionRequest, -+ XMvnResolveException) -+from javapackages.common.exception import JavaPackagesToolsException -+ -+import sys -+import os -+from xml.etree import ElementTree -+from optparse import OptionParser -+ -+ -+usage = "usage: %prog " -+epilog = """ -+Resolves pom file from its parents and sanitizes its -+dependencies so that it includes only those that have -+compile or runtime scope. -+ -+Source POM: -+Path where POM file is located. -+ -+Output POM: -+Path where the sanitized POM file will be written to. -+""" -+ -+ -+def get_parent_pom(pom): -+ -+ req = ResolutionRequest(pom.groupId, pom.artifactId, -+ extension="pom", version=pom.version) -+ result = XMvnResolve.process_raw_request([req])[0] -+ if not result: -+ raise XMvnResolveException("Unable to resolve parent POM {g}:{a}:{e}:{v}" -+ .format(g=pom.groupId, a=pom.artifactId, -+ e="pom", v=pom.version)) -+ -+ return POM(result.artifactPath) -+ -+ -+def merge_sections(main, update): -+ for upd in update: -+ for curr in main: -+ if curr.compare_to(upd): -+ curr.merge_with(upd) -+ break -+ else: -+ main.append(upd) -+ -+ -+def get_model_variables(pom): -+ props = {} -+ if pom.groupId: -+ props["project.groupId"] = pom.groupId -+ if pom.artifactId: -+ props["project.artifactId"] = pom.artifactId -+ if pom.version: -+ props["project.version"] = pom.version -+ return props -+ -+ -+def expand_props(deps, props): -+ for d in deps: -+ d.interpolate(props) -+ -+def gather_dependencies(pom_path): -+ pom = POM(pom_path) -+ pom_props = get_model_variables(pom) -+ deps, depm, props = _get_dependencies(pom) -+ # expand project model variables -+ expand_props(deps, pom_props) -+ expand_props(depm, pom_props) -+ -+ curr_pom = pom -+ parent = pom.parent -+ while parent: -+ ppom = None -+ if hasattr(parent, "relativePath") and parent.relativePath != "": -+ try: -+ ppom_path = os.path.join(os.path.dirname(curr_pom._path), -+ parent.relativePath) -+ if os.path.isdir(ppom_path): -+ ppom_path = os.path.join(ppom_path, 'pom.xml') -+ ppom = POM(ppom_path) -+ except PomLoadingException: -+ pass -+ else: -+ try: -+ ppom_path = os.path.join(os.path.dirname(curr_pom._path), '..') -+ if os.path.isdir(ppom_path): -+ ppom_path = os.path.join(ppom_path, 'pom.xml') -+ ppom = POM(ppom_path) -+ except PomLoadingException: -+ pass -+ -+ if not ppom: -+ try: -+ ppom = get_parent_pom(parent) -+ except XMvnResolveException: -+ break -+ -+ parent = ppom.parent -+ pom_props = get_model_variables(ppom) -+ pdeps, pdepm, pprops = _get_dependencies(ppom) -+ expand_props(pdeps, pom_props) -+ expand_props(pdepm, pom_props) -+ -+ # merge "dependencies" sections -+ merge_sections(deps, pdeps) -+ # merge "dependencyManagement" sections -+ merge_sections(depm, pdepm) -+ -+ # merge "properties" sections -+ for pkey in pprops: -+ if pkey not in props: -+ props[pkey] = pprops[pkey] -+ -+ curr_pom = ppom -+ -+ for d in deps: -+ d.interpolate(props) -+ -+ for dm in depm: -+ dm.interpolate(props) -+ -+ # apply dependencyManagement on deps -+ for d in deps: -+ for dm in depm: -+ if d.compare_to(dm): -+ d.merge_with(dm) -+ break -+ -+ # only deps with scope "compile" or "runtime" are interesting -+ deps = [x for x in deps if x.scope in ["", "compile", "runtime"]] -+ -+ return deps -+ -+ -+def _get_dependencies(pom): -+ deps = [] -+ depm = [] -+ props = {} -+ -+ for x in pom.dependencies: -+ if hasattr(x, "version") and x.version == "any": -+ x.version = None -+ deps.append(x) -+ depm.extend([x for x in pom.dependencyManagement]) -+ props = pom.properties -+ -+ return deps, depm, props -+ -+ -+def _main(): -+ OptionParser.format_epilog = lambda self, formatter: self.epilog -+ parser = OptionParser(usage=usage, -+ epilog=epilog) -+ -+ (options, args) = parser.parse_args() -+ if len(args) != 2: -+ parser.error("2 argument2 are required") -+ -+ if not os.path.exists(args[0]): -+ message = ("The first argument '{0}' doesn't point to an existing file ").format(args[0]) -+ parser.error(message) -+ -+ if not os.path.exists(os.path.dirname(os.path.abspath(args[1]))): -+ message = ("The path '{0}' doesn't exist ").format(os.path.dirname(args[1])) -+ parser.error(message) -+ -+ if not os.path.isdir(os.path.dirname(os.path.abspath(args[1]))): -+ message = ("The path '{0}' is not a directory ").format(os.path.dirname(args[1])) -+ parser.error(message) -+ -+ if os.path.exists(args[1]): -+ message = ("The path '{0}' exists. Refusing to overwrite ").format(args[1]) -+ parser.error(message) -+ -+ pom_path = args[0] -+ uart = POM(pom_path) -+ -+ tree = None -+ ElementTree.register_namespace('',"http://maven.apache.org/POM/4.0.0") -+ if uart.packaging and uart.packaging.lower() == 'pom': -+ tree = ElementTree.parse(args[0]) -+ else: -+ result_pom = "\n" -+ result_pom += "\n" -+ result_pom += " 4.0.0\n" -+ result_pom += (" {0}\n" ).format(uart.groupId) -+ result_pom += (" {0}\n" ).format(uart.artifactId) -+ result_pom += (" {0}\n").format(uart.version) -+ -+ if hasattr(uart, "packaging") and uart.packaging != 'jar': -+ result_pom += (" {0}\n").format(uart.packaging) -+ if hasattr(uart, "extension") and uart.extension != 'jar': -+ result_pom += (" {0}\n").format(uart.extension) -+ if hasattr(uart, "classifier") and uart.classifiler != '': -+ result_pom += (" {0}\n").format(uart.classifier) -+ -+ mvn_deps = gather_dependencies(pom_path) -+ if mvn_deps: -+ result_pom += " \n" -+ for d in mvn_deps: -+ result_pom += " \n" -+ result_pom += (" {0}\n").format(d.groupId) -+ result_pom += (" {0}\n" ).format(d.artifactId) -+ if hasattr(d, "version"): -+ result_pom += (" {0}\n" ).format(d.version) -+ if hasattr(d, "extension") and d.extension != 'jar': -+ result_pom += (" {0}\n").format(d.extension) -+ if hasattr(d, "classifier") and d.classifier != '': -+ result_pom += (" {0}\n").format(d.classifier) -+ if hasattr(d, "type") and d.type != '': -+ result_pom += (" {0}\n").format(d.type) -+ if hasattr(d, "optional") and d.optional.lower() == "true": -+ result_pom += (" {0}\n").format(d.optional.lower()) -+ result_pom += " \n" -+ result_pom += " \n" -+ -+ result_pom += "\n" -+ tree = ElementTree.ElementTree(ElementTree.XML(result_pom)) -+ tree.write(args[1],encoding="UTF-8",xml_declaration=True) -+ os.chmod(args[1], 0o0644) -+ -+if __name__ == "__main__": -+ try: -+ _main() -+ except JavaPackagesToolsException as e: -+ sys.exit(e) -diff --git a/java-utils/maven_depmap.py b/java-utils/maven_depmap.py -new file mode 100644 -index 00000000..6a0520fa ---- /dev/null -+++ b/java-utils/maven_depmap.py -@@ -0,0 +1,357 @@ -+# -+# Copyright (c) 2014, Red Hat, Inc. -+# All rights reserved. -+# -+# Redistribution and use in source and binary forms, with or without -+# modification, are permitted provided that the following conditions -+# are met: -+# -+# 1. Redistributions of source code must retain the above copyright -+# notice, this list of conditions and the following disclaimer. -+# 2. Redistributions in binary form must reproduce the above copyright -+# notice, this list of conditions and the following disclaimer in the -+# documentation and/or other materials provided with the -+# distribution. -+# 3. Neither the name of Red Hat nor the names of its -+# contributors may be used to endorse or promote products derived -+# from this software without specific prior written permission. -+# -+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -+# -+# Authors: Stanislav Ochotnicky -+# -+# this script is used by add_maven_depmap rpm macro to generate -+# mapping between maven groupId:artifactId and jar file in our local -+# filesystem (i.e. %{_javadir}) -+# rpm macro expects to find this file as %{_javadir}-utils/maven_depmap.py -+ -+ -+from optparse import OptionParser -+import os -+import shutil -+import sys -+ -+from os.path import basename, dirname -+import zipfile -+from time import gmtime, strftime -+from copy import deepcopy -+ -+from javapackages.maven.pom import POM -+from javapackages.metadata.artifact import MetadataArtifact -+from javapackages.metadata.alias import MetadataAlias -+from javapackages.metadata.dependency import MetadataDependency -+from javapackages.metadata.metadata import Metadata -+ -+from javapackages.common.exception import JavaPackagesToolsException -+ -+ -+class PackagingTypeMissingFile(JavaPackagesToolsException): -+ def __init__(self, pom_path): -+ self.args=("Packaging type is not 'pom' and no artifact path has been provided for POM %s" % pom_path,) -+ -+class IncompatibleFilenames(JavaPackagesToolsException): -+ def __init__(self, pom_path, jar_path): -+ self.args=("Filenames of POM %s and JAR %s does not match properly. Check that JAR subdirectories matches '.' in pom name." % (pom_path, jar_path),) -+ -+class ExtensionsDontMatch(JavaPackagesToolsException): -+ def __init__(self, coordinates_ext, file_ext): -+ self.args=("Extensions don't match: '%s' != '%s'" % (coordinates_ext, file_ext),) -+ -+class MissingJarFile(JavaPackagesToolsException): -+ def __init__(self): -+ self.args=("JAR seems to be missing in standard directories. Make sure you have installed it",) -+ -+class UnknownFileExtension(JavaPackagesToolsException): -+ def __init__(self, jar_path): -+ self.args=("Unknown file extension: %s" % (jar_path),) -+ -+ -+def _print_path_with_dirs(path, base): -+ print(path) -+ path = dirname(path) -+ while path != base and path != '/': -+ print("%dir " + path) -+ path = dirname(path) -+ -+ -+def _make_files_versioned(versions, pom_path, jar_path, pom_base, jar_base): -+ """Make pom and jar file versioned""" -+ versions = sorted(set(versions.split(','))) -+ -+ vpom_path = pom_path -+ vjar_path = jar_path -+ -+ ret_pom_path = pom_path -+ ret_jar_path = jar_path -+ -+ # pom -+ if ':' not in vpom_path: -+ root, ext = os.path.splitext(vpom_path) -+ symlink = False -+ for ver in sorted(versions): -+ dest = "%s-%s%s" % (root, ver, ext) -+ if not symlink: -+ shutil.copy(os.path.realpath(vpom_path), dest) -+ symlink = True -+ vpom_path = dest -+ ret_pom_path = dest -+ else: -+ os.symlink(basename(vpom_path), dest) -+ # output file path for file lists -+ _print_path_with_dirs(dest, pom_base) -+ # remove unversioned pom -+ os.remove(pom_path) -+ -+ # jar -+ if vjar_path: -+ root, ext = os.path.splitext(vjar_path) -+ symlink = False -+ for ver in sorted(versions): -+ dest = "%s-%s%s" % (root, ver, ext) -+ if not symlink: -+ shutil.copy(os.path.realpath(vjar_path), dest) -+ symlink = True -+ vjar_path = dest -+ ret_jar_path = dest -+ else: -+ os.symlink(basename(vjar_path), dest) -+ # output file path for file lists -+ _print_path_with_dirs(dest, jar_base) -+ # remove unversioned jar -+ os.remove(jar_path) -+ -+ # return paths to versioned, but regular files (not symlinks) -+ return ret_pom_path, ret_jar_path -+ -+def _resolve_deps(pom): -+ deps = [] -+ depm = [] -+ props = {} -+ -+ deps.extend([x for x in pom.dependencies]) -+ depm.extend([x for x in pom.dependencyManagement]) -+ props = pom.properties -+ if pom.groupId: -+ props["project.groupId"] = pom.groupId -+ if pom.artifactId: -+ props["project.artifactId"] = pom.artifactId -+ if pom.version: -+ props["project.version"] = pom.version -+ -+ for d in deps: -+ d.interpolate(props) -+ -+ for dm in depm: -+ dm.interpolate(props) -+ -+ # apply dependencyManagement on deps -+ for d in deps: -+ for dm in depm: -+ if d.compare_to(dm): -+ d.merge_with(dm) -+ break -+ -+ # only deps with scope "compile" or "runtime" are interesting -+ deps = [x for x in deps if x.scope in ["", "compile", "runtime"]] -+ -+ return deps -+ -+# Add a file to a ZIP archive (or JAR, WAR, ...) unless the file -+# already exists in the archive. Provided by Tomas Radej. -+def append_if_missing(archive_name, file_name, file_contents): -+ archive = zipfile.ZipFile(archive_name, 'a') -+ try: -+ if file_name not in archive.namelist(): -+ archive.writestr(file_name, file_contents) -+ finally: -+ archive.close() -+ -+ -+# Inject pom.properties if JAR doesn't have one. This is necessary to -+# identify the origin of JAR files that are present in the repository. -+def inject_pom_properties(jar_path, artifact): -+ if not zipfile.is_zipfile(jar_path): -+ return -+ props_path = "META-INF/maven/{a.groupId}/{a.artifactId}/pom.properties".format(a=artifact) -+ properties = """#Generated by Java Packages Tools -+version={a.version} -+groupId={a.groupId} -+artifactId={a.artifactId} -+""".format(a=artifact) -+ -+ if artifact.extension: -+ properties = properties + \ -+ "extension={ext}\n".format(ext=artifact.extension) -+ if artifact.classifier: -+ properties = properties + \ -+ "classifier={clas}\n".format(clas=artifact.classifier) -+ -+ append_if_missing(jar_path, props_path, properties) -+ -+ -+def add_compat_versions(artifact, versions): -+ if not versions: -+ return artifact -+ -+ artifact.compatVersions = versions.split(',') -+ return artifact -+ -+ -+def add_aliases(artifact, additions): -+ if not additions: -+ return artifact -+ -+ aliases = additions.split(',') -+ result = list() -+ for a in sorted(aliases): -+ alias = MetadataAlias.from_mvn_str(a) -+ alias.extension = artifact.extension -+ result.append(alias) -+ -+ artifact.aliases = result -+ return artifact -+ -+ -+def write_metadata(metadata_file, artifacts): -+ if os.path.exists(metadata_file): -+ metadata = Metadata.create_from_file(metadata_file) -+ else: -+ metadata = Metadata() -+ -+ # pylint:disable=E1103 -+ metadata.artifacts += deepcopy(artifacts) -+ -+ metadata.write_to_file(metadata_file) -+ -+ -+def _main(): -+ usage="usage: %prog [options] metadata_path pom_path| [jar_path]" -+ parser = OptionParser(usage=usage) -+ parser.add_option("-a","--append",type="str", -+ help="Additional depmaps to add (gid:aid) [default: %default]") -+ parser.add_option('-r', '--versions', type="str", -+ help='Additional versions to add for each depmap') -+ parser.add_option('-n', '--namespace', type="str", -+ help='Namespace to use for generated fragments', default="") -+ parser.add_option('--pom-base', type="str", -+ help='Base path under which POM files are installed', default="") -+ parser.add_option('--jar-base', type="str", -+ help='Base path under which JAR files are installed', default="") -+ -+ parser.set_defaults(append=None) -+ -+ (options, args) = parser.parse_args() -+ append_deps = options.append -+ add_versions = options.versions -+ namespace = options.namespace -+ pom_base = options.pom_base -+ jar_base = options.jar_base -+ -+ if len(args) < 2: -+ parser.error("Incorrect number of arguments") -+ # These will fail when incorrect number of arguments is given. -+ metadata_path = args[0].strip() -+ pom_path = args[1].strip() -+ jar_path = None -+ -+ artifact = None -+ have_pom = False -+ -+ if len(args) == 3: -+ jar_path = args[2].strip() -+ if ':' in pom_path: -+ pom_str = pom_path.rsplit('/')[-1] -+ artifact = MetadataArtifact.from_mvn_str(pom_str) -+ artifact_ext = artifact.extension or "jar" -+ file_ext = os.path.splitext(jar_path)[1][1:] -+ if artifact_ext != file_ext: -+ raise ExtensionsDontMatch(artifact_ext, file_ext) -+ -+ if artifact.extension == 'jar': -+ artifact.extension = '' -+ -+ if not artifact.version: -+ parser.error("Artifact definition has to include version") -+ else: -+ artifact = MetadataArtifact.from_pom(pom_path) -+ ext = os.path.splitext(jar_path)[1][1:] -+ if ext != "jar": -+ artifact.extension = ext -+ have_pom = True -+ if artifact: -+ inject_pom_properties(jar_path, artifact) -+ else: -+ # looks like POM only artifact -+ if ':' not in pom_path: -+ artifact = MetadataArtifact.from_pom(pom_path) -+ have_pom = True -+ -+ if POM(pom_path).packaging != "pom": -+ raise PackagingTypeMissingFile(pom_path) -+ else: -+ sys.exit("JAR file path must be specified when using artifact coordinates") -+ -+ -+ # output file path for file lists -+ print(metadata_path) -+ -+ artifact = add_compat_versions(artifact, add_versions) -+ if add_versions: -+ pom_path, jar_path = _make_files_versioned(add_versions, pom_path, jar_path, pom_base, jar_base) -+ -+ if namespace: -+ artifact.namespace = namespace -+ -+ if have_pom: -+ pom = POM(pom_path) -+ if pom.parent or pom.packaging == "pom": -+ artifact.properties["xmvn.resolver.disableEffectivePom"] = "true" -+ else: -+ deps = [] -+ for d in _resolve_deps(pom): -+ deps.append(MetadataDependency.from_mvn_dependency(d)) -+ if deps: -+ artifact.dependencies = set(deps) -+ -+ -+ buildroot = os.environ.get('RPM_BUILD_ROOT') -+ am = [] -+ if jar_path: -+ metadata_jar_path = os.path.abspath(jar_path) -+ artifact.path = metadata_jar_path.replace(buildroot, "") if buildroot else metadata_jar_path -+ artifact = add_aliases(artifact, append_deps) -+ if artifact.extension == "jar": -+ artifact.extension = "" -+ am.append(artifact.copy()) -+ # output file path for file list (if it's not versioned) -+ if not add_versions: -+ _print_path_with_dirs(jar_path, jar_base) -+ if have_pom: -+ metadata_pom_path = os.path.abspath(pom_path) -+ artifact.path = metadata_pom_path.replace(buildroot, "") if buildroot else metadata_pom_path -+ artifact.extension = "pom" -+ artifact.aliases = None -+ artifact = add_aliases(artifact, append_deps) -+ am.append(artifact.copy()) -+ # output file path for file list (if it's not versioned) -+ if not add_versions: -+ _print_path_with_dirs(pom_path, pom_base) -+ -+ write_metadata(metadata_path, am) -+ -+ -+if __name__ == "__main__": -+ try: -+ _main() -+ except JavaPackagesToolsException as e: -+ sys.exit(e) -diff --git a/javapackages-tools.spec b/javapackages-tools.spec -index d2b6a235..65ac4e17 100644 ---- a/javapackages-tools.spec -+++ b/javapackages-tools.spec -@@ -72,6 +72,14 @@ Provides: %{?scl_prefix}eclipse-filesystem = %{version}-%{release} - This package provides some basic directories into which Java packages - install their content. - -+%package -n %{?scl_prefix}javapackages-compat -+Summary: Previously deprecated macros and scripts for Java packaging support -+Requires: %{?scl_prefix}javapackages-local = %{version}-%{release} -+ -+%description -n %{?scl_prefix}javapackages-compat -+This package provides previously deprecated macros and scripts to -+support Java packaging as well as some additions to them. -+ - %package -n %{?scl_prefix}maven-local - Summary: Macros and scripts for Maven packaging support - Requires: %{name} = %{version}-%{release} -@@ -173,6 +181,8 @@ rm -rf %{buildroot}%{_mandir}/man7/gradle_build.7 - - %files -n %{?scl_prefix}javapackages-filesystem -f files-filesystem - -+%files -n %{?scl_prefix}javapackages-compat -f files-compat -+ - %files -n %{?scl_prefix}javapackages-local -f files-local - - %files -n %{?scl_prefix}maven-local -diff --git a/macros.d/macros.javapackages-compat b/macros.d/macros.javapackages-compat -new file mode 100644 -index 00000000..6570156e ---- /dev/null -+++ b/macros.d/macros.javapackages-compat -@@ -0,0 +1,95 @@ -+# Copyright (c) 2012-2016, Red Hat, Inc -+# All rights reserved. -+# -+# Redistribution and use in source and binary forms, with or without -+# modification, are permitted provided that the following conditions -+# are met: -+# -+# 1. Redistributions of source code must retain the above copyright -+# notice, this list of conditions and the following disclaimer. -+# 2. Redistributions in binary form must reproduce the above copyright -+# notice, this list of conditions and the following disclaimer in the -+# documentation and/or other materials provided with the -+# distribution. -+# 3. Neither the name of Red Hat nor the names of its -+# contributors may be used to endorse or promote products derived -+# from this software without specific prior written permission. -+# -+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -+# -+# Authors: Stanislav Ochotnicky -+# Mikolaj Izdebski -+ -+ -+# %mvn_install_pom - Resolve the pom as much as possible and install it -+# -+# Usage: %mvn_install_pom -+# -+%mvn_install_pom @{pyinterpreter} @{javadir}-utils/install_pom.py -+ -+#============================================================================== -+# -+# add_maven_depmap is simplified version of jpackage-style add_to_maven_depmap -+# -f addition to fragment name -+# -a is "g1:a1,g2:a2" formatted string with additional depmaps (groupId:artifactId,...) -+# -v is "v1,v2" formatted string with additional compatibility versions -+# supposed to be provided (jar,pom will be renamed to -%{version} variants -+# and additional symlinks optionally created) -+# %1 is the pom filename relative to mavenpomdir -+# %2 is the path to jar file (when omitted we deal with parent pom file without jar) -+# -+# add_maven_depmap automatically parses pom file and it will fail with incorrect pom -+# or jar filename -+# -+# in the end add_maven_depmap optionally moves jar and pom file to -+# -%{version} variant and can create additional versioned symlinks -+ -+%add_maven_depmap(f:a:v:) \ -+set -e \ -+# default values \ -+%if %# == 0 \ -+ _pompart="JPP-%{name}.pom" \ -+ _jarpart="%{name}.jar" \ -+%else \ -+ _pompart="%1" \ -+ _jarpart="%2" \ -+%endif \ -+_filelist=".mfiles%{-f*:-%{-f*}}" \ -+install -dm 755 %{buildroot}%{_datadir}/maven-metadata \ -+_jbase= \ -+_jpath= \ -+for _dir in %{_jnidir} %{_javadir}; do \ -+ if [ -f %{buildroot}$_dir/$_jarpart ]; then \ -+ _jbase="%{buildroot}$_dir" \ -+ _jpath="$_jbase/$_jarpart" \ -+ fi \ -+done \ -+%if %# != 1 \ -+ [ -z "$_jpath" ] && (echo "%0 error: $_jarpart - file not found" 1>&2; exit 1) \ -+%endif \ -+@{pyinterpreter} @{javadir}-utils/maven_depmap.py %{-a} %{-v*:-r %{-v*}} \\\ -+ --pom-base %{buildroot}%{_mavenpomdir} \\\ -+ --jar-base "$_jbase" \\\ -+ %{buildroot}%{_datadir}/maven-metadata/%{name}%{-f*:-%{-f*}}.xml \\\ -+ %{buildroot}%{_mavenpomdir}/$_pompart \\\ -+%if %# == 2 \ -+ "${_jpath}" \\\ -+%endif \ -+%if %# == 0 \ -+ "${_jpath}" \\\ -+%endif \ -+ >> ${_filelist} \ -+sed -i 's:%{buildroot}::' ${_filelist} \ -+sort -u -o ${_filelist} ${_filelist} \ -+\ -+%{nil} -diff --git a/test/data/install_pom/JPP-apache-commons-io.pom b/test/data/install_pom/JPP-apache-commons-io.pom -new file mode 100644 -index 00000000..9349ebdd ---- /dev/null -+++ b/test/data/install_pom/JPP-apache-commons-io.pom -@@ -0,0 +1,22 @@ -+ -+ -+ org.apache.commons -+ commons-parent -+ 17 -+ -+ 4.0.0 -+ commons-io -+ commons-io -+ 2 -+ Commons Lang -+ pom -+ -+ -+ -+ G -+ G -+ 1000 -+ -+ -+ -+ -diff --git a/test/data/install_pom/JPP-bndlib.pom b/test/data/install_pom/JPP-bndlib.pom -new file mode 100644 -index 00000000..bf1efe5e ---- /dev/null -+++ b/test/data/install_pom/JPP-bndlib.pom -@@ -0,0 +1,72 @@ -+ -+ -+ -+ 4.0.0 -+ -+ -+ biz.aQute -+ -+ -+ bndlib -+ -+ -+ 1.50.0 -+ -+ -+ A Swiss Army Knife for OSGi -+ -+ -+ bnd - Bundle Tool -+ -+ -+ http://www.aQute.biz/Code/Bnd -+ -+ -+ -+ git://github.com/bndtools/bnd.git -+ -+ -+ git://github.com/bndtools/bnd.git -+ -+ -+ git://github.com/bndtools/bnd.git -+ -+ -+ -+ -+ aQute SARL -+ -+ -+ http://www.aQute.biz -+ -+ -+ -+ -+ -+ Peter.Kriens@aQute.biz -+ -+ -+ Peter.Kriens -+ -+ -+ Peter.Kriens@aQute.biz -+ -+ -+ aQute -+ -+ -+ -+ -+ -+ -+ Apache Software License 2.0 -+ -+ -+ http://www.opensource.org/licenses/apache2.0.php -+ -+ -+ repo -+ -+ -+ -+ -\ No newline at end of file -diff --git a/test/data/install_pom/JPP-noversion-pom.pom b/test/data/install_pom/JPP-noversion-pom.pom -new file mode 100644 -index 00000000..a789d1b6 ---- /dev/null -+++ b/test/data/install_pom/JPP-noversion-pom.pom -@@ -0,0 +1,9 @@ -+ -+ 4.0.0 -+ org.apache.commons -+ commons-io -+ commons-io -+ Commons Lang -+ pom -+ -+ -diff --git a/test/data/install_pom/JPP-noversion.pom b/test/data/install_pom/JPP-noversion.pom -new file mode 100644 -index 00000000..bd87edea ---- /dev/null -+++ b/test/data/install_pom/JPP-noversion.pom -@@ -0,0 +1,8 @@ -+ -+ 4.0.0 -+ org.apache.commons -+ commons-io -+ commons-io -+ Commons Lang -+ -+ -diff --git a/test/data/install_pom/JPP-parent-version.pom b/test/data/install_pom/JPP-parent-version.pom -new file mode 100644 -index 00000000..4e40fa2a ---- /dev/null -+++ b/test/data/install_pom/JPP-parent-version.pom -@@ -0,0 +1,9 @@ -+ -+ 4.0.0 -+ a -+ -+ g -+ p -+ 1 -+ -+ -diff --git a/test/data/install_pom/a_binary_file.pom b/test/data/install_pom/a_binary_file.pom -new file mode 100644 -index 00000000..5b3a2335 -Binary files /dev/null and b/test/data/install_pom/a_binary_file.pom differ -diff --git a/test/data/install_pom/cglib/cglib-integration-test/pom.xml b/test/data/install_pom/cglib/cglib-integration-test/pom.xml -new file mode 100644 -index 00000000..1c717477 ---- /dev/null -+++ b/test/data/install_pom/cglib/cglib-integration-test/pom.xml -@@ -0,0 +1,87 @@ -+ -+ -+ 4.0.0 -+ -+ -+ -+ -+ -+ cglib -+ cglib-parent -+ 3.3.0 -+ -+ -+ -+ -+ -+ cglib-integration-test -+ jar -+ -+ -+ -+ -+ -+ -+ -+ org.apache.maven.plugins -+ maven-compiler-plugin -+ -+ -+ org.apache.maven.plugins -+ maven-surefire-plugin -+ -+ -+ org.apache.maven.plugins -+ maven-javadoc-plugin -+ -+ -+ org.apache.maven.plugins -+ maven-failsafe-plugin -+ -+ -+ -+ integration-test -+ verify -+ -+ -+ -+ -+ -+ -+ -+ -+ src/main/resources -+ -+ -+ ${basedir}/.. -+ META-INF -+ -+ LICENSE -+ NOTICE -+ README -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ ${project.groupId} -+ cglib -+ -+ -+ ${project.groupId} -+ cglib-sample -+ -+ -+ -+ junit -+ junit -+ -+ -+ -+ -diff --git a/test/data/install_pom/cglib/cglib/pom.xml b/test/data/install_pom/cglib/cglib/pom.xml -new file mode 100644 -index 00000000..4563e67f ---- /dev/null -+++ b/test/data/install_pom/cglib/cglib/pom.xml -@@ -0,0 +1,76 @@ -+ -+ -+ 4.0.0 -+ -+ -+ -+ -+ -+ cglib -+ cglib-parent -+ 3.3.0 -+ -+ -+ -+ -+ -+ cglib -+ jar -+ -+ -+ -+ -+ -+ -+ -+ org.apache.maven.plugins -+ maven-compiler-plugin -+ -+ -+ org.apache.maven.plugins -+ maven-surefire-plugin -+ -+ -+ org.apache.maven.plugins -+ maven-javadoc-plugin -+ -+ -+ -+ -+ -+ src/main/resources -+ -+ -+ ${basedir}/.. -+ META-INF -+ -+ LICENSE -+ NOTICE -+ README -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ org.ow2.asm -+ asm -+ -+ -+ org.apache.ant -+ ant -+ true -+ -+ -+ -+ junit -+ junit -+ -+ -+ -+ -diff --git a/test/data/install_pom/cglib/pom.xml b/test/data/install_pom/cglib/pom.xml -new file mode 100644 -index 00000000..b4468689 ---- /dev/null -+++ b/test/data/install_pom/cglib/pom.xml -@@ -0,0 +1,246 @@ -+ -+ -+ 4.0.0 -+ -+ -+ org.sonatype.oss -+ oss-parent -+ 7 -+ -+ -+ -+ -+ -+ cglib -+ cglib-parent -+ 3.3.0 -+ pom -+ -+ Code Generation Library -+ https://github.com/cglib/cglib -+ cglib is a powerful, high performance and quality Code Generation Library, It is used to extend JAVA classes and implements interfaces at runtime. -+ -+ -+ scm:git:git://github.com/cglib/cglib.git -+ scm:git:ssh://git@github.com/cglib/cglib.git -+ https://github.com/cglib/cglib -+ -+ -+ -+ Github Issues -+ https://github.com/cglib/cglib/issues -+ -+ -+ -+ Travis -+ https://travis-ci.org/cglib/cglib -+ -+ -+ -+ -+ ASF 2.0 -+ http://www.apache.org/licenses/LICENSE-2.0.txt -+ repo -+ -+ -+ -+ -+ -+ -+ -+ UTF-8 -+ UTF-8 -+ -+ 1.5 -+ 1.5 -+ 7.1 -+ 1.10.3 -+ 1.21 -+ 3.7.0 -+ 3.1.0 -+ 3.0.1 -+ 3.1.0 -+ -+ -+ ${java.compiler.argument} -+ true -+ -+ -+ -+ -+ -+ -+ cglib -+ cglib-nodep -+ cglib-sample -+ cglib-integration-test -+ cglib-jmh -+ -+ -+ -+ -+ -+ -+ -+ java8 -+ -+ [1.8,) -+ -+ -+ -parameters -+ -+ -+ -+ java9 -+ -+ [1.9,) -+ -+ -+ 1.6 -+ 1.6 -+ -parameters -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ org.apache.maven.plugins -+ maven-compiler-plugin -+ ${maven-compiler-plugin.version} -+ -+ ${java.version.source} -+ ${java.version.target} -+ ${java.compiler.argument} -+ ${java.specification.version} -+ ${java.specification.version} -+ ${java.test.compiler.argument} -+ -+ -+ -+ org.apache.maven.plugins -+ maven-surefire-plugin -+ 2.21.0 -+ -+ -+ -+ net.sf.cglib.test.stressHashCodes -+ true -+ -+ -+ -+ -+ -+ org.apache.maven.plugins -+ maven-failsafe-plugin -+ 2.21.0 -+ -+ -+ -+ net.sf.cglib.test.stressHashCodes -+ true -+ -+ -+ -+ -+ -+ org.apache.maven.plugins -+ maven-javadoc-plugin -+ ${maven-javadoc-plugin.version} -+ -+ true -+ false -+ false -+ -+ false -+ none -+ -+ -+ org.ow2.asm -+ asm -+ ${asm.version} -+ -+ -+ org.apache.ant -+ ant -+ ${ant.version} -+ -+ -+ -+ -+ -+ attach-javadocs -+ -+ jar -+ -+ -+ -+ -+ -+ org.sonatype.plugins -+ jarjar-maven-plugin -+ 1.9 -+ -+ -+ -+ -+ -+ org.apache.maven.plugins -+ maven-gpg-plugin -+ 1.6 -+ -+ -+ sign-artifacts -+ verify -+ -+ sign -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ ${project.groupId} -+ cglib -+ ${project.version} -+ -+ -+ ${project.groupId} -+ cglib-sample -+ ${project.version} -+ -+ -+ -+ org.ow2.asm -+ asm -+ ${asm.version} -+ -+ -+ org.apache.ant -+ ant -+ ${ant.version} -+ -+ -+ -+ junit -+ junit -+ 4.12 -+ test -+ -+ -+ -+ -+ -diff --git a/test/data/install_pom/fakedir b/test/data/install_pom/fakedir -new file mode 100644 -index 00000000..e69de29b -diff --git a/test/data/install_pom/languagetool/languagetool-language-modules/ja/pom.xml b/test/data/install_pom/languagetool/languagetool-language-modules/ja/pom.xml -new file mode 100644 -index 00000000..1df2ead4 ---- /dev/null -+++ b/test/data/install_pom/languagetool/languagetool-language-modules/ja/pom.xml -@@ -0,0 +1,104 @@ -+ -+ 4.0.0 -+ -+ -+ org.languagetool -+ languagetool-parent -+ 4.8 -+ ../../pom.xml -+ -+ -+ language-ja -+ http://www.languagetool.org -+ Japanese module for LanguageTool -+ -+ -+ -+ GNU Lesser General Public License -+ http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt -+ repo -+ The license refers to the source code, resources may be under different licenses -+ -+ -+ -+ jar -+ -+ -+ -+ Daniel Naber -+ Maintainer -+ -+ -+ Marcin Miłkowski -+ Maintainer -+ -+ -+ -+ -+ -+ -+ maven-compiler-plugin -+ -+ -+ maven-surefire-plugin -+ -+ -+ -+ -+ -+ -+ org.languagetool -+ languagetool-core -+ ${languagetool.version} -+ -+ -+ -+ com.github.lucene-gosen -+ lucene-gosen -+ 6.2.1 -+ ipadic -+ -+ -+ org.apache.lucene -+ lucene-core -+ -+ -+ org.apache.solr -+ solr-core -+ -+ -+ org.apache.solr -+ solr-solrj -+ -+ -+ org.apache.lucene -+ lucene-codecs -+ -+ -+ org.apache.lucene -+ lucene-analyzers -+ -+ -+ org.apache.lucene -+ lucene-analyzers-common -+ -+ -+ -+ -+ -+ -+ org.languagetool -+ languagetool-core -+ ${languagetool.version} -+ test-jar -+ test -+ -+ -+ junit -+ junit -+ ${junit.version} -+ test -+ -+ -+ -+ -\ No newline at end of file -diff --git a/test/data/install_pom/languagetool/languagetool-standalone/pom.xml b/test/data/install_pom/languagetool/languagetool-standalone/pom.xml -new file mode 100644 -index 00000000..37c51753 ---- /dev/null -+++ b/test/data/install_pom/languagetool/languagetool-standalone/pom.xml -@@ -0,0 +1,163 @@ -+ -+ 4.0.0 -+ -+ -+ org.languagetool -+ languagetool-parent -+ 4.8 -+ ../pom.xml -+ -+ -+ languagetool-standalone -+ http://www.languagetool.org -+ LanguageTool stand-alone GUI -+ -+ -+ -+ GNU Lesser General Public License -+ http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt -+ repo -+ -+ -+ -+ jar -+ -+ -+ -+ -+ src/main/resources -+ -+ -+ ${basedir} -+ META-INF -+ -+ CHANGES.txt -+ COPYING.txt -+ README.txt -+ -+ -+ -+ -+ -+ maven-compiler-plugin -+ -+ -+ maven-surefire-plugin -+ -+ -+ -+ org.apache.maven.plugins -+ maven-jar-plugin -+ ${maven.jar.plugin} -+ -+ -+ -+ true -+ custom -+ libs/$${artifact.artifactId}$${dashClassifier?}.$${artifact.extension} -+ -+ -+ -+ ./ languagetool-server.jar -+ org.languagetool.gui.Main -+ ${project.version} -+ ${maven.build.timestamp} -+ -+ -+ -+ -+ -+ maven-assembly-plugin -+ ${maven.assemby.plugin} -+ -+ src/main/assembly/zip.xml -+ LanguageTool-${project.version} -+ false -+ -+ -+ true -+ false -+ -+ -+ -+ -+ -+ make-assembly -+ package -+ -+ single -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ org.languagetool -+ languagetool-core -+ ${languagetool.version} -+ -+ -+ org.languagetool -+ languagetool-gui-commons -+ ${languagetool.version} -+ -+ -+ org.languagetool -+ languagetool-commandline -+ ${languagetool.version} -+ -+ -+ org.languagetool -+ languagetool-server -+ ${languagetool.version} -+ -+ -+ -+ org.languagetool -+ language-all -+ ${languagetool.version} -+ -+ -+ -+ org.languagetool -+ languagetool-tools -+ ${languagetool.version} -+ -+ -+ -+ org.apache.commons -+ commons-collections4 -+ 4.1 -+ -+ -+ -+ org.slf4j -+ slf4j-api -+ 1.7.25 -+ -+ -+ ch.qos.logback -+ logback-classic -+ 1.2.3 -+ -+ -+ -+ -+ org.languagetool -+ languagetool-core -+ ${languagetool.version} -+ test-jar -+ -+ -+ junit -+ junit -+ ${junit.version} -+ -+ -+ -+ -+ -diff --git a/test/data/install_pom/languagetool/pom.xml b/test/data/install_pom/languagetool/pom.xml -new file mode 100644 -index 00000000..a47b9b01 ---- /dev/null -+++ b/test/data/install_pom/languagetool/pom.xml -@@ -0,0 +1,233 @@ -+ -+ 4.0.0 -+ -+ -+ 3.04 -+ -+ -+ -+ org.sonatype.oss -+ oss-parent -+ 7 -+ -+ -+ -+ scm:git:git@github.com:languagetool-org/languagetool.git -+ scm:git:git@github.com:languagetool-org/languagetool.git -+ git@github.com:languagetool-org/languagetool.git -+ HEAD -+ -+ -+ org.languagetool -+ languagetool-parent -+ 4.8 -+ pom -+ -+ -+ 4.8 -+ UTF-8 -+ 1.8 -+ 1.8 -+ yyyy-MM-dd HH:mm -+ 2.6 -+ 2.6 -+ 4.12 -+ 2.1.6 -+ 2.9.10 -+ 5.5.5 -+ -+ -+ -+ -+ -+ -+ -+ org.apache.maven.wagon -+ wagon-webdav -+ 1.0-beta-2 -+ -+ -+ -+ -+ -+ -+ -+ -+ org.apache.maven.plugins -+ maven-enforcer-plugin -+ 3.0.0-M2 -+ -+ -+ enforce -+ -+ -+ -+ -+ -+ -+ enforce -+ -+ -+ -+ -+ -+ -+ pl.project13.maven -+ git-commit-id-plugin -+ 2.2.6 -+ -+ -+ get-the-git-infos -+ -+ revision -+ -+ initialize -+ -+ -+ -+ true -+ ${project.build.outputDirectory}/git.properties -+ -+ -+ -+ -+ maven-compiler-plugin -+ 3.8.0 -+ -+ -+ ${maven.compiler.source} -+ ${maven.compiler.target} -+ -+ -+ -+ -+ maven-surefire-plugin -+ 2.22.0 -+ -+ false -+ -Xms256m -Xmx1550m -+ failedfirst -+ -+ **/*ConcurrencyTest.java -+ **/Abstract*.java -+ -+ false -+ -+ -+ -+ -+ org.apache.maven.plugins -+ maven-javadoc-plugin -+ 3.0.1 -+ -+ -+ org.languagetool.dev.conversion* -+ -+ -+ -+ -+ -+ -+ org.codehaus.mojo -+ license-maven-plugin -+ -+ -+ -+ -+ -+ -+ -+ -+ community-release -+ dav:https://repository-languagetool.forge.cloudbees.com/release/ -+ -+ -+ community-snapshot -+ dav:https://repository-languagetool.forge.cloudbees.com/snapshot/ -+ -+ -+ -+ -+ -+ -+ release-sign-artifacts -+ -+ -+ performRelease -+ true -+ -+ -+ -+ -+ -+ org.apache.maven.plugins -+ maven-gpg-plugin -+ 1.6 -+ -+ true -+ -+ -+ -+ sign-artifacts -+ verify -+ -+ sign -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ languagetool-core -+ languagetool-language-modules/en -+ languagetool-language-modules/fa -+ languagetool-language-modules/fr -+ languagetool-language-modules/de -+ languagetool-language-modules/pl -+ languagetool-language-modules/ca -+ languagetool-language-modules/it -+ languagetool-language-modules/br -+ languagetool-language-modules/nl -+ languagetool-language-modules/pt -+ languagetool-language-modules/ru -+ languagetool-language-modules/ast -+ languagetool-language-modules/be -+ languagetool-language-modules/zh -+ languagetool-language-modules/da -+ languagetool-language-modules/eo -+ languagetool-language-modules/gl -+ languagetool-language-modules/el -+ languagetool-language-modules/is -+ languagetool-language-modules/ja -+ languagetool-language-modules/km -+ languagetool-language-modules/lt -+ languagetool-language-modules/ml -+ languagetool-language-modules/ro -+ languagetool-language-modules/sk -+ languagetool-language-modules/sl -+ -+ languagetool-language-modules/es -+ languagetool-language-modules/sv -+ languagetool-language-modules/ta -+ languagetool-language-modules/tl -+ languagetool-language-modules/uk -+ languagetool-language-modules/de-DE-x-simple-language -+ languagetool-language-modules/all -+ languagetool-gui-commons -+ languagetool-commandline -+ languagetool-standalone -+ languagetool-office-extension -+ languagetool-wikipedia -+ languagetool-server -+ languagetool-http-client -+ languagetool-tools -+ languagetool-dev -+ languagetool-rpm-package -+ -+ -+ -+ -diff --git a/test/data/install_pom/test_any_not_final-want.xml b/test/data/install_pom/test_any_not_final-want.xml -new file mode 100644 -index 00000000..0e34c3f9 ---- /dev/null -+++ b/test/data/install_pom/test_any_not_final-want.xml -@@ -0,0 +1,24 @@ -+ -+ -+ 4.0.0 -+ org.fedoraproject.xmvn -+ xmvn-resolve -+ 4.0.0 -+ -+ -+ com.beust -+ jcommander -+ 1.82 -+ -+ -+ org.fedoraproject.xmvn -+ xmvn-api -+ 4.0.0 -+ -+ -+ org.fedoraproject.xmvn -+ xmvn-core -+ 4.0.0 -+ -+ -+ -\ No newline at end of file -diff --git a/test/data/install_pom/test_basic-want.xml b/test/data/install_pom/test_basic-want.xml -new file mode 100644 -index 00000000..2b7ed5cd ---- /dev/null -+++ b/test/data/install_pom/test_basic-want.xml -@@ -0,0 +1,7 @@ -+ -+ -+ 4.0.0 -+ biz.aQute -+ bndlib -+ 1.50.0 -+ -\ No newline at end of file -diff --git a/test/data/install_pom/test_dep_classifier-want.xml b/test/data/install_pom/test_dep_classifier-want.xml -new file mode 100644 -index 00000000..e78f92e6 ---- /dev/null -+++ b/test/data/install_pom/test_dep_classifier-want.xml -@@ -0,0 +1,20 @@ -+ -+ -+ 4.0.0 -+ org.languagetool -+ language-ja -+ 4.8 -+ -+ -+ org.languagetool -+ languagetool-core -+ 4.8 -+ -+ -+ com.github.lucene-gosen -+ lucene-gosen -+ 6.2.1 -+ ipadic -+ -+ -+ -\ No newline at end of file -diff --git a/test/data/install_pom/test_dep_type-want.xml b/test/data/install_pom/test_dep_type-want.xml -new file mode 100644 -index 00000000..0074c18b ---- /dev/null -+++ b/test/data/install_pom/test_dep_type-want.xml -@@ -0,0 +1,65 @@ -+ -+ -+ 4.0.0 -+ org.languagetool -+ languagetool-standalone -+ 4.8 -+ -+ -+ org.languagetool -+ languagetool-core -+ 4.8 -+ -+ -+ org.languagetool -+ languagetool-gui-commons -+ 4.8 -+ -+ -+ org.languagetool -+ languagetool-commandline -+ 4.8 -+ -+ -+ org.languagetool -+ languagetool-server -+ 4.8 -+ -+ -+ org.languagetool -+ language-all -+ 4.8 -+ -+ -+ org.languagetool -+ languagetool-tools -+ 4.8 -+ -+ -+ org.apache.commons -+ commons-collections4 -+ 4.1 -+ -+ -+ org.slf4j -+ slf4j-api -+ 1.7.25 -+ -+ -+ ch.qos.logback -+ logback-classic -+ 1.2.3 -+ -+ -+ org.languagetool -+ languagetool-core -+ 4.8 -+ test-jar -+ -+ -+ junit -+ junit -+ 4.12 -+ -+ -+ -\ No newline at end of file -diff --git a/test/data/install_pom/test_interpolate_from_model-want.xml b/test/data/install_pom/test_interpolate_from_model-want.xml -new file mode 100644 -index 00000000..7dd835c4 ---- /dev/null -+++ b/test/data/install_pom/test_interpolate_from_model-want.xml -@@ -0,0 +1,19 @@ -+ -+ -+ 4.0.0 -+ cglib -+ cglib-integration-test -+ 3.3.0 -+ -+ -+ cglib -+ cglib -+ 3.3.0 -+ -+ -+ cglib -+ cglib-sample -+ 3.3.0 -+ -+ -+ -\ No newline at end of file -diff --git a/test/data/install_pom/test_interpolate_from_parent-want.xml b/test/data/install_pom/test_interpolate_from_parent-want.xml -new file mode 100644 -index 00000000..2f53c963 ---- /dev/null -+++ b/test/data/install_pom/test_interpolate_from_parent-want.xml -@@ -0,0 +1,20 @@ -+ -+ -+ 4.0.0 -+ cglib -+ cglib -+ 3.3.0 -+ -+ -+ org.ow2.asm -+ asm -+ 7.1 -+ -+ -+ org.apache.ant -+ ant -+ 1.10.3 -+ true -+ -+ -+ -\ No newline at end of file -diff --git a/test/data/install_pom/test_packaging_pom-want.xml b/test/data/install_pom/test_packaging_pom-want.xml -new file mode 100644 -index 00000000..79ad0972 ---- /dev/null -+++ b/test/data/install_pom/test_packaging_pom-want.xml -@@ -0,0 +1,23 @@ -+ -+ -+ -+ org.apache.commons -+ commons-parent -+ 17 -+ -+ 4.0.0 -+ commons-io -+ commons-io -+ 2 -+ Commons Lang -+ pom -+ -+ -+ -+ G -+ G -+ 1000 -+ -+ -+ -+ -\ No newline at end of file -diff --git a/test/data/install_pom/test_packaging_pom_missing_version-want.xml b/test/data/install_pom/test_packaging_pom_missing_version-want.xml -new file mode 100644 -index 00000000..f3f66652 ---- /dev/null -+++ b/test/data/install_pom/test_packaging_pom_missing_version-want.xml -@@ -0,0 +1,10 @@ -+ -+ -+ 4.0.0 -+ org.apache.commons -+ commons-io -+ commons-io -+ Commons Lang -+ pom -+ -+ -\ No newline at end of file -diff --git a/test/data/install_pom/test_parent_chain-want.xml b/test/data/install_pom/test_parent_chain-want.xml -new file mode 100644 -index 00000000..3fe9faf2 ---- /dev/null -+++ b/test/data/install_pom/test_parent_chain-want.xml -@@ -0,0 +1,44 @@ -+ -+ -+ 4.0.0 -+ org.fedoraproject.xmvn -+ xmvn-install -+ 4.0.0 -+ -+ -+ com.beust -+ jcommander -+ 1.82 -+ -+ -+ org.fedoraproject.xmvn -+ xmvn-api -+ 4.0.0 -+ -+ -+ org.fedoraproject.xmvn -+ xmvn-core -+ 4.0.0 -+ -+ -+ org.slf4j -+ slf4j-api -+ 2.0.0-alpha7 -+ -+ -+ org.slf4j -+ slf4j-simple -+ 2.0.0-alpha7 -+ -+ -+ org.ow2.asm -+ asm -+ 9.3 -+ -+ -+ org.apache.commons -+ commons-compress -+ 1.21 -+ -+ -+ -\ No newline at end of file -diff --git a/test/data/install_pom/test_parent_install-want.xml b/test/data/install_pom/test_parent_install-want.xml -new file mode 100644 -index 00000000..64931178 ---- /dev/null -+++ b/test/data/install_pom/test_parent_install-want.xml -@@ -0,0 +1,245 @@ -+ -+ -+ 4.0.0 -+ -+ -+ org.sonatype.oss -+ oss-parent -+ 7 -+ -+ -+ -+ -+ -+ cglib -+ cglib-parent -+ 3.3.0 -+ pom -+ -+ Code Generation Library -+ https://github.com/cglib/cglib -+ cglib is a powerful, high performance and quality Code Generation Library, It is used to extend JAVA classes and implements interfaces at runtime. -+ -+ -+ scm:git:git://github.com/cglib/cglib.git -+ scm:git:ssh://git@github.com/cglib/cglib.git -+ https://github.com/cglib/cglib -+ -+ -+ -+ Github Issues -+ https://github.com/cglib/cglib/issues -+ -+ -+ -+ Travis -+ https://travis-ci.org/cglib/cglib -+ -+ -+ -+ -+ ASF 2.0 -+ http://www.apache.org/licenses/LICENSE-2.0.txt -+ repo -+ -+ -+ -+ -+ -+ -+ -+ UTF-8 -+ UTF-8 -+ -+ 1.5 -+ 1.5 -+ 7.1 -+ 1.10.3 -+ 1.21 -+ 3.7.0 -+ 3.1.0 -+ 3.0.1 -+ 3.1.0 -+ -+ -+ ${java.compiler.argument} -+ true -+ -+ -+ -+ -+ -+ -+ cglib -+ cglib-nodep -+ cglib-sample -+ cglib-integration-test -+ cglib-jmh -+ -+ -+ -+ -+ -+ -+ -+ java8 -+ -+ [1.8,) -+ -+ -+ -parameters -+ -+ -+ -+ java9 -+ -+ [1.9,) -+ -+ -+ 1.6 -+ 1.6 -+ -parameters -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ org.apache.maven.plugins -+ maven-compiler-plugin -+ ${maven-compiler-plugin.version} -+ -+ ${java.version.source} -+ ${java.version.target} -+ ${java.compiler.argument} -+ ${java.specification.version} -+ ${java.specification.version} -+ ${java.test.compiler.argument} -+ -+ -+ -+ org.apache.maven.plugins -+ maven-surefire-plugin -+ 2.21.0 -+ -+ -+ -+ net.sf.cglib.test.stressHashCodes -+ true -+ -+ -+ -+ -+ -+ org.apache.maven.plugins -+ maven-failsafe-plugin -+ 2.21.0 -+ -+ -+ -+ net.sf.cglib.test.stressHashCodes -+ true -+ -+ -+ -+ -+ -+ org.apache.maven.plugins -+ maven-javadoc-plugin -+ ${maven-javadoc-plugin.version} -+ -+ true -+ false -+ false -+ -+ false -+ none -+ -+ -+ org.ow2.asm -+ asm -+ ${asm.version} -+ -+ -+ org.apache.ant -+ ant -+ ${ant.version} -+ -+ -+ -+ -+ -+ attach-javadocs -+ -+ jar -+ -+ -+ -+ -+ -+ org.sonatype.plugins -+ jarjar-maven-plugin -+ 1.9 -+ -+ -+ -+ -+ -+ org.apache.maven.plugins -+ maven-gpg-plugin -+ 1.6 -+ -+ -+ sign-artifacts -+ verify -+ -+ sign -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ ${project.groupId} -+ cglib -+ ${project.version} -+ -+ -+ ${project.groupId} -+ cglib-sample -+ ${project.version} -+ -+ -+ -+ org.ow2.asm -+ asm -+ ${asm.version} -+ -+ -+ org.apache.ant -+ ant -+ ${ant.version} -+ -+ -+ -+ junit -+ junit -+ 4.12 -+ test -+ -+ -+ -+ -+ -\ No newline at end of file -diff --git a/test/data/install_pom/test_parent_relpath-want.xml b/test/data/install_pom/test_parent_relpath-want.xml -new file mode 100644 -index 00000000..98a5c980 ---- /dev/null -+++ b/test/data/install_pom/test_parent_relpath-want.xml -@@ -0,0 +1,25 @@ -+ -+ -+ 4.0.0 -+ org.fedoraproject.xmvn -+ xmvn-mojo -+ 4.0.0 -+ maven-plugin -+ -+ -+ org.fedoraproject.xmvn -+ xmvn-api -+ 4.0.0 -+ -+ -+ org.fedoraproject.xmvn -+ xmvn-core -+ 4.0.0 -+ -+ -+ org.apache.maven.resolver -+ maven-resolver-util -+ 1.8.1 -+ -+ -+ -\ No newline at end of file -diff --git a/test/data/install_pom/test_parent_version-want.xml b/test/data/install_pom/test_parent_version-want.xml -new file mode 100644 -index 00000000..4f5734e6 ---- /dev/null -+++ b/test/data/install_pom/test_parent_version-want.xml -@@ -0,0 +1,7 @@ -+ -+ -+ 4.0.0 -+ g -+ a -+ 1 -+ -\ No newline at end of file -diff --git a/test/data/install_pom/xmvn/xmvn-mojo/pom.xml b/test/data/install_pom/xmvn/xmvn-mojo/pom.xml -new file mode 100644 -index 00000000..c73f92a7 ---- /dev/null -+++ b/test/data/install_pom/xmvn/xmvn-mojo/pom.xml -@@ -0,0 +1,113 @@ -+ -+ -+ -+ 4.0.0 -+ -+ xmvn-parent -+ org.fedoraproject.xmvn -+ 4.0.0 -+ ../xmvn-parent -+ -+ xmvn-mojo -+ maven-plugin -+ XMvn MOJO -+ -+ XMvn MOJO is a Maven plugin, which consists of several MOJOs. -+ Some goals of these MOJOs are intended to be attached to default -+ Maven lifecycle when building packages, others can be called -+ directly from Maven command line. -+ -+ -+ -+ org.apache.maven -+ maven-core -+ provided -+ -+ -+ org.apache.maven -+ maven-artifact -+ provided -+ -+ -+ org.apache.maven -+ maven-model -+ provided -+ -+ -+ org.apache.maven -+ maven-plugin-api -+ provided -+ -+ -+ org.codehaus.plexus -+ plexus-classworlds -+ provided -+ -+ -+ org.codehaus.plexus -+ plexus-utils -+ provided -+ -+ -+ org.apache.maven.plugin-tools -+ maven-plugin-annotations -+ provided -+ -+ -+ org.fedoraproject.xmvn -+ xmvn-api -+ -+ -+ org.fedoraproject.xmvn -+ xmvn-core -+ runtime -+ -+ -+ org.codehaus.plexus -+ plexus-container-default -+ provided -+ -+ -+ org.apache.maven.resolver -+ maven-resolver-util -+ -+ -+ -+ -+ -+ maven-plugin-plugin -+ -+ -+ mojo-descriptor -+ -+ descriptor -+ -+ -+ -+ -+ true -+ -+ 3.0 -+ -+ -+ -+ -+ -+ -diff --git a/test/data/install_pom/xmvn/xmvn-parent/pom.xml b/test/data/install_pom/xmvn/xmvn-parent/pom.xml -new file mode 100644 -index 00000000..030923f9 ---- /dev/null -+++ b/test/data/install_pom/xmvn/xmvn-parent/pom.xml -@@ -0,0 +1,585 @@ -+ -+ -+ -+ 4.0.0 -+ org.fedoraproject.xmvn -+ xmvn-parent -+ 4.0.0 -+ pom -+ XMvn Parent -+ -+ XMvn Parent is project model from which all other XMvn modules are -+ inheriting. It defines settings common to all XMvn modules. -+ -+ https://fedora-java.github.io/xmvn/ -+ 2012 -+ -+ Red Hat, Inc. -+ http://www.redhat.com/ -+ -+ -+ -+ Apache License Version 2.0 -+ http://www.apache.org/licenses/LICENSE-2.0.txt -+ -+ -+ -+ -+ mizdebsk -+ Mikolaj Izdebski -+ mizdebsk@redhat.com -+ Red Hat, Inc. -+ http://www.redhat.com/ -+ +1 -+ -+ -+ -+ -+ Fedora Java development List -+ java-devel@lists.fedoraproject.org -+ http://lists.fedoraproject.org/pipermail/java-devel/ -+ https://admin.fedoraproject.org/mailman/listinfo/java-devel -+ https://admin.fedoraproject.org/mailman/listinfo/java-devel -+ -+ -+ -+ https://github.com/fedora-java/xmvn -+ scm:git:https://github.com/fedora-java/xmvn.git -+ scm:git:git@github.com:fedora-java/xmvn.git -+ -+ -+ Github -+ https://github.com/fedora-java/xmvn/issues/ -+ -+ -+ -+ ossrh -+ https://oss.sonatype.org/content/repositories/snapshots -+ -+ -+ -+ US-ASCII -+ -+ 9.3 -+ 1.82 -+ 3.2.0 -+ 1.8.1 -+ 3.8.6 -+ 2.6.0 -+ 3.4.2 -+ 3.6.4 -+ 2.0.0-alpha7 -+ 1.21 -+ -+ -+ 1.3.2.GA -+ 3.3.0 -+ 3.3.0 -+ 9.3 -+ 3.1.2 -+ 3.2.0 -+ 3.10.1 -+ 3.3.0 -+ 3.0.0-M2 -+ 4.3 -+ 3.0.1 -+ 3.0.0-M1 -+ 0.8.8 -+ 3.2.2 -+ 3.4.0 -+ 5.8.2 -+ 2.3 -+ 1.0 -+ 2.0.0 -+ 1.6.13 -+ 3.0.1 -+ 3.0.0 -+ 2.1.1 -+ 0.14 -+ 3.2.0 -+ 3.12.0 -+ 3.2.1 -+ 3.0.0-M7 -+ 2.9.0 -+ -+ -+ -+ -+ -+ org.apache.maven -+ maven-artifact -+ ${mavenVersion} -+ -+ -+ org.apache.maven -+ maven-core -+ ${mavenVersion} -+ -+ -+ org.apache.maven -+ maven-model -+ ${mavenVersion} -+ -+ -+ org.apache.maven -+ maven-model-builder -+ ${mavenVersion} -+ -+ -+ org.apache.maven -+ maven-plugin-api -+ ${mavenVersion} -+ -+ -+ org.apache.maven.resolver -+ maven-resolver-api -+ ${mavenResolverVersion} -+ -+ -+ org.apache.maven.resolver -+ maven-resolver-util -+ ${mavenResolverVersion} -+ -+ -+ org.apache.maven.plugin-tools -+ maven-plugin-annotations -+ ${pluginToolsVersion} -+ -+ -+ org.codehaus.plexus -+ plexus-classworlds -+ ${plexusClassworldsVersion} -+ -+ -+ org.codehaus.plexus -+ plexus-utils -+ ${plexusUtilsVersion} -+ -+ -+ org.fedoraproject.xmvn -+ xmvn-api -+ ${project.version} -+ -+ -+ org.fedoraproject.xmvn -+ xmvn-core -+ ${project.version} -+ -+ -+ org.fedoraproject.xmvn -+ xmvn-connector -+ ${project.version} -+ -+ -+ org.fedoraproject.xmvn -+ xmvn-install -+ ${project.version} -+ -+ -+ org.fedoraproject.xmvn -+ xmvn-resolve -+ ${project.version} -+ -+ -+ org.fedoraproject.xmvn -+ xmvn-subst -+ ${project.version} -+ -+ -+ org.fedoraproject.xmvn -+ xmvn-it -+ ${project.version} -+ -+ -+ org.junit.jupiter -+ junit-jupiter -+ ${junitVersion} -+ -+ -+ org.xmlunit -+ xmlunit-assertj3 -+ ${xmlunitVersion} -+ -+ -+ org.easymock -+ easymock -+ ${easymockVersion} -+ -+ -+ com.beust -+ jcommander -+ ${jcommanderVersion} -+ -+ -+ org.apache.maven.shared -+ maven-invoker -+ ${mavenInvokerVersion} -+ -+ -+ org.slf4j -+ slf4j-api -+ ${slf4jVersion} -+ -+ -+ org.slf4j -+ slf4j-simple -+ ${slf4jVersion} -+ -+ -+ org.ow2.asm -+ asm -+ ${asmVersion} -+ -+ -+ org.codehaus.plexus -+ plexus-component-annotations -+ ${plexusVersion} -+ -+ -+ org.codehaus.plexus -+ plexus-container-default -+ ${plexusVersion} -+ -+ -+ org.apache.commons -+ commons-compress -+ ${commonsCompressVersion} -+ -+ -+ -+ -+ -+ org.junit.jupiter -+ junit-jupiter -+ test -+ -+ -+ org.xmlunit -+ xmlunit-assertj3 -+ test -+ -+ -+ org.easymock -+ easymock -+ test -+ -+ -+ org.slf4j -+ slf4j-simple -+ test -+ -+ -+ -+ -+ -+ -+ org.codehaus.mojo -+ build-helper-maven-plugin -+ ${buildHelperPluginVersion} -+ -+ -+ maven-compiler-plugin -+ ${compilerPluginVersion} -+ -+ 1.8 -+ 1.8 -+ -+ -+ -+ maven-site-plugin -+ ${sitePluginVersion} -+ -+ -+ maven-dependency-plugin -+ ${dependencyPluginVersion} -+ -+ -+ maven-plugin-plugin -+ ${pluginToolsVersion} -+ -+ -+ org.codehaus.modello -+ modello-maven-plugin -+ ${modelloVersion} -+ -+ -+ maven-assembly-plugin -+ ${assemblyPluginVersion} -+ -+ -+ maven-clean-plugin -+ ${cleanPluginVersion} -+ -+ -+ maven-deploy-plugin -+ ${deployPluginVersion} -+ -+ -+ maven-install-plugin -+ ${installPluginVersion} -+ -+ -+ maven-jar-plugin -+ ${jarPluginVersion} -+ -+ true -+ -+ -+ -+ maven-resources-plugin -+ ${resourcesPluginVersion} -+ -+ -+ maven-surefire-plugin -+ ${surefireVersion} -+ -+ -+ maven-checkstyle-plugin -+ ${checkstylePluginVersion} -+ -+ -+ com.puppycrawl.tools -+ checkstyle -+ ${checkstyleVersion} -+ -+ -+ -+ -+ src/main/java -+ -+ true -+ ../aux/checkstyle.xml -+ ../aux/checkstyle-suppressions.xml -+ ../aux/license-header.txt -+ **/package-info.java -+ false -+ -+ -+ -+ org.apache.rat -+ apache-rat-plugin -+ ${ratPluginVersion} -+ -+ -+ src/test/resources/** -+ -+ -+ -+ -+ maven-javadoc-plugin -+ ${javadocPluginVersion} -+ -+ -+ none -+ -+ -+ -+ maven-source-plugin -+ ${sourcePluginVersion} -+ -+ -+ maven-gpg-plugin -+ ${gpgPluginVersion} -+ -+ -+ org.sonatype.plugins -+ nexus-staging-maven-plugin -+ ${nexusStagingPluginVersion} -+ -+ ossrh -+ https://oss.sonatype.org/ -+ false -+ -+ -+ -+ org.jacoco -+ jacoco-maven-plugin -+ ${jacocoVersion} -+ -+ -+ org.codehaus.plexus -+ plexus-component-metadata -+ ${plexusVersion} -+ -+ -+ -+ generate-metadata -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ quality -+ -+ true -+ -+ -+ -+ -+ maven-checkstyle-plugin -+ -+ -+ checkstyle-check -+ -+ check -+ -+ -+ -+ -+ -+ org.jacoco -+ jacoco-maven-plugin -+ -+ -+ -+ prepare-agent -+ -+ -+ -+ jacoco-report -+ post-integration-test -+ -+ report -+ -+ -+ -+ -+ -+ -+ -+ -+ release -+ -+ -+ -+ maven-assembly-plugin -+ -+ -+ org.apache.apache.resources -+ apache-source-release-assembly-descriptor -+ 1.0.6 -+ -+ -+ -+ -+ source-release-assembly -+ package -+ -+ single -+ -+ -+ true -+ -+ source-release -+ -+ gnu -+ -+ -+ -+ -+ -+ maven-javadoc-plugin -+ -+ -+ attach-javadoc -+ -+ jar -+ -+ -+ -+ -+ -+ maven-source-plugin -+ -+ -+ attach-sources -+ -+ jar-no-fork -+ -+ -+ -+ -+ -+ maven-gpg-plugin -+ -+ -+ sign-artifacts -+ package -+ -+ sign -+ -+ -+ -+ -+ -+ org.sonatype.plugins -+ nexus-staging-maven-plugin -+ true -+ -+ -+ org.apache.rat -+ apache-rat-plugin -+ -+ -+ rat-check -+ -+ check -+ -+ -+ -+ -+ -+ maven-site-plugin -+ -+ true -+ true -+ -+ -+ -+ -+ -+ -+ jdk9+ -+ -+ [9,) -+ -+ -+ -+ -+ maven-compiler-plugin -+ -+ 8 -+ -+ -+ -+ maven-surefire-plugin -+ -+ --add-opens java.base/java.lang=ALL-UNNAMED -+ -+ -+ -+ -+ -+ -+ -diff --git a/test/data/install_pom/xmvn/xmvn-tools/pom.xml b/test/data/install_pom/xmvn/xmvn-tools/pom.xml -new file mode 100644 -index 00000000..43abc443 ---- /dev/null -+++ b/test/data/install_pom/xmvn/xmvn-tools/pom.xml -@@ -0,0 +1,58 @@ -+ -+ -+ -+ 4.0.0 -+ -+ xmvn-parent -+ org.fedoraproject.xmvn -+ 4.0.0 -+ ../xmvn-parent -+ -+ xmvn-tools -+ pom -+ XMvn Tools -+ -+ XMvn Tools is parent POM for all XMvn tools. It holds -+ configuration common to all XMvn tools. -+ -+ -+ xmvn-resolve -+ xmvn-subst -+ xmvn-install -+ -+ -+ -+ -+ -+ maven-jar-plugin -+ ${jarPluginVersion} -+ -+ -+ -+ true -+ ${mainClass} -+ -+ -+ -+ -+ -+ -+ -+ -diff --git a/test/data/install_pom/xmvn/xmvn-tools/xmvn-install/pom.xml b/test/data/install_pom/xmvn/xmvn-tools/xmvn-install/pom.xml -new file mode 100644 -index 00000000..8c423069 ---- /dev/null -+++ b/test/data/install_pom/xmvn/xmvn-tools/xmvn-install/pom.xml -@@ -0,0 +1,69 @@ -+ -+ -+ -+ 4.0.0 -+ -+ org.fedoraproject.xmvn -+ xmvn-tools -+ 4.0.0 -+ -+ xmvn-install -+ XMvn Install -+ -+ XMvn Install is a command-line interface to XMvn installer. The -+ installer reads reactor metadata and performs artifact -+ installation according to specified configuration. -+ -+ -+ org.fedoraproject.xmvn.tools.install.cli.InstallerCli -+ -+ -+ -+ com.beust -+ jcommander -+ -+ -+ org.fedoraproject.xmvn -+ xmvn-api -+ -+ -+ org.fedoraproject.xmvn -+ xmvn-core -+ runtime -+ -+ -+ org.slf4j -+ slf4j-api -+ -+ -+ org.slf4j -+ slf4j-simple -+ runtime -+ -+ -+ org.ow2.asm -+ asm -+ -+ -+ org.apache.commons -+ commons-compress -+ -+ -+ -diff --git a/test/data/install_pom/xmvn/xmvn-tools/xmvn-resolve/pom.xml b/test/data/install_pom/xmvn/xmvn-tools/xmvn-resolve/pom.xml -new file mode 100644 -index 00000000..8cabc13f ---- /dev/null -+++ b/test/data/install_pom/xmvn/xmvn-tools/xmvn-resolve/pom.xml -@@ -0,0 +1,51 @@ -+ -+ -+ 4.0.0 -+ -+ xmvn-tools -+ org.fedoraproject.xmvn -+ 4.0.0 -+ .. -+ -+ xmvn-resolve -+ XMvn Resolver -+ -+ XMvn Resolver is a very simple commald-line tool to resolve Maven -+ artifacts from system repositories. Basically it's just an -+ interface to artifact resolution mechanism implemented by XMvn -+ Core. The primary intended use case of XMvn Resolver is debugging -+ local artifact repositories. -+ -+ -+ org.fedoraproject.xmvn.tools.resolve.ResolverCli -+ -+ -+ -+ com.beust -+ jcommander -+ any -+ -+ org.fedoraproject.xmvn -+ xmvn-api -+ any -+ -+ org.fedoraproject.xmvn -+ xmvn-core -+ runtime -+ any -+ -+ -diff --git a/test/data/maven_depmap/JPP-depmngmnt.pom b/test/data/maven_depmap/JPP-depmngmnt.pom -new file mode 100644 -index 00000000..ec86bb3d ---- /dev/null -+++ b/test/data/maven_depmap/JPP-depmngmnt.pom -@@ -0,0 +1,33 @@ -+ -+ -+ 4.0.0 -+ org.fedoraproject.xmvn -+ 4.0.0 -+ xmvn-subst -+ XMvn Subst -+ -+ XMvn Subst is a tool that can substitute Maven artifact files with -+ symbolic links to corresponding files in artifact repository. -+ -+ -+ 1.82 -+ -+ -+ -+ -+ com.beust -+ jcommander -+ ${jcommanderVersion} -+ -+ -+ -+ -+ -+ com.beust -+ jcommander -+ -+ -+ -diff --git a/test/data/maven_depmap/JPP-modelexpansion.pom b/test/data/maven_depmap/JPP-modelexpansion.pom -new file mode 100644 -index 00000000..3feced96 ---- /dev/null -+++ b/test/data/maven_depmap/JPP-modelexpansion.pom -@@ -0,0 +1,33 @@ -+ -+ -+ 4.0.0 -+ org.fedoraproject.xmvn -+ 4.0.0 -+ xmvn-subst -+ XMvn Subst -+ -+ XMvn Subst is a tool that can substitute Maven artifact files with -+ symbolic links to corresponding files in artifact repository. -+ -+ -+ 1.82 -+ -+ -+ -+ -+ org.fedoraproject.xmvn -+ xmvn-api -+ ${project.version} -+ -+ -+ -+ -+ -+ org.fedoraproject.xmvn -+ xmvn-api -+ -+ -+ -diff --git a/test/data/maven_depmap/test_alias_extension-want.xml b/test/data/maven_depmap/test_alias_extension-want.xml -index 6b0d1aee..d502fdf8 100644 ---- a/test/data/maven_depmap/test_alias_extension-want.xml -+++ b/test/data/maven_depmap/test_alias_extension-want.xml -@@ -13,9 +13,6 @@ - - - %s/usr/share/java/commons-io.jar -- -- true -- - - - alias -@@ -30,9 +27,6 @@ - - - %s/JPP-alias.pom -- -- true -- - - - -diff --git a/test/data/maven_depmap/test_append-want.xml b/test/data/maven_depmap/test_append-want.xml -index 65d420e6..0ca20911 100644 ---- a/test/data/maven_depmap/test_append-want.xml -+++ b/test/data/maven_depmap/test_append-want.xml -@@ -12,9 +12,6 @@ - y - - -- -- true -- - - - -diff --git a/test/data/maven_depmap/test_append_and_namespace-want.xml b/test/data/maven_depmap/test_append_and_namespace-want.xml -index 88b1f816..368863bf 100644 ---- a/test/data/maven_depmap/test_append_and_namespace-want.xml -+++ b/test/data/maven_depmap/test_append_and_namespace-want.xml -@@ -13,9 +13,6 @@ - y - - -- -- true -- - - - -diff --git a/test/data/maven_depmap/test_basic-want.xml b/test/data/maven_depmap/test_basic-want.xml -index 540f076a..200044bf 100644 ---- a/test/data/maven_depmap/test_basic-want.xml -+++ b/test/data/maven_depmap/test_basic-want.xml -@@ -6,9 +6,6 @@ - bndlib - 1.50.0 - %s/usr/share/java/bndlib.jar -- -- true -- - - - biz.aQute -@@ -16,9 +13,6 @@ - pom - 1.50.0 - %s/JPP-bndlib.pom -- -- true -- - - - -diff --git a/test/data/maven_depmap/test_buildroot-want.xml b/test/data/maven_depmap/test_buildroot-want.xml -index 604046a5..9fa588d4 100644 ---- a/test/data/maven_depmap/test_buildroot-want.xml -+++ b/test/data/maven_depmap/test_buildroot-want.xml -@@ -7,9 +7,6 @@ - 17 - war - %s/usr/share/java/commons-war.war -- -- true -- - - - commons -@@ -17,9 +14,6 @@ - 17 - pom - /usr/share/maven-poms/JPP-commons-war.pom -- -- true -- - - - -diff --git a/test/data/maven_depmap/test_classifier-want.xml b/test/data/maven_depmap/test_classifier-want.xml -index 6a6f74ae..8fa90b01 100644 ---- a/test/data/maven_depmap/test_classifier-want.xml -+++ b/test/data/maven_depmap/test_classifier-want.xml -@@ -14,9 +14,6 @@ - c - - -- -- true -- - - - -diff --git a/test/data/maven_depmap/test_expansion-want.xml b/test/data/maven_depmap/test_expansion-want.xml -new file mode 100644 -index 00000000..10c34449 ---- /dev/null -+++ b/test/data/maven_depmap/test_expansion-want.xml -@@ -0,0 +1,35 @@ -+ -+ -+ -+ org.fedoraproject.xmvn -+ xmvn-subst -+ 4.0.0 -+ %s/usr/share/java/depmngmnt.jar -+ -+ -+ com.beust -+ jcommander -+ jar -+ false -+ 1.82 -+ -+ -+ -+ -+ org.fedoraproject.xmvn -+ xmvn-subst -+ pom -+ 4.0.0 -+ %s/JPP-depmngmnt.pom -+ -+ -+ com.beust -+ jcommander -+ jar -+ false -+ 1.82 -+ -+ -+ -+ -+ -diff --git a/test/data/maven_depmap/test_expansion_model-want.xml b/test/data/maven_depmap/test_expansion_model-want.xml -new file mode 100644 -index 00000000..6237358c ---- /dev/null -+++ b/test/data/maven_depmap/test_expansion_model-want.xml -@@ -0,0 +1,35 @@ -+ -+ -+ -+ org.fedoraproject.xmvn -+ xmvn-subst -+ 4.0.0 -+ %s/usr/share/java/depmngmnt.jar -+ -+ -+ org.fedoraproject.xmvn -+ xmvn-api -+ jar -+ false -+ 4.0.0 -+ -+ -+ -+ -+ org.fedoraproject.xmvn -+ xmvn-subst -+ pom -+ 4.0.0 -+ %s/JPP-modelexpansion.pom -+ -+ -+ org.fedoraproject.xmvn -+ xmvn-api -+ jar -+ false -+ 4.0.0 -+ -+ -+ -+ -+ -diff --git a/test/data/maven_depmap/test_mvn_spec-want.xml b/test/data/maven_depmap/test_mvn_spec-want.xml -index d2c03ec7..dd49eb83 100644 ---- a/test/data/maven_depmap/test_mvn_spec-want.xml -+++ b/test/data/maven_depmap/test_mvn_spec-want.xml -@@ -6,9 +6,6 @@ - b - 12 - %s/usr/share/java/commons-io.jar -- -- true -- - - - -diff --git a/test/data/maven_depmap/test_mvn_spec_buildroot-want.xml b/test/data/maven_depmap/test_mvn_spec_buildroot-want.xml -index 0f7dcd5f..0efeddb8 100644 ---- a/test/data/maven_depmap/test_mvn_spec_buildroot-want.xml -+++ b/test/data/maven_depmap/test_mvn_spec_buildroot-want.xml -@@ -7,9 +7,6 @@ - 1 - war - %s/usr/share/java/commons-war.war -- -- true -- - - - -diff --git a/test/data/maven_depmap/test_mvn_spec_war-want.xml b/test/data/maven_depmap/test_mvn_spec_war-want.xml -index deae16ff..1dde1a95 100644 ---- a/test/data/maven_depmap/test_mvn_spec_war-want.xml -+++ b/test/data/maven_depmap/test_mvn_spec_war-want.xml -@@ -7,9 +7,6 @@ - war - 1 - %s/usr/share/java/commons-war.war -- -- true -- - - - -diff --git a/test/data/maven_depmap/test_namespace-want.xml b/test/data/maven_depmap/test_namespace-want.xml -index da36a475..adf5b2cc 100644 ---- a/test/data/maven_depmap/test_namespace-want.xml -+++ b/test/data/maven_depmap/test_namespace-want.xml -@@ -7,9 +7,6 @@ - 12 - %s/usr/share/java/commons-io.jar - myns -- -- true -- - - - -diff --git a/test/data/maven_depmap/test_version-want.xml b/test/data/maven_depmap/test_version-want.xml -index 06e02bc8..297d0ca9 100644 ---- a/test/data/maven_depmap/test_version-want.xml -+++ b/test/data/maven_depmap/test_version-want.xml -@@ -11,9 +11,6 @@ - 2 - 3 - -- -- true -- - - - -diff --git a/test/data/maven_depmap/test_version_append-want.xml b/test/data/maven_depmap/test_version_append-want.xml -index 33e688cd..028ad54f 100644 ---- a/test/data/maven_depmap/test_version_append-want.xml -+++ b/test/data/maven_depmap/test_version_append-want.xml -@@ -17,9 +17,6 @@ - b - - -- -- true -- - - - -diff --git a/test/data/maven_depmap/test_version_namespace-want.xml b/test/data/maven_depmap/test_version_namespace-want.xml -index 65e331a5..958725d2 100644 ---- a/test/data/maven_depmap/test_version_namespace-want.xml -+++ b/test/data/maven_depmap/test_version_namespace-want.xml -@@ -18,9 +18,6 @@ - b - - -- -- true -- - - - -diff --git a/test/data/maven_depmap/test_versioned-want.xml b/test/data/maven_depmap/test_versioned-want.xml -index 8885ff1a..981ba85c 100644 ---- a/test/data/maven_depmap/test_versioned-want.xml -+++ b/test/data/maven_depmap/test_versioned-want.xml -@@ -10,9 +10,6 @@ - 2.0.0 - - %s/usr/share/java/versioned-2.0.0.war -- -- true -- - - - -diff --git a/test/data/maven_depmap/test_versioned2-want.xml b/test/data/maven_depmap/test_versioned2-want.xml -index ea1b24cf..e94fed23 100644 ---- a/test/data/maven_depmap/test_versioned2-want.xml -+++ b/test/data/maven_depmap/test_versioned2-want.xml -@@ -9,9 +9,6 @@ - 1.2 - - %s/usr/share/java/versioned2-1.2.jar -- -- true -- - - - -diff --git a/test/data/maven_depmap/test_versioned_classifier-want.xml b/test/data/maven_depmap/test_versioned_classifier-want.xml -index c3891caa..d2aca331 100644 ---- a/test/data/maven_depmap/test_versioned_classifier-want.xml -+++ b/test/data/maven_depmap/test_versioned_classifier-want.xml -@@ -11,9 +11,6 @@ - 1.2 - - %s/usr/share/java/versioned-3-tests-1.jar -- -- true -- - - - -diff --git a/test/data/maven_depmap/test_versioned_with_pom-want.xml b/test/data/maven_depmap/test_versioned_with_pom-want.xml -index c2b344e1..8d259ab9 100644 ---- a/test/data/maven_depmap/test_versioned_with_pom-want.xml -+++ b/test/data/maven_depmap/test_versioned_with_pom-want.xml -@@ -9,9 +9,6 @@ - 2013.10 - - %s/usr/share/java/testversioned-2013.10.jar -- -- true -- - - - alias -@@ -22,9 +19,6 @@ - 2013.10 - - %s/JPP-testversioned-2013.10.pom -- -- true -- - - - -diff --git a/test/data/maven_depmap/test_war-want.xml b/test/data/maven_depmap/test_war-want.xml -index cac27a84..e8e2e56b 100644 ---- a/test/data/maven_depmap/test_war-want.xml -+++ b/test/data/maven_depmap/test_war-want.xml -@@ -7,9 +7,6 @@ - 17 - war - %s/usr/share/java/commons-war.war -- -- true -- - - - commons -@@ -17,9 +14,6 @@ - pom - 17 - %s/JPP-commons-war.pom -- -- true -- - - - -diff --git a/test/data/maven_depmap/usr/share/java/depmngmnt.jar b/test/data/maven_depmap/usr/share/java/depmngmnt.jar -new file mode 100644 -index 00000000..db960407 -Binary files /dev/null and b/test/data/maven_depmap/usr/share/java/depmngmnt.jar differ -diff --git a/test/install_pom_test.py b/test/install_pom_test.py -new file mode 100644 -index 00000000..c6acc644 ---- /dev/null -+++ b/test/install_pom_test.py -@@ -0,0 +1,166 @@ -+import inspect -+import os -+import unittest -+import shutil -+ -+from test_common import (DIRPATH, install_pom, call_script, assertIn) -+ -+from lxml import etree -+from xml_compare import compare_lxml_etree -+ -+ -+class TestInstallPom(unittest.TestCase): -+ -+ maxDiff = 2048 -+ -+ def setUp(self): -+ try: -+ self.olddir = os.getcwd() -+ self.datadir = os.path.join(DIRPATH, -+ 'data', -+ 'install_pom') -+ self.workdir = os.path.realpath(os.path.join(self.datadir, "..", -+ "install_pom_workdir")) -+ -+ shutil.copytree(self.datadir, self.workdir) -+ os.chdir(self.workdir) -+ except OSError: -+ pass -+ -+ def tearDown(self): -+ try: -+ shutil.rmtree(self.workdir) -+ os.chdir(self.olddir) -+ except OSError: -+ pass -+ -+ def check_result(self, test_name, result): -+ got = etree.parse(result).getroot() -+ want = etree.parse(os.path.join(self.workdir, -+ test_name+"-want.xml")).getroot() -+ report = compare_lxml_etree(got, want) -+ if report: -+ report = '\n' + report -+ return report -+ -+ @install_pom('JPP-bndlib.pom') -+ def test_basic(self, stdout, stderr, return_value, result): -+ self.assertEqual(return_value, 0) -+ report = self.check_result(inspect.currentframe().f_code.co_name, -+ result) -+ self.assertEqual(report, '', report) -+ -+ @install_pom('JPP-apache-commons-io.pom') -+ def test_packaging_pom(self, stdout, stderr, return_value, result): -+ self.assertEqual(return_value, 0, stderr) -+ report = self.check_result(inspect.currentframe().f_code.co_name, -+ result) -+ self.assertEqual(report, '', report) -+ -+ @install_pom('JPP-noversion.pom') -+ def test_missing_version(self, stdout, stderr, return_value, result): -+ self.assertNotEqual(return_value, 0) -+ -+ @install_pom('JPP-noversion-pom.pom') -+ def test_packaging_pom_missing_version(self, stdout, stderr, return_value, result): -+ self.assertEqual(return_value, 0, stderr) -+ report = self.check_result(inspect.currentframe().f_code.co_name, -+ result) -+ self.assertEqual(report, '', report) -+ -+ @install_pom('JPP-parent-version.pom') -+ def test_parent_version(self, stdout, stderr, return_value, result): -+ self.assertEqual(return_value, 0, stderr) -+ report = self.check_result(inspect.currentframe().f_code.co_name, -+ result) -+ self.assertEqual(report, '', report) -+ -+ @install_pom(os.path.join('cglib', 'pom.xml')) -+ def test_parent_install(self, stdout, stderr, return_value, result): -+ self.assertEqual(return_value, 0, stderr) -+ report = self.check_result(inspect.currentframe().f_code.co_name, -+ result) -+ self.assertEqual(report, '', report) -+ -+ @install_pom(os.path.join('cglib', 'cglib', 'pom.xml')) -+ def test_interpolate_from_parent(self, stdout, stderr, return_value, result): -+ self.assertEqual(return_value, 0, stderr) -+ report = self.check_result(inspect.currentframe().f_code.co_name, -+ result) -+ self.assertEqual(report, '', report) -+ -+ @install_pom(os.path.join('cglib', 'cglib-integration-test', 'pom.xml')) -+ def test_interpolate_from_model(self, stdout, stderr, return_value, result): -+ self.assertEqual(return_value, 0, stderr) -+ report = self.check_result(inspect.currentframe().f_code.co_name, -+ result) -+ self.assertEqual(report, '', report) -+ -+ @install_pom(os.path.join('xmvn', 'xmvn-mojo', 'pom.xml')) -+ def test_parent_relpath(self, stdout, stderr, return_value, result): -+ self.assertEqual(return_value, 0, stderr) -+ report = self.check_result(inspect.currentframe().f_code.co_name, -+ result) -+ self.assertEqual(report, '', report) -+ -+ @install_pom(os.path.join('xmvn', 'xmvn-tools', 'xmvn-install', 'pom.xml')) -+ def test_parent_chain(self, stdout, stderr, return_value, result): -+ self.assertEqual(return_value, 0, stderr) -+ report = self.check_result(inspect.currentframe().f_code.co_name, -+ result) -+ self.assertEqual(report, '', report) -+ -+ @install_pom(os.path.join('xmvn', 'xmvn-tools', 'xmvn-resolve', 'pom.xml')) -+ def test_any_not_final(self, stdout, stderr, return_value, result): -+ self.assertEqual(return_value, 0, stderr) -+ report = self.check_result(inspect.currentframe().f_code.co_name, -+ result) -+ self.assertEqual(report, '', report) -+ -+ @install_pom(os.path.join('languagetool', 'languagetool-standalone', 'pom.xml')) -+ def test_dep_type(self, stdout, stderr, return_value, result): -+ self.assertEqual(return_value, 0, stderr) -+ report = self.check_result(inspect.currentframe().f_code.co_name, -+ result) -+ self.assertEqual(report, '', report) -+ -+ @install_pom(os.path.join('languagetool', 'languagetool-language-modules', 'ja', 'pom.xml')) -+ def test_dep_classifier(self, stdout, stderr, return_value, result): -+ self.assertEqual(return_value, 0, stderr) -+ report = self.check_result(inspect.currentframe().f_code.co_name, -+ result) -+ self.assertEqual(report, '', report) -+ -+ @install_pom('a_binary_file.pom') -+ def test_not_pom(self, stdout, stderr, return_value, result): -+ self.assertNotEqual(return_value, 0) -+ -+ @install_pom('a_file_that_does_not_exist.pom') -+ def test_no_pom(self, stdout, stderr, return_value, result): -+ self.assertNotEqual(return_value, 0) -+ -+ def test_no_args(self): -+ stdout, stderr, return_value = call_script(os.path.join(DIRPATH, '..', -+ 'java-utils', 'install_pom.py'), []) -+ self.assertNotEqual(return_value, 0) -+ -+ def test_no_directory(self): -+ stdout, stderr, return_value = call_script(os.path.join(DIRPATH, '..', -+ 'java-utils', 'install_pom.py'), -+ ['JPP-bndlib.pom', os.path.join('missingdir', 'JPP-bndlib.pom')]) -+ self.assertNotEqual(return_value, 0) -+ -+ def test_not_directory(self): -+ stdout, stderr, return_value = call_script(os.path.join(DIRPATH, '..', -+ 'java-utils', 'install_pom.py'), -+ ['JPP-bndlib.pom', os.path.join('fakedir', 'JPP-bndlib.pom')]) -+ self.assertNotEqual(return_value, 0) -+ -+ def test_no_overwrite(self): -+ stdout, stderr, return_value = call_script(os.path.join(DIRPATH, '..', -+ 'java-utils', 'install_pom.py'), -+ ['JPP-bndlib.pom', 'fakedir']) -+ self.assertNotEqual(return_value, 0) -+ -+if __name__ == '__main__': -+ unittest.main() -diff --git a/test/maven_depmap_test.py b/test/maven_depmap_test.py -new file mode 100644 -index 00000000..41b2c014 ---- /dev/null -+++ b/test/maven_depmap_test.py -@@ -0,0 +1,354 @@ -+import inspect -+from zipfile import ZipFile -+import os -+import unittest -+import shutil -+from test_common import (DIRPATH, mvn_depmap, call_script, -+ prepare_metadata, assertIn) -+from test_rpmbuild import Package -+ -+from lxml import etree -+from xml_compare import compare_lxml_etree -+ -+ -+class TestMavenDepmap(unittest.TestCase): -+ -+ maxDiff = 2048 -+ -+ def setUp(self): -+ try: -+ self.olddir = os.getcwd() -+ self.datadir = os.path.join(DIRPATH, -+ 'data', -+ 'maven_depmap') -+ self.workdir = os.path.realpath(os.path.join(self.datadir, "..", -+ "maven_depmap_workdir")) -+ -+ shutil.copytree(self.datadir, self.workdir) -+ os.chdir(self.workdir) -+ except OSError: -+ pass -+ -+ prepare_metadata(self.workdir) -+ -+ def tearDown(self): -+ try: -+ shutil.rmtree(self.workdir) -+ os.chdir(self.olddir) -+ except OSError: -+ pass -+ -+ def check_result(self, test_name, depmap): -+ got = etree.fromstring(depmap) -+ want = etree.parse(os.path.join(self.workdir, -+ test_name+"-want.xml")).getroot() -+ report = compare_lxml_etree(got, want, unordered=['artifact', 'maven']) -+ if report: -+ report = '\n' + report -+ return report -+ -+ def check_archive(self, test_name, archive_path, keep_comments=False): -+ got = ZipFile(archive_path, 'r') -+ want = ZipFile('{name}-want.{ext}'.format(name=test_name, -+ ext=archive_path.split('.')[-1])) -+ try: -+ if got.testzip() is not None: -+ return ("Not valid zip file", "") -+ got_mf = self.read_archive(got, keep_comments) -+ want_mf = self.read_archive(want, keep_comments) -+ finally: -+ got.close() -+ want.close() -+ return (got_mf, want_mf) -+ -+ def read_archive(self, archive, keep_comments=False): -+ res = {} -+ for filename in archive.namelist(): -+ mf_file = archive.open(filename) -+ try: -+ if (keep_comments): -+ res[str(filename)] = mf_file.readlines() -+ else: -+ res[str(filename)] = \ -+ [line for line in mf_file.readlines() -+ if not line.startswith(b'#')] -+ finally: -+ mf_file.close() -+ return res -+ -+ @mvn_depmap('JPP-bndlib.pom', 'usr/share/java/bndlib.jar') -+ def test_basic(self, stdout, stderr, return_value, depmap): -+ self.assertEqual(return_value, 0) -+ report = self.check_result(inspect.currentframe().f_code.co_name, -+ depmap) -+ self.assertEqual(report, '', report) -+ -+ @mvn_depmap('JPP-commons-io.pom') -+ def test_missing_jar_arg(self, stdout, stderr, return_value, depmap): -+ self.assertNotEqual(return_value, 0) -+ -+ @mvn_depmap('JPP-apache-commons-io.pom') -+ def test_packaging_pom_no_jar(self, stdout, stderr, return_value, depmap): -+ self.assertEqual(return_value, 0, stderr) -+ report = self.check_result(inspect.currentframe().f_code.co_name, -+ depmap) -+ self.assertEqual(report, '', report) -+ -+ @mvn_depmap('JPP-noversion.pom') -+ def test_missing_version(self, stdout, stderr, return_value, depmap): -+ self.assertNotEqual(return_value, 0) -+ -+ @mvn_depmap('JPP-parent-version.pom') -+ def test_parent_version(self, stdout, stderr, return_value, depmap): -+ self.assertEqual(return_value, 0, stderr) -+ report = self.check_result(inspect.currentframe().f_code.co_name, -+ depmap) -+ self.assertEqual(report, '', report) -+ -+ @mvn_depmap('JPP-commons-war.pom', 'usr/share/java/commons-war.war') -+ def test_war(self, stdout, stderr, return_value, depmap): -+ self.assertEqual(return_value, 0, stderr) -+ report = self.check_result(inspect.currentframe().f_code.co_name, -+ depmap) -+ self.assertEqual(report, '', report) -+ -+ def test_not_pom(self): -+ stdout, stderr, return_value = call_script(os.path.join(DIRPATH, '..', -+ 'java-utils', 'maven_depmap.py'), -+ ['.out', 'usr/share/java/commons-io.jar', -+ 'usr/share/java/commons-io.jar']) -+ self.assertNotEqual(return_value, 0) -+ -+ def test_no_pom(self): -+ stdout, stderr, return_value = call_script(os.path.join(DIRPATH, '..', -+ 'java-utils', 'maven_depmap.py'), -+ ['.out']) -+ self.assertNotEqual(return_value, 0) -+ -+ def test_no_args(self): -+ stdout, stderr, return_value = call_script(os.path.join(DIRPATH, '..', -+ 'java-utils', 'maven_depmap.py'), -+ []) -+ self.assertNotEqual(return_value, 0) -+ -+ @mvn_depmap('a:b:12', 'usr/share/java/commons-io.jar') -+ def test_mvn_spec(self, stdout, stderr, return_value, depmap): -+ self.assertEqual(return_value, 0, stderr) -+ report = self.check_result(inspect.currentframe().f_code.co_name, -+ depmap) -+ self.assertEqual(report, '', report) -+ -+ @mvn_depmap('a:b:war::1', 'usr/share/java/commons-war.war') -+ def test_mvn_spec_war(self, stdout, stderr, return_value, depmap): -+ self.assertEqual(return_value, 0, stderr) -+ report = self.check_result(inspect.currentframe().f_code.co_name, -+ depmap) -+ self.assertEqual(report, '', report) -+ -+ @mvn_depmap('/builddir/build/BUILDROOT/pkg-2.5.2-2.fc21.x86_64/a:b:war::1', -+ 'usr/share/java/commons-war.war') -+ def test_mvn_spec_buildroot(self, stdout, stderr, return_value, depmap): -+ self.assertEqual(return_value, 0, stderr) -+ report = self.check_result(inspect.currentframe().f_code.co_name, -+ depmap) -+ self.assertEqual(report, '', report) -+ -+ @mvn_depmap('builddir/build/BUILDROOT/usr/share/maven-poms/JPP-commons-war.pom', -+ 'usr/share/java/commons-war.war') -+ def test_buildroot(self, stdout, stderr, return_value, depmap): -+ self.assertEqual(return_value, 0, stderr) -+ report = self.check_result(inspect.currentframe().f_code.co_name, -+ depmap) -+ self.assertEqual(report, '', report) -+ -+ @mvn_depmap('a:b:12', 'usr/share/java/commons-io.jar', ['-a', 'x:y']) -+ def test_append(self, stdout, stderr, return_value, depmap): -+ self.assertEqual(return_value, 0, stderr) -+ report = self.check_result(inspect.currentframe().f_code.co_name, -+ depmap) -+ self.assertEqual(report, '', report) -+ -+ # FIXME: aliases cause trouble -+ #@mvn_depmap('a:b:12', 'usr/share/java/commons-io.jar', ['-a', 'x:y,z:w']) -+ #def test_append_multiple(self, stdout, stderr, return_value, depmap): -+ # self.assertEqual(return_value, 0, stderr) -+ # report = self.check_result(inspect.currentframe().f_code.co_name, -+ # depmap) -+ # self.assertEqual(report, '', report) -+ -+ @mvn_depmap('a:b:12', 'usr/share/java/commons-io.jar', ['-n', 'myns']) -+ def test_namespace(self, stdout, stderr, return_value, depmap): -+ self.assertEqual(return_value, 0, stderr) -+ report = self.check_result(inspect.currentframe().f_code.co_name, -+ depmap) -+ self.assertEqual(report, '', report) -+ -+ @mvn_depmap('a:b:12', 'usr/share/java/commons-io.jar', ['--namespace=myns', -+ '--append=x:y']) -+ def test_append_and_namespace(self, stdout, stderr, return_value, depmap): -+ self.assertEqual(return_value, 0, stderr) -+ report = self.check_result(inspect.currentframe().f_code.co_name, -+ depmap) -+ self.assertEqual(report, '', report) -+ -+ @mvn_depmap('a:b:12', 'usr/foo/share/java/compare_jar.jar') -+ def test_compare_jar(self, stdout, stderr, return_value, depmap): -+ self.assertEqual(return_value, 0, stderr) -+ got, want = self.check_archive(inspect.currentframe().f_code.co_name, -+ 'usr/foo/share/java/compare_jar.jar') -+ self.assertEqual(got, want) -+ -+ #test case for rhbz#1012982 -+ @mvn_depmap('x:y:war:z:0.1', 'usr/foo/share/java/compare_jar_class_ext.war') -+ def test_compare_jar_class_ext(self, stdout, stderr, return_value, depmap): -+ self.assertEqual(return_value, 0, stderr) -+ got, want = self.check_archive(inspect.currentframe().f_code.co_name, -+ 'usr/foo/share/java/compare_jar_class_ext.war') -+ self.assertEqual(got, want) -+ -+ @mvn_depmap('a:b:12', 'usr/share/java/already-has-pom-properties.jar') -+ def test_compare_jar_unmodified(self, stdout, stderr, return_value, depmap): -+ self.assertEqual(return_value, 0, stderr) -+ got, want = self.check_archive(inspect.currentframe().f_code.co_name, -+ 'usr/share/java/already-has-pom-properties.jar', keep_comments=True) -+ self.assertEqual(got, want) -+ -+ @mvn_depmap('x:y:0.1', 'usr/share/java/already-has-pom-properties.jar') -+ def test_compare_jar_modified(self, stdout, stderr, return_value, depmap): -+ self.assertEqual(return_value, 0, stderr) -+ got, want = self.check_archive(inspect.currentframe().f_code.co_name, -+ 'usr/share/java/already-has-pom-properties.jar') -+ self.assertEqual(got, want) -+ -+ @mvn_depmap('/builddir/build/BUILDROOT/pkg-2.5.2-2.fc21.x86_64/x:y:0.1', -+ 'usr/share/java/already-has-pom-properties.jar') -+ def test_rhbz1012245(self, stdout, stderr, return_value, depmap): -+ self.assertEqual(return_value, 0, stderr) -+ got, want = self.check_archive('test_compare_jar_modified', -+ 'usr/share/java/already-has-pom-properties.jar') -+ self.assertEqual(got, want) -+ -+ @mvn_depmap('x:y:jar:z:0.1', 'usr/share/java/commons-io-z.jar', -+ ['-a', 'a:b:jar:c:12']) -+ def test_classifier(self, stdout, stderr, return_value, depmap): -+ self.assertEqual(return_value, 0, stderr) -+ report = self.check_result(inspect.currentframe().f_code.co_name, -+ depmap) -+ self.assertEqual(report, '', report) -+ -+ @mvn_depmap('x:y:0.1', 'usr/share/java/commons-io.jar', ['-r', '1,2,3']) -+ def test_version(self, stdout, stderr, return_value, depmap): -+ self.assertEqual(return_value, 0, stderr) -+ report = self.check_result(inspect.currentframe().f_code.co_name, -+ depmap) -+ self.assertEqual(report, '', report) -+ -+ @mvn_depmap('JPP/x:y:0.1', 'usr/share/java/commons-io.jar', -+ ['--versions', '1,2,3']) -+ def test_version2(self, stdout, stderr, return_value, depmap): -+ self.assertEqual(return_value, 0, stderr) -+ report = self.check_result('test_version', depmap) -+ self.assertEqual(report, '', report) -+ -+ @mvn_depmap('x:y:0.1', 'usr/share/java/commons-io.jar', -+ ['-r', '1,2,3', '-a', 'a:b:32']) -+ def test_version_append(self, stdout, stderr, return_value, depmap): -+ self.assertEqual(return_value, 0, stderr) -+ report = self.check_result(inspect.currentframe().f_code.co_name, -+ depmap) -+ self.assertEqual(report, '', report) -+ -+ @mvn_depmap('x:y:0.1', 'usr/share/java/commons-io.jar', -+ ['-r', '1,2,3', '-n', 'ns', '-a', 'a:b:32']) -+ def test_version_namespace(self, stdout, stderr, return_value, depmap): -+ self.assertEqual(return_value, 0, stderr) -+ report = self.check_result(inspect.currentframe().f_code.co_name, -+ depmap) -+ self.assertEqual(report, '', report) -+ -+ @mvn_depmap('x:y', 'usr/share/java/commons-io.jar') -+ def test_missing_version2(self, stdout, stderr, return_value, depmap): -+ self.assertNotEqual(return_value, 0) -+ -+ @mvn_depmap('x:y:war:1', 'usr/share/java/commons-io.jar') -+ def test_incorrect_extension(self, stdout, stderr, return_value, depmap): -+ self.assertNotEqual(return_value, 0) -+ -+ @mvn_depmap('evil:', 'usr/share/java/commons-io.jar') -+ def test_incorrect_artifact(self, stdout, stderr, return_value, depmap): -+ self.assertNotEqual(return_value, 0) -+ -+ @mvn_depmap('JPP-cdata.pom') -+ def test_cdata(self, stdout, stderr, return_value, depmap): -+ self.assertEqual(return_value, 0, stderr) -+ report = self.check_result(inspect.currentframe().f_code.co_name, -+ depmap) -+ self.assertEqual(report, '', report) -+ -+ @mvn_depmap('g:a:war:1.2.3', 'usr/share/java/versioned.war', ['-r', '2.0.0']) -+ def test_versioned(self, stdout, stderr, return_value, depmap): -+ self.assertEqual(return_value, 0, stderr) -+ report = self.check_result(inspect.currentframe().f_code.co_name, -+ depmap) -+ self.assertEqual(report, '', report) -+ self.assertEqual(False, os.path.exists('usr/share/java/versioned.war')) -+ self.assertEqual(True, os.path.exists('usr/share/java/versioned-2.0.0.war')) -+ -+ @mvn_depmap('g:a:1.2', 'usr/share/java/versioned2.jar', ['-r', '1.2']) -+ def test_versioned2(self, stdout, stderr, return_value, depmap): -+ self.assertEqual(return_value, 0, stderr) -+ report = self.check_result(inspect.currentframe().f_code.co_name, -+ depmap) -+ self.assertEqual(report, '', report) -+ self.assertEqual(False, os.path.exists('usr/share/java/versioned2.jar')) -+ self.assertEqual(True, os.path.exists('usr/share/java/versioned2-1.2.jar')) -+ -+ @mvn_depmap('g:a:jar:tests:1', 'usr/share/java/versioned-3-tests.jar', ['-r', '1,1.2']) -+ def test_versioned_classifier(self, stdout, stderr, return_value, depmap): -+ self.assertEqual(return_value, 0, stderr) -+ report = self.check_result(inspect.currentframe().f_code.co_name, -+ depmap) -+ self.assertEqual(report, '', report) -+ self.assertEqual(False, os.path.exists('usr/share/java/versioned-3-tests.jar')) -+ self.assertEqual(True, os.path.exists('usr/share/java/versioned-3-tests-1.jar')) -+ self.assertEqual(True, os.path.exists('usr/share/java/versioned-3-tests-1.2.jar')) -+ -+ @mvn_depmap('JPP-testversioned.pom', 'usr/share/java/testversioned.jar', ['-r', '2013.10']) -+ def test_versioned_with_pom(self, stdout, stderr, return_value, depmap): -+ self.assertEqual(return_value, 0, stderr) -+ report = self.check_result(inspect.currentframe().f_code.co_name, -+ depmap) -+ self.assertEqual(report, '', report) -+ self.assertEqual(False, os.path.exists('usr/share/java/testversioned.jar')) -+ self.assertEqual(True, os.path.exists('usr/share/java/testversioned-2013.10.jar')) -+ -+ @mvn_depmap('JPP-alias.pom', 'usr/share/java/commons-io.jar', ['-a', 'a:b']) -+ def test_alias_extension(self, stdout, stderr, return_value, depmap): -+ self.assertEqual(return_value, 0, stderr) -+ report = self.check_result(inspect.currentframe().f_code.co_name, -+ depmap) -+ self.assertEqual(report, '', report) -+ -+ @mvn_depmap('JPP-depmngmnt.pom', 'usr/share/java/depmngmnt.jar') -+ def test_expansion(self, stdout, stderr, return_value, depmap): -+ self.assertEqual(return_value, 0, stderr) -+ report = self.check_result(inspect.currentframe().f_code.co_name, -+ depmap) -+ self.assertEqual(report, '', report) -+ -+ @mvn_depmap('JPP-modelexpansion.pom', 'usr/share/java/depmngmnt.jar') -+ def test_expansion_model(self, stdout, stderr, return_value, depmap): -+ self.assertEqual(return_value, 0, stderr) -+ report = self.check_result(inspect.currentframe().f_code.co_name, -+ depmap) -+ self.assertEqual(report, '', report) -+ -+ def test_missing_jar(self): -+ p = Package('test') -+ p.append_to_prep("%add_maven_depmap g:a:1 this/file/doesnt/exist.jar") -+ _, stderr, return_value = p.run_prep() -+ self.assertEqual(1, return_value, 'bad return value') -+ assertIn(self, 'file not found', stderr) -+ -+if __name__ == '__main__': -+ unittest.main() -diff --git a/test/test_common.py b/test/test_common.py -index d694046a..d3b699f2 100644 ---- a/test/test_common.py -+++ b/test/test_common.py -@@ -266,6 +266,47 @@ def rpmgen_process_args(args, kwargs): - return args, kwargs - - -+def install_pom(pom): -+ def test_decorator(fun): -+ @wraps(fun) -+ def test_decorated(self): -+ os.chdir(self.workdir) -+ buildroot = os.path.join(self.workdir, "builddir/build/BUILDROOT") -+ env = {'RPM_BUILD_ROOT': buildroot} -+ scriptpath = path.join(DIRPATH, '..', 'java-utils', 'install_pom.py') -+ args = [pom, '.result_file'] -+ (stdout, stderr, return_value) = call_script(scriptpath, args, extra_env=env) -+ res_file = None -+ if return_value == 0: -+ res_file = open('.result_file','r') -+ fun(self, stdout, stderr, return_value, result=res_file) -+ if res_file != None: -+ os.remove('.result_file') -+ return test_decorated -+ return test_decorator -+ -+def mvn_depmap(pom, jar=None, fnargs=None): -+ def test_decorator(fun): -+ @wraps(fun) -+ def test_decorated(self): -+ os.chdir(self.workdir) -+ buildroot = os.path.join(self.workdir, "builddir/build/BUILDROOT") -+ env = {'RPM_BUILD_ROOT': buildroot} -+ scriptpath = path.join(DIRPATH, '..', 'java-utils', 'maven_depmap.py') -+ args = ['.fragment_data', pom] -+ if jar: -+ args.append(path.join(os.getcwd(), jar)) -+ args.extend(fnargs or []) -+ (stdout, stderr, return_value) = call_script(scriptpath, args, extra_env=env) -+ frag = None -+ if return_value == 0: -+ with open('.fragment_data','r') as frag_file: -+ frag = frag_file.read() -+ os.remove('.fragment_data') -+ fun(self, stdout, stderr, return_value, depmap=frag) -+ return test_decorated -+ return test_decorator -+ - def mvn_artifact(pom, jar=None): - def test_decorator(fun): - @wraps(fun) diff --git a/javapackages-tools.changes b/javapackages-tools.changes index 8caffd0..aa5ffee 100644 --- a/javapackages-tools.changes +++ b/javapackages-tools.changes @@ -1,3 +1,16 @@ +------------------------------------------------------------------- +Sat Sep 2 23:07:32 UTC 2023 - Fridrich Strba + +- Upgrade to upstream version 6.2.0 + * Întegrate our changes from javapackages-6.1.0-maven-depmap.patch +- Removed patch: + * javapackages-6.1.0-maven-depmap.patch + + upstreamed +- Added patch: + * 0001-Make-the-alias-generation-reproducible.patch + + separate patch for our reproducible changes that was not + part of the integrated pull request + ------------------------------------------------------------------- Mon Aug 21 14:49:36 UTC 2023 - Fridrich Strba diff --git a/javapackages-tools.spec b/javapackages-tools.spec index 4ba5d35..0db0c4f 100644 --- a/javapackages-tools.spec +++ b/javapackages-tools.spec @@ -30,7 +30,7 @@ Name: javapackages-tools-%{flavor} %else Name: javapackages-tools %endif -Version: 6.1.0 +Version: 6.2.0 Release: 0 Summary: Macros and scripts for Java packaging support License: BSD-3-Clause @@ -45,8 +45,8 @@ Patch1: python-optional.patch #PATCH-FIX-SUSE: SUSE did not bump epoch of openjdk packages, whereas Fedora did # Avoid generating unresolvable requires Patch2: suse-no-epoch.patch -#PATCH-FIX-SUSE: Let maven_depmap.py generate metadata with dependencies under certain circumstances -Patch3: javapackages-%{version}-maven-depmap.patch +#PATCH-FIX-SOURCE: let maven_depmap.py generate reproducible list of aliases +Patch3: 0001-Make-the-alias-generation-reproducible.patch BuildRequires: asciidoc BuildRequires: fdupes BuildRequires: perl