Exemplo n.º 1
0
 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)
Exemplo n.º 2
0
 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)
Exemplo n.º 3
0
 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
Exemplo n.º 4
0
    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)
Exemplo n.º 5
0
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)
Exemplo n.º 6
0
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)
Exemplo n.º 7
0
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)
Exemplo n.º 8
0
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)
Exemplo n.º 9
0
        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
Exemplo n.º 10
0
            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"