def test_provided_versioned(self, d): artifacts = d.get_provided_artifacts() self.assertEqual(len(artifacts), 4) self.assertTrue(MetadataArtifact("org.apache.maven.plugins", "maven-idea-plugin", version="1.4", path="/usr/share/java/maven-idea-plugin/maven-idea-plugin-1.4.jar", compatVersions=set(['1.4'])) in artifacts) self.assertTrue(MetadataArtifact("org.apache.maven.plugins", "maven-idea-plugin", version="1.4", extension="pom", path="/usr/share/maven-poms/JPP.maven-idea-plugin-maven-idea-plugin-1.4.pom", compatVersions=set(["1.4"])) in artifacts) self.assertTrue(MetadataArtifact("org.apache.maven.plugins", "maven-idea-plugin", version="1.4", path="/usr/share/java/maven-idea-plugin/maven-idea-plugin-1.4.jar", compatVersions=set(["1.5"])) in artifacts) self.assertTrue(MetadataArtifact("org.apache.maven.plugins", "maven-idea-plugin", version="1.4", extension="pom", path="/usr/share/maven-poms/JPP.maven-idea-plugin-maven-idea-plugin-1.4.pom", compatVersions=set(["1.5"])) in artifacts)
def test_compressed_depmap(self, d): artifacts = d.get_provided_artifacts() self.assertEqual(len(artifacts), 2) self.assertTrue(MetadataArtifact("org.apache.maven.plugins", "maven-idea-plugin", version="2.2", path="/usr/share/java/maven-idea-plugin/maven-idea-plugin.jar", properties={'requiresJava': '1.5'} ) in artifacts) self.assertTrue(MetadataArtifact("org.apache.maven.plugins", "maven-idea-plugin", version="2.2", path="/usr/share/maven-poms/JPP.maven-idea-plugin-maven-idea-plugin.pom", extension="pom") in artifacts)
def _read_artifacts(self, metadata): artifacts = [] if metadata.artifacts and metadata.artifacts.artifact: for a in metadata.artifacts.artifact: artifact = MetadataArtifact.from_metadata(a) if not artifact.version: raise MetadataInvalidException( "Artifact {a} does not have version in maven provides". format(a=artifact)) artifacts.append(artifact) return artifacts
def test_multiple_namespaces(self, d): prov = d.get_provided_artifacts() self.assertEqual(len(prov), 6) self.assertTrue( MetadataArtifact( "org.codehaus.plexus", "plexus-utils", version="3.0", namespace="codehaus-plexus", path="/usr/share/java/plexus-utils/plexus-utils.jar", properties={'requiresJava': '1.5'}) in prov) self.assertTrue( MetadataArtifact( "org.codehaus.plexus", "plexus-utils", version="3.0", extension="pom", namespace="codehaus-plexus", path="/usr/share/maven-poms/JPP.plexus-utils-plexus-utils.pom", properties={'requiresJava': '1.5'}) in prov) self.assertTrue( MetadataArtifact( "plexus", "plexus-utils", version="1.2", namespace="plexus", path="/usr/share/java/plexus-utils/plexus-utils.jar", properties={'requiresJava': '1.5'}) in prov) self.assertTrue( MetadataArtifact( "plexus", "plexus-utils", version="1.2", namespace="plexus", extension="pom", path="/usr/share/maven-poms/JPP.plexus-utils-plexus-utils.pom", properties={'requiresJava': '1.5'}) in prov) self.assertTrue( MetadataArtifact( "codehaus", "plexus-utils", version="1.2", namespace="codehaus", path="/usr/share/java/plexus-utils/plexus-utils.jar", properties={'requiresJava': '1.5'}) in prov) self.assertTrue( MetadataArtifact( "codehaus", "plexus-utils", version="1.2", namespace="codehaus", extension="pom", path="/usr/share/maven-poms/JPP.plexus-utils-plexus-utils.pom", properties={'requiresJava': '1.5'}) in prov)
def _main(): usage = "usage: %prog [options] metadata_path pom_path|<MVN spec> [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 artifact.properties["xmvn.resolver.disableEffectivePom"] = "true" 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)
def _main(): OptionParser.format_epilog = lambda self, formatter: self.epilog parser = OptionParser(usage=usage, epilog=epilog) parser.add_option("--skip-dependencies", action="store_true", default=False, help="skip dependencies section in resulting metadata") parser.add_option("-D", action="append", type="str", help="add artifact property", metavar="property=value") sys.argv = args_to_unicode(sys.argv) (options, args) = parser.parse_args() if len(args) < 1: parser.error("At least 1 argument is required") try: uart = Artifact.from_mvn_str(args[0]) uart.validate(allow_backref=False) if len(args) == 1: parser.error( "When using artifact specification artifact path must be " "provided") if not (uart.groupId and uart.artifactId and uart.version): parser.error("Defined artifact has to include at least groupId, " "artifactId and version") except (ArtifactFormatException): if is_it_ivy_file(args[0]): uart = IvyFile(args[0]) else: # it should be good old POM file uart = POM(args[0]) pom_path = args[0] else: pom_path = None art = MetadataArtifact(uart.groupId, uart.artifactId, version=uart.version) if hasattr(uart, "extension") and uart.extension: art.extension = uart.extension if hasattr(uart, "classifier") and uart.classifier: art.classifier = uart.classifier jar_path = None if len(args) > 1: jar_path = args[1] extension = (os.path.splitext(jar_path)[1])[1:] if hasattr( art, "extension" ) and art.extension and art.extension != extension and not pom_path: raise ExtensionsDontMatch("Extensions don't match: '%s' != '%s'" % (art.extension, extension)) else: art.extension = extension else: art.extension = "pom" if os.path.exists(config): metadata = Metadata.create_from_file(config) else: metadata = Metadata() if (not options.skip_dependencies and pom_path and not is_it_ivy_file(pom_path)): deps = [] mvn_deps = gather_dependencies(pom_path) for d in mvn_deps: deps.append(MetadataDependency.from_mvn_dependency(d)) if deps: art.dependencies = set(deps) else: art.properties["xmvn.resolver.disableEffectivePom"] = "true" if options.D: for d_opt in options.D: key, value = d_opt.split("=") art.properties[key] = value add_artifact_elements(metadata, art, pom_path, jar_path) metadata.write_to_file(config)
def _main(): OptionParser.format_epilog = lambda self, formatter: self.epilog parser = OptionParser(usage=usage, epilog=epilog) parser.add_option( "--skip-dependencies", action="store_true", default=False, help="skip dependencies section in resulting metadata", ) parser.add_option("-D", action="append", type="str", help="add artifact property", metavar="property=value") sys.argv = args_to_unicode(sys.argv) (options, args) = parser.parse_args() if len(args) < 1: parser.error("At least 1 argument is required") try: uart = Artifact.from_mvn_str(args[0]) uart.validate(allow_backref=False) if len(args) == 1: parser.error("When using artifact specification artifact path must be " "provided") if not (uart.groupId and uart.artifactId and uart.version): parser.error("Defined artifact has to include at least groupId, " "artifactId and version") except (ArtifactFormatException): if is_it_ivy_file(args[0]): uart = IvyFile(args[0]) else: # it should be good old POM file uart = POM(args[0]) pom_path = args[0] else: pom_path = None art = MetadataArtifact(uart.groupId, uart.artifactId, version=uart.version) if hasattr(uart, "extension") and uart.extension: art.extension = uart.extension if hasattr(uart, "classifier") and uart.classifier: art.classifier = uart.classifier jar_path = None if len(args) > 1: jar_path = args[1] extension = (os.path.splitext(jar_path)[1])[1:] if hasattr(art, "extension") and art.extension and art.extension != extension and not pom_path: raise ExtensionsDontMatch("Extensions don't match: '%s' != '%s'" % (art.extension, extension)) else: art.extension = extension else: art.extension = "pom" if os.path.exists(config): metadata = Metadata.create_from_file(config) else: metadata = Metadata() if not options.skip_dependencies and pom_path and not is_it_ivy_file(pom_path): deps = [] mvn_deps = gather_dependencies(pom_path) for d in mvn_deps: deps.append(MetadataDependency.from_mvn_dependency(d)) if deps: art.dependencies = set(deps) else: art.properties["xmvn.resolver.disableEffectivePom"] = "true" if options.D: for d_opt in options.D: key, value = d_opt.split("=") art.properties[key] = value add_artifact_elements(metadata, art, pom_path, jar_path) metadata.write_to_file(config)
def _main(): usage="usage: %prog [options] metadata_path pom_path|<MVN spec> [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 artifact.properties["xmvn.resolver.disableEffectivePom"] = "true" 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)
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() local = None fragment = None 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
parser.error("When using artifact specification artifact path must be " "provided") if not (uart.groupId and uart.artifactId and uart.version): parser.error("Defined artifact has to include at least groupId, " "artifactId and version") except (ArtifactFormatException): if is_it_ivy_file(args[0]): uart = IvyFile(args[0]) else: # it should be good old POM file uart = POM(args[0]) pom_path = args[0] else: pom_path = None art = MetadataArtifact(uart.groupId, uart.artifactId, version=uart.version) if hasattr(uart, "extension") and uart.extension: art.extension = uart.extension if hasattr(uart, "classifier") and uart.classifier: art.classifier= uart.classifier jar_path = None if len(args) > 1: jar_path = args[1] extension = (os.path.splitext(jar_path)[1])[1:] if hasattr(art, "extension") and art.extension and art.extension != extension and not pom_path: raise ExtensionsDontMatch("Extensions don't match: '%s' != '%s'" % (art.extension, extension)) else: art.extension = extension else: art.extension = "pom"