Exemplo n.º 1
0
 def get_child_module_pom(self, unique_project, version, flag="pull"):
     '''
     解析子模块pom.xml文件
     '''
     if 'push' == flag: return Pom('pom.xml')
     unique_project = unique_project.split('.')
     pom_file = default_libpath
     for c in unique_project:
         pom_file = os.path.join(pom_file, c)
     pom_file = os.path.join(pom_file, version, 'pom.xml')
     #print(pom_file)
     return Pom(pom_file)
Exemplo n.º 2
0
def main(dependencies_path='dependencies'):
    pom = Pom(path.join(path.dirname(path.abspath(__file__)), 'pom.xml'),
              repositories=(
                  "http://m2.neo4j.org/",
                  "http://repo1.maven.org/maven2/",
                  "http://repo2.maven.org/maven2/",
                  "http://mirrors.ibiblio.org/pub/mirrors/maven2/",
              ))
    # Load dependancies
    dependencies = []
    jars = []
    for dependency, include in pom.download_dependencies(dependencies_path):
        dependencies.append(dependency)
        if True or include:  #XXX: Add the jar (file only) to the inclusions list
            jars.append(path.split(dependency)[1])
    test.dependencies = test_dependencies = []
    for jar in jars:
        test_dependencies.append(path.join(dependencies_path, jar))
    # Configure setup
    packages = [
        'neo4j',
        'neo4j.model',
        'neo4j._backend',
        'neo4j._hooks',
        'neo4j.classes',
    ]
    args = dict(
        cmdclass=dict(build_ext=build_extensions, test=test),
        # The source structure is not defined in the pom, define it here
        packages=packages,
        package_dir={
            'neo4j': 'src/main/python/neo4j',
            'neo4j.classes': dependencies_path
        },
        # Include the runtime dependencies
        package_data={'neo4j.classes': jars},
        # Get author from the developers in the pom
        author=pom.developer('Author', 'name'),
        author_email=pom.developer('Author', 'email'),
        # Get maintainer from the developers in the pom
        maintainer=pom.developer('Maintainer', 'name'),
        maintainer_email=pom.developer('Maintainer', 'email'),
        # Get the extension modules for this Python implementation
        ext_modules=extension_modules(packages, dependencies),
    )
    setuptools_arguments(args, zip_safe=False)
    # Get extra attributes from the pom
    for attr in 'name,version,description,url'.split(','):
        args[attr] = pom[attr]
    # Read descriptions from files
    readme = open('README.txt')
    args['long_description'] = readme.read()
    readme.close()
    copyright = open('COPYRIGHT.txt')
    args['license'] = copyright.read()
    copyright.close()
    # Run the setup system
    setup(**args)
Exemplo n.º 3
0
def main(dependencies_path='dependencies'):
    pom = Pom(
        path.join(path.dirname(path.abspath(__file__)), 'pom.xml'),
        repositories=(
            "http://m2.neo4j.org/",
            "http://repo1.maven.org/maven2/",
            "http://repo2.maven.org/maven2/",
            "http://mirrors.ibiblio.org/pub/mirrors/maven2/",
        ))
    # Load dependancies
    dependencies = []
    jars = []
    for dependency, include in pom.download_dependencies(dependencies_path):
        dependencies.append(dependency)
        if True or include:  #XXX: Add the jar (file only) to the inclusions list
            jars.append(path.split(dependency)[1])
    test.dependencies = test_dependencies = []
    for jar in jars:
        test_dependencies.append(path.join(dependencies_path, jar))
    # Configure setup
    packages = [
        'neo4j',
        'neo4j.model',
        'neo4j._backend',
        'neo4j._hooks',
        'neo4j.classes',
    ]
    args = dict(
        cmdclass=dict(build_ext=build_extensions, test=test),
        # The source structure is not defined in the pom, define it here
        packages=packages,
        package_dir={
            'neo4j': 'src/main/python/neo4j',
            'neo4j.classes': dependencies_path
        },
        # Include the runtime dependencies
        package_data={'neo4j.classes': jars},
        # Get author from the developers in the pom
        author=pom.developer('Author', 'name'),
        author_email=pom.developer('Author', 'email'),
        # Get maintainer from the developers in the pom
        maintainer=pom.developer('Maintainer', 'name'),
        maintainer_email=pom.developer('Maintainer', 'email'),
        # Get the extension modules for this Python implementation
        ext_modules=extension_modules(packages, dependencies),
    )
    setuptools_arguments(args, zip_safe=False)
    # Get extra attributes from the pom
    for attr in 'name,version,description,url'.split(','):
        args[attr] = pom[attr]
    # Read descriptions from files
    readme = open('README.txt')
    args['long_description'] = readme.read()
    readme.close()
    copyright = open('COPYRIGHT.txt')
    args['license'] = copyright.read()
    copyright.close()
    # Run the setup system
    setup(**args)
Exemplo n.º 4
0
 def verify_version_nums(self):
     print("")
     #pom.xml 版本号
     pom = Pom('pom.xml')
     print("pom.xml".ljust(30, ' ') + 'version: %s' % (pom.version[0]))
     #.c 版本号
     pomfile = os.path.join(os.getcwd(), 'src', 'main',
                            'ver_%s.c' % (pom.artifactId[0]))
     ret = open_file(pomfile)
     if ret:
         content, charset = ret[0], ret[1]
         majorpattern = re.compile(r'\/\*- major\*\/\s{0,5}\d{1,3},')
         major = re.search(r'\d{1,3}', majorpattern.search(content).group())
         if major: major = major.group()
         minorpattern = re.compile(r'\/\*- minor\*\/\s{0,5}\d{1,3},')
         minor = re.search(r'\d{1,3}', minorpattern.search(content).group())
         if minor: minor = minor.group()
         patchpattern = re.compile(r'\/\*- patch\*\/\s{0,5}\d{1,3},')
         patch = re.search(r'\d{1,3}', patchpattern.search(content).group())
         if patch: patch = patch.group()
     cversion = major + "." + minor + "." + patch
     temp = "ver_%s.c " % (pom.artifactId[0])
     print(temp.ljust(30, ' ') + 'version: %s' % (cversion))
     #.cpp 版本号
     utestfile = os.path.join(os.getcwd(), 'src', 'test_cppunit',
                              '%s_test.cpp' % (pom.artifactId[0]))
     ret = open_file(utestfile)
     if ret:
         content, charset = ret[0], ret[1]
         majorpattern = re.compile(
             r'CPPUNIT_EASSERT\(\s?\d{1,3},\s?ver_%s.major' %
             (pom.artifactId[0]))
         major = re.search(r'\d{1,3}', majorpattern.search(content).group())
         if major: major = major.group()
         minorpattern = re.compile(
             r'CPPUNIT_EASSERT\(\s?\d{1,3},\s?ver_%s.minor' %
             (pom.artifactId[0]))
         minor = re.search(r'\d{1,3}', minorpattern.search(content).group())
         if minor: minor = minor.group()
         patchpattern = re.compile(
             r'CPPUNIT_EASSERT\(\s?\d{1,3},\s?ver_%s.patch' %
             (pom.artifactId[0]))
         patch = re.search(r'\d{1,3}', patchpattern.search(content).group())
         if patch: patch = patch.group()
         utestversion = major + "." + minor + "." + patch
     temp = "%s_test.cpp " % (pom.artifactId[0])
     print(temp.ljust(30, ' ') + 'version: %s' % (utestversion))
     if pom.version[0] == utestversion and utestversion == cversion:
         print("校验版本号一致".center(30, "="))
     else:
         print(" 版本号不一致请检查 ".center(30, "="))
Exemplo n.º 5
0
 def arm_project_elf2bin(self):
     pom = Pom('pom.xml')
     debug_dir = os.path.join(os.getcwd(),'bin','Debug')
     if os.path.exists(debug_dir):
         os.chdir(debug_dir)
         for filename in os.listdir(debug_dir):
             #find .elf
             if filename.endswith('.elf'):
                 prefix = filename.split('.elf')[0]
                 tobin = "%s.bin"%(pom.artifactId[0])
                 tohex = "%s.hex"%(pom.artifactId[0])
                 try:
                     os.system("fromelf --bin --output=%s %s"%(tobin, filename ))
                     os.system("fromelf --i32 --output=%s %s --base=0x08000000"%(tohex, filename ))
                     print("\n create .bin or hex success ")
                 except:
                     print("\n create .bin or hex fail ")
     else:
         logging.info(" %s not exist please check ..."%(debug_dir))
     os.chdir(self.rootpath) 
def update_dependency_dict(dependency_dict, root_pom_id):
    root_pom_info = root_pom_id.split(';')
    root_pom_group_artifact = root_pom_info[0]
    root_pom_group_info = root_pom_group_artifact.split(':')
    root_pom_group_id = root_pom_group_info[0]
    root_pom_artifact_id = root_pom_group_info[1]
    root_pom_version = root_pom_info[1]
    root_pom = Pom(root_pom_group_id, root_pom_artifact_id, root_pom_version,
                   1)
    q = queue.Queue()
    q.put(root_pom)
    visited_pom_dict = {root_pom_group_artifact: root_pom_version}
    pom_count = 1
    log.info('Added root pom.depth = {}, url = {}.'.format(
        root_pom.depth, root_pom.to_url()))
    while not q.empty():
        pom = q.get()
        pom_url = pom.to_url()
        log.info('Get dependencies from pom. depth = {}, url = {}.'.format(
            pom.depth, pom_url))
        try:
            tree = elementTree.ElementTree(file=request.urlopen(pom_url))
        except HTTPError:
            log.warn('Error in open {}'.format(pom_url))
            continue
        project_element = tree.getroot()
        property_dict = {}
        parent_element = project_element.find('./maven:parent',
                                              MAVEN_NAME_SPACE)
        if parent_element is not None:
            # get properties from parent
            parent_group_id = parent_element.find(
                './maven:groupId', MAVEN_NAME_SPACE).text.strip(' ${}')
            parent_artifact_id = parent_element.find(
                './maven:artifactId', MAVEN_NAME_SPACE).text.strip(' ${}')
            parent_version = parent_element.find(
                './maven:version', MAVEN_NAME_SPACE).text.strip(' ${}')
            parent_pom = Pom(parent_group_id, parent_artifact_id,
                             parent_version, pom.depth + 1)
            parent_pom_url = parent_pom.to_url()
            parent_tree = elementTree.ElementTree(
                file=request.urlopen(parent_pom_url))
            parent_project_element = parent_tree.getroot()
            log.debug(
                'Get properties from parent pom. parent_pom_url = {}.'.format(
                    parent_pom_url))
            update_property_dict(parent_project_element, property_dict)
        update_property_dict(project_element, property_dict)
        # get dependencies
        dependency_elements = project_element.findall(
            './maven:dependencyManagement/maven:dependencies/maven:dependency',
            MAVEN_NAME_SPACE)
        for dependency_element in dependency_elements:
            group_id = dependency_element.find(
                './maven:groupId', MAVEN_NAME_SPACE).text.strip(' ${}')
            # some group_id contain 'project.groupId', so put project_version first.
            if group_id in property_dict:
                group_id = property_dict[group_id]
            artifact_id = dependency_element.find(
                './maven:artifactId', MAVEN_NAME_SPACE).text.strip(' ')
            version = dependency_element.find(
                './maven:version', MAVEN_NAME_SPACE).text.strip(' ${}')
            key = group_id + ':' + artifact_id
            if version in property_dict:
                version = property_dict[version]
            if key not in dependency_dict:
                dependency_dict[key] = version
                log.debug(
                    'Dependency version added. key = {}, value = {}'.format(
                        key, version))
            elif version != dependency_dict[key]:
                log.debug(
                    'Dependency version skipped. key = {}, version = {}, dependency_dict[key] = {}.'
                    .format(key, version, dependency_dict[key]))
            artifact_type = dependency_element.find('./maven:type',
                                                    MAVEN_NAME_SPACE)
            artifact_scope = dependency_element.find('./maven:scope',
                                                     MAVEN_NAME_SPACE)
            if all(
                [artifact_type, artifact_scope]) and artifact_type.text.strip(
                ) == 'pom' and artifact_scope.text.strip() == 'import':
                new_pom = Pom(group_id, artifact_id, version, pom.depth + 1)
                new_pom_group_artifact = '{}:{}'.format(group_id, artifact_id)
                if new_pom_group_artifact not in visited_pom_dict:
                    q.put(new_pom)
                    visited_pom_dict[new_pom_group_artifact] = version
                    pom_count = pom_count + 1
                    log.debug('Added new pom. depth = {}, url = {}.'.format(
                        new_pom.depth, new_pom.to_url()))
                else:
                    log.warn(
                        'Pom exist in visited_pom_dict. depth = {}, url = {}.'.
                        format(new_pom.depth, new_pom.to_url()))
    log.info('Root pom summary. pom_count = {}, root_pom_url = {}'.format(
        pom_count, root_pom.to_url()))
    return dependency_dict
Exemplo n.º 7
0
def update_dependency_dict(dependency_dict, root_pom_id):
    root_pom_info = root_pom_id.split(':')
    root_pom_group_id = root_pom_info[0]
    root_pom_artifact_id = root_pom_info[1]
    root_pom_version = get_version_from_external_dependencies(root_pom_id)
    root_pom = Pom(root_pom_group_id, root_pom_artifact_id, root_pom_version,
                   1)
    q = queue.Queue()
    q.put(root_pom)
    pom_count = 1
    log.info('Added root pom: {}, depth = {}.'.format(root_pom.to_url(),
                                                      root_pom.depth))
    while not q.empty():
        pom = q.get()
        pom_url = pom.to_url()
        log.info('Get dependencies from pom: {}, depth = {}.'.format(
            pom_url, pom.depth))
        tree = elementTree.ElementTree(file=request.urlopen(pom_url))
        project_element = tree.getroot()
        name_space = {'maven': 'http://maven.apache.org/POM/4.0.0'}
        # get properties
        properties = project_element.find('maven:properties', name_space)
        property_dict = {}
        # some property contain 'project.version', so put 'project.version' into property_dict.
        version_element = project_element.find('./maven:version', name_space)
        if version_element is None:
            version_element = project_element.find(
                './maven:parent/maven:version', name_space)
        project_version = version_element.text.strip()
        property_dict['project.version'] = project_version
        # some property contain 'project.groupId', so put 'project.groupId' into property_dict.
        group_id_element = project_element.find('./maven:groupId', name_space)
        if group_id_element is None:
            group_id_element = project_element.find(
                './maven:parent/maven:groupId', name_space)
        group_id = group_id_element.text.strip()
        property_dict['project.groupId'] = group_id
        if properties is not None:
            for p in properties:
                key = p.tag.split('}', 1)[1]
                value = p.text.strip(' ${}')
                if value in property_dict:
                    value = property_dict[value]
                property_dict[key] = value
        # sometimes project_version contains '${foo}', so update project_version.
        if project_version.startswith('${'):
            property_dict['project.version'] = property_dict[
                project_version.strip(' ${}')]
        # get dependencies
        dependency_elements = project_element.findall(
            './maven:dependencyManagement/maven:dependencies/maven:dependency',
            name_space)
        for dependency_element in dependency_elements:
            group_id = dependency_element.find('./maven:groupId',
                                               name_space).text.strip(' ${}')
            # some group_id contain 'project.groupId', so put project_version first.
            if group_id in property_dict:
                group_id = property_dict[group_id]
            artifact_id = dependency_element.find('./maven:artifactId',
                                                  name_space).text.strip(' ')
            version = dependency_element.find('./maven:version',
                                              name_space).text.strip(' ${}')
            key = group_id + ':' + artifact_id
            if version in property_dict:
                version = property_dict[version]
            if key not in dependency_dict:
                dependency_dict[key] = version
                log.debug(
                    'Dependency version added. key = {}, value = {}'.format(
                        key, version))
            elif version != dependency_dict[key]:
                log.debug(
                    'Dependency version skipped. key = {}, version = {}, dependency_dict[key] = {}.'
                    .format(key, version, dependency_dict[key]))
            artifact_type = dependency_element.find('./maven:type', name_space)
            if artifact_type is not None and artifact_type.text.strip(
            ) == 'pom':
                new_pom = Pom(group_id, artifact_id, version, pom.depth + 1)
                q.put(new_pom)
                pom_count = pom_count + 1
                log.debug('Added new pom: {}, depth = {}.'.format(
                    new_pom.to_url(), new_pom.depth))
    log.info('Root pom summary: root_pom = {}, pom_count = {}'.format(
        root_pom.to_url(), pom_count))
    return dependency_dict
Exemplo n.º 8
0
    def cppproject_updateversion(self, dst_version):
        #logging.info("升级版本号to: %s"%dst_version)
        timestr = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
        if not self.check_version(dst_version): return
        #修改pom文件
        pom = Pom('pom.xml')
        old_version = pom.version[0]
        ret = open_file('pom.xml')
        if ret:
            content, charset = ret[0], ret[1]
            with open('pom.xml', mode="w+", encoding=charset) as file:
                content = re.sub(r'\<version\>.*\<\/version\>',
                                 "<version>%s</version>" % (dst_version),
                                 content, 1)
                file.write(content)
                file.close()
        else:
            logging.info(" auto update version pom.xml fail ")
        #修改.c文件中版本号
        pomfile = os.path.join(os.getcwd(), 'src', 'main',
                               'ver_%s.c' % (pom.artifactId[0]))
        ret = open_file(pomfile)
        if ret:
            content, charset = ret[0], ret[1]
            with open(pomfile, mode="w+", encoding=charset) as file:
                temp = dst_version.split('.')
                major, minor, patch = temp[0], temp[1], temp[2]
                content = re.sub(r'\/\*- major\*\/\s{0,5}\d{1,3},',
                                 r'/*- major*/    %s,' % (major), content, 1)
                content = re.sub(r'\/\*- minor\*\/\s{0,5}\d{1,3},',
                                 r'/*- minor*/    %s,' % (minor), content, 1)
                content = re.sub(r'\/\*- patch\*\/\s{0,5}\d{1,3},',
                                 r'/*- patch*/    %s,' % (patch), content, 1)
                content += "\n/* author: %s update version: %s time:%s  */" % (
                    getpass.getuser(), dst_version, timestr)
                file.write(content)
                file.close()
        else:
            logging.info(" auto update version .c fail ")
        #修改单元测试中版本号
        utestfile = os.path.join(os.getcwd(), 'src', 'test_cppunit',
                                 '%s_test.cpp' % (pom.artifactId[0]))
        ret = open_file(utestfile)
        if ret:
            content, charset = ret[0], ret[1]
            with open(utestfile, mode="w+", encoding=charset) as file:
                temp = dst_version.split('.')
                major, minor, patch = temp[0], temp[1], temp[2]
                content = re.sub(
                    r'CPPUNIT_EASSERT\(\s?\d{1,3},\s?ver_%s.major' %
                    (pom.artifactId[0]), r'CPPUNIT_EASSERT( %s, ver_%s.major' %
                    (major, pom.artifactId[0]), content, 1)
                content = re.sub(
                    r'CPPUNIT_EASSERT\(\s?\d{1,3},\s?ver_%s.minor' %
                    (pom.artifactId[0]), r'CPPUNIT_EASSERT( %s, ver_%s.minor' %
                    (minor, pom.artifactId[0]), content, 1)
                content = re.sub(
                    r'CPPUNIT_EASSERT\(\s?\d{1,3},\s?ver_%s.patch' %
                    (pom.artifactId[0]), r'CPPUNIT_EASSERT( %s, ver_%s.patch' %
                    (patch, pom.artifactId[0]), content, 1)
                file.write(content)
                file.close()
        else:
            logging.info(" auto update version .cpp fail ")

        print("\n auto update version from: %s to %s  success " %
              (old_version, dst_version))
Exemplo n.º 9
0
 def __init__(self, pom):
     self.rootpath = os.getcwd()
     self.pom = Pom(pom)
Exemplo n.º 10
0
class MavenAutoTools(object):
    def __init__(self, pom):
        self.rootpath = os.getcwd()
        self.pom = Pom(pom)

    def get_last_version(self, unique_project):
        '''
        获得最新版本号  None未install过文件
        '''
        unique_project = unique_project.split('.')
        basedir = default_libpath
        for c in unique_project:
            basedir = os.path.join(basedir, c)
        is_dirs_exists(basedir, True)
        os.chdir(basedir)
        versions = []
        for root, dirs, files in os.walk(basedir):
            for dir in dirs:
                versions.append(dir)
            break
        os.chdir(self.rootpath)  #chage dirs
        if versions:
            return max(versions)
        else:
            return None

    def get_child_module_pom(self, unique_project, version, flag="pull"):
        '''
        解析子模块pom.xml文件
        '''
        if 'push' == flag: return Pom('pom.xml')
        unique_project = unique_project.split('.')
        pom_file = default_libpath
        for c in unique_project:
            pom_file = os.path.join(pom_file, c)
        pom_file = os.path.join(pom_file, version, 'pom.xml')
        #print(pom_file)
        return Pom(pom_file)

    def transform_lib_absolute_address(self,
                                       unique_project,
                                       version,
                                       platform="Windows",
                                       flag="pull"):
        '''
        :param  unique_project:    类似 com.utest.cppunit
        :param  version :          版本号 0.0.1
        :param  platform:          Windows Linux
        :param  flag    :          pull    push
        return: {'project': None , 'depository':None }
        '''
        childpom = self.get_child_module_pom(unique_project, version, flag)
        ret = {'project': None, 'depository': None}
        if not childpom.lib:  #无库文件
            return None
        unique_project = unique_project.split('.')
        if "Windows" == platform:
            if "pull" == flag:
                project = os.path.join(os.getcwd(), 'lib', 'Windows',
                                       '%s.lib' % (childpom.lib[0]))
            else:
                project = os.path.join(os.getcwd(), 'lib', 'Debug',
                                       '%s.lib' % (childpom.lib[0]))

            depository = os.path.join(default_libpath, unique_project[0],
                                      unique_project[1], unique_project[2])
            depository = os.path.join(depository, version,
                                      childpom.lib[0] + '.lib')
        elif "Linux" == platform:
            if "pull" == flag:
                project = os.path.join(os.getcwd(), 'lib', 'ARMCC',
                                       'lib%s.a' % (childpom.lib[0]))
            else:
                project = os.path.join(os.getcwd(), 'lib', "ARMCC",
                                       'lib%s.a' % (childpom.lib[0]))
            depository = os.path.join(default_libpath, unique_project[0],
                                      unique_project[1], unique_project[2])
            depository = os.path.join(depository, version,
                                      'lib%s.a' % (childpom.lib[0]))
        else:
            pass
        ret['project'], ret['depository'] = project, depository
        return ret

    def transform_pom_absolute_address(self,
                                       unique_project,
                                       version,
                                       flag="pull"):
        '''
        :param  unique_project:    类似 com.utest.cppunit
        :param  version :          版本号 0.0.1
        :param  flag    :          pull    push
        return: {'project': None , 'depository':None }
        '''
        childpom = self.get_child_module_pom(unique_project, version, flag)
        temp = unique_project
        ret = {'project': None, 'depository': None}
        if not childpom.lib:  #无库文件
            return None
        unique_project = unique_project.split('.')
        if "push" == flag:
            project = os.path.join(os.getcwd(), 'pom.xml')
            depository = os.path.join(default_libpath, unique_project[0],
                                      unique_project[1], unique_project[2])
            depository = os.path.join(depository, version, 'pom.xml')
        else:
            project = os.path.join(os.getcwd(), 'pom',
                                   'pom-%s-%s.xml' % (temp, version))
            depository = os.path.join(default_libpath, unique_project[0],
                                      unique_project[1], unique_project[2])
            depository = os.path.join(depository, version, 'pom.xml')
        ret['project'], ret['depository'] = project, depository
        return ret

    def transform_header_absolute_address(self,
                                          unique_project,
                                          version,
                                          flag="pull"):
        childpom = self.get_child_module_pom(unique_project, version, flag)
        unique_project = unique_project.split('.')
        if not childpom.header: return None  #无需处理头文件
        if 'pull' == flag:
            depository_prefix = os.path.join(default_libpath,
                                             unique_project[0],
                                             unique_project[1],
                                             unique_project[2])
            depository_prefix = os.path.join(depository_prefix, version)
            #遍历拉取所有头文件
            for header in childpom.header:
                depository = os.path.join(depository_prefix, header)
                if not childpom.header_prefix:
                    project = os.path.join(os.getcwd(), 'include', header)
                else:
                    project = os.path.join(os.getcwd(), 'include')
                    for item in childpom.header_prefix:
                        project = os.path.join(project, item)
                    project = os.path.join(project, header)
                #copy
                copy_file(depository, project)
        else:
            depository_prefix = os.path.join(default_libpath,
                                             unique_project[0],
                                             unique_project[1],
                                             unique_project[2])
            depository_prefix = os.path.join(depository_prefix, version)
            #遍历安装所有头文件
            for header in childpom.header:
                depository = os.path.join(depository_prefix, header)
                if not childpom.header_prefix:
                    project = os.path.join(os.getcwd(), 'src', 'include',
                                           header)
                else:
                    project = os.path.join(os.getcwd(), 'src', 'include')
                    for item in childpom.header_prefix:
                        project = os.path.join(project, item)
                    project = os.path.join(project, header)
                #copy
                copy_file(project, depository)
        return 0

    def install_all_interface_files(self, platform="Windows"):
        try:
            moduel_info = self.pom.groupid[0] + '.' + self.pom.groupid[
                1] + '.' + self.pom.artifactId[0]
            # pom
            ret = self.transform_pom_absolute_address(moduel_info,
                                                      self.pom.version[0],
                                                      flag='push')
            copy_file(ret['project'], ret['depository'])
            # header
            ret = self.transform_header_absolute_address(moduel_info,
                                                         self.pom.version[0],
                                                         flag='push')

            if "Windows" == platform:
                # .lib
                ret = self.transform_lib_absolute_address(moduel_info,
                                                          self.pom.version[0],
                                                          platform="Windows",
                                                          flag='push')
                copy_file(ret['project'], ret['depository'])
            else:
                # .a
                ret = self.transform_lib_absolute_address(moduel_info,
                                                          self.pom.version[0],
                                                          platform="Linux",
                                                          flag='push')
                copy_file(ret['project'], ret['depository'])
            print('\n %s install files success  ' % (moduel_info))
            print(" moduel  version: %s" % (self.pom.version[0]))
        except Exception as e:
            print('\n %s install files fail  ' % (moduel_info))
            print(" moduel  version: %s" % (self.pom.version[0]))

    def repo_dependencys_file(self, platform="Windows"):
        print(
            "\n======================dependencies============================="
        )
        for key, value in self.pom.get_dependencies().items():
            lastversion = self.get_last_version(key)
            if value:  #获得指定版本
                # pom
                ret = self.transform_pom_absolute_address(key,
                                                          value,
                                                          flag='pull')
                copy_file(ret['depository'], ret['project'])
                # header
                ret = self.transform_header_absolute_address(key,
                                                             value,
                                                             flag='pull')
                if "Windows" == platform:
                    ret = self.transform_lib_absolute_address(
                        key, value, platform="Windows", flag='pull')
                    copy_file(ret['depository'], ret['project'])
                else:
                    ret = self.transform_lib_absolute_address(key,
                                                              value,
                                                              platform="Linux",
                                                              flag='pull')
                    copy_file(ret['depository'], ret['project'])
                print(key.ljust(30, ' ') + 'version: %s' % (value))
            else:
                # pom
                ret = self.transform_pom_absolute_address(key,
                                                          lastversion,
                                                          flag='pull')
                copy_file(ret['depository'], ret['project'])
                # header
                ret = self.transform_header_absolute_address(key,
                                                             lastversion,
                                                             flag='pull')
                if "Windows" == platform:
                    ret = self.transform_lib_absolute_address(
                        key, lastversion, platform="Windows", flag='pull')
                    copy_file(ret['depository'], ret['project'])
                else:
                    ret = self.transform_lib_absolute_address(key,
                                                              lastversion,
                                                              platform="Linux",
                                                              flag='pull')
                    copy_file(ret['depository'], ret['project'])
                print(key.ljust(30, ' ') + 'version: %s' % (lastversion))
        print(
            "======================dependencies=============================\n"
        )