CN109189490A - 一种模块的配置方法及相关设备 - Google Patents

一种模块的配置方法及相关设备 Download PDF

Info

Publication number
CN109189490A
CN109189490A CN201810720093.3A CN201810720093A CN109189490A CN 109189490 A CN109189490 A CN 109189490A CN 201810720093 A CN201810720093 A CN 201810720093A CN 109189490 A CN109189490 A CN 109189490A
Authority
CN
China
Prior art keywords
module
label allocation
information
configuration information
configuration
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN201810720093.3A
Other languages
English (en)
Inventor
张磊
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Wuhan Douyu Network Technology Co Ltd
Original Assignee
Wuhan Douyu Network Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Wuhan Douyu Network Technology Co Ltd filed Critical Wuhan Douyu Network Technology Co Ltd
Priority to CN201810720093.3A priority Critical patent/CN109189490A/zh
Publication of CN109189490A publication Critical patent/CN109189490A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44505Configuring for program initiating, e.g. using registry, configuration files
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44568Immediately runnable code
    • G06F9/44578Preparing or optimising for loading

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请实施例公开了一种模块的配置方法及相关设备,用于提高配置的效率。本申请实施例方法包括:建立模块的配置标签,所述配置标签包括总配置标签以及至少一个子配置标签,所述子配置标签建立在所述总配置标签下,所述子配置标签对应有配置信息,所述配置信息包括所述模块的名称信息以及所述模块的路径信息,所述配置信息为XML格式;之后读取所述配置信息;进而判断所述配置信息中是否包含需要添加的目标信息;若否,则为所述模块配置所述目标信息。本申请实施例还提供了一种模块的配置装置,用于提高配置的效率。

Description

一种模块的配置方法及相关设备
技术领域
本申请涉及软件技术领域,尤其涉及一种模块的配置方法及相关设备。
背景技术
在安卓软件开发过程中,对于新建的模块需要进行配置,包括引入组件或配置信息等,现有技术中,需要通过人工手动的方式对相关的配置信息进行修改,增加了人力成本,另外,不同的配置信息一般需要通过换行符来区分,而在不同的操作系统下,换行符也存在差异,因此手动修改配置信息经常会出现多加或漏加的情况,导致了配置错误的可能性大大增加。
发明内容
本申请实施例提供了一种模块的配置方法及相关设备,用于提高配置的效率。
本申请实施例第一方面提供了一种模块的配置方法,包括:
建立模块的配置标签,所述配置标签包括总配置标签以及至少一个子配置标签,所述子配置标签建立在所述总配置标签下,所述子配置标签对应有配置信息,所述配置信息包括所述模块的名称信息以及所述模块的路径信息,所述配置信息为XML格式;
读取所述配置信息;
判断所述配置信息中是否包含需要添加的目标信息;
若否,则为所述模块配置所述目标信息。
可选地,读取所述配置信息包括:
通过调用saxreader解析器中的函数将所述模块中的file对象转换为document对象;
通过调用所述document对象中的函数获取所述总配置标签;
获取所述子配置标签;
读取与所述子配置标签对应的所述配置信息。
可选地,判断所述配置信息中是否包含需要添加的目标信息包括:
将所述模块中的file对象转换为bufferedreader对象;
通过调用所述bufferedreader对象中的函数依次读取所述配置信息中的每一行数据;
判断所述每一行数据中是否包含所述目标信息;
若否,则确定所述配置信息中不包含所述目标信息。
可选地,为所述模块配置所述目标信息包括:
建立StringBuffer;
将所述目标信息插入到所述StringBuffer中;
将所述StringBuffer中的所述目标信息添加至所述模块。
可选地,所述模块包括setting.gradle文件及gradle.build文件。
本申请实施例第二方面提供了一种模块的配置装置,包括:
建立单元,用于建立模块的配置标签,所述配置标签包括总配置标签以及至少一个子配置标签,所述子配置标签建立在所述总配置标签下,所述子配置标签对应有配置信息,所述配置信息包括所述模块的名称信息以及所述模块的路径信息,所述配置信息为XML格式;
读取单元,用于读取所述配置信息;
判断单元,用于判断所述配置信息中是否包含需要添加的目标信息;
配置单元,用于当所述配置信息中不包含所述目标信息时,为所述模块配置所述目标信息。
可选地,所述读取单元具体用于:
通过调用saxreader解析器中的函数将所述模块中的file对象转换为document对象;
通过调用所述document对象中的函数获取所述总配置标签;
获取所述子配置标签;
读取与所述子配置标签对应的所述配置信息。
可选地,所述配置单元具体用于:
建立StringBuffer;
将所述目标信息插入到所述StringBuffer中;
将所述StringBuffer中的所述目标信息添加至所述模块。
可选地,所述判断单元具体用于:
将所述模块中的file对象转换为bufferedreader对象;
通过调用所述bufferedreader对象中的函数依次读取所述配置信息中的每一行数据;
判断所述每一行数据中是否包含所述目标信息;
若否,则确定所述配置信息中不包含所述目标信息。
可选地,所述模块包括setting.gradle文件及gradle.build文件。
本申请实施例第三方提供了一种计算机可读存储介质,包括指令,当所述指令在计算机上运行时,使得计算机执行第一方面任一项所述的方法。
本申请实施例第四方面提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行第一方面任一项所述的方法。
从以上技术方案可以看出,本申请实施例具有以下优点:首先建立模块的配置标签,所述配置标签包括总配置标签以及至少一个子配置标签,所述子配置标签建立在所述总配置标签下,所述子配置标签对应有配置信息,所述配置信息包括所述模块的名称信息以及所述模块的路径信息,所述配置信息为XML格式,随后读取所述配置信息,进而,判断所述配置信息中是否包含需要添加的目标信息,若否,则为所述模块配置所述目标信息。通过上述方式,若当前模块的配置信息中不包含需要使用的目标信息,可以为该模块配置该目标信息,无需再依靠人工手动的方式对配置信息进行修改,提高了配置的效率。
附图说明
图1为本申请实施例提供的模块的配置方法一个实施例示意图;
图2为本申请实施例提供的模块的配置装置一个实施例示意图;
图3为本发明实施例提供的模块的配置装置的硬件结构示意图;
图4为本发明实施例提供的一种电子设备的实施例示意图;
图5为本发明实施例提供的一种计算机可读存储介质的实施例示意图。
具体实施方式
本申请实施例提供了一种模块的配置方法及相关设备,用于提供配置效率。
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。
本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何边形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或模块的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或模块,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或模块,本发明中所出现的模块的划分,仅仅是一种逻辑上的划分,实际应用中实现时可以有另外的划分方式,例如多个模块可以结合成或集成在另一个系统中,或一些特征可以忽略,或不执行,另外,所显示的或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,模块之间的间接耦合或通信连接可以是电性或其他类似的形式,本发明中均不作限定。并且,作为分离部件说明的模块或子模块可以是也可以不是物理上的分离,可以是也可以不是物理模块,或者可以分布到多个电路模块中,可以根据实际的需要选择其中的部分或全部模块来实现本发明方案的目的。
请参阅图1,本申请实施例中模块的配置方法的一个实施例包括:
101、建立模块的配置标签。
本申请实施例中,对在安卓平台上建立的模块(module)进行相应的配置,需要建立模块的配置标签,其中,首先要设计一个总配置标签,例如,<config>或</config>,随后,在总配置标签下,进一步设计至少一个子配置标签,例如,<sub_config>或</sub_config>,每个子配置标签对应有一组配置信息,一组配置信息中又包含有两个方面的信息,其一是用于表示模块中文件的名称信息,例如,<file_name>或</file_name>,其二是用于该文件所对应的目录信息,例如,<file_path>或</file_path>。
需要说明的是,本申请需要使用可扩展标记语言(eXtensible Markup Language,XML)格式的配置信息,XML与Access,Oracle和SQL Server等数据库不同,提供了更强有力的数据存储和分析能力,例如:数据索引、排序、查找、相关一致性等,XML的宗旨传输数据的,而与其同属标准通用标记语言的HTML主要用于显示数据;XML的简单使其易于在任何应用程序中读写数据,这使XML很快成为数据交换的唯一公共语言,虽然不同的应用软件也支持其它的数据交换格式,但不久之后他们都将支持XML,那就意味着程序可以更容易的与Windows、Mac OS,Linux以及其他平台下产生的信息结合,然后可以很容易加载XML数据到程序中并分析他,并以XML格式输出结果。
这样可以避免不同操作系统中换行符差异带来的适配问题,方便解析和处理,具体配置方式可以如下所示:
需要说明的是,在模块中新建的项目下包含有setting.gradle文件及gradle.build文件,setting.gradle文件可以说是子项目(也可以说是Module)的配置文件,大多数setting.gradle的作用是为了配置子工程,再Gradle多工程是通过工程树表示的,如在Android studio中我们指定相应的module能在主工程当中使用;gradle.build是项目的配置文件,我们可以配置版本,插件,依赖库等等的信息,通过上述方式可以对setting.gradle文件及gradle.build文件进行配置,同理,若需要增加其他的配置信息,通过增加子配置标签<sub_config></sub_config>及标签内部元素就能够进行动态的扩展。
102、读取配置信息。
在模块的基础信息配置完成之后,需要对已有的配置信息进行解析,来读取配置信息中的内容,下面对读取配置信息的具体流程做进一步的介绍:
首先在模块中构建file对象,具体的构建方法是File file=new File(config.xml),其中,config.xml就是上述的配置信息的绝对路径信息;
通过调用saxreader解析器的构造函数来构造出解析器对象saxReader,具体的构造方法是SAXReader saxReader=new SAXReader();
需要说明的是,SAX(simple API for XML)是一种XML解析的替代方法。相比于DOM,SAX是一种速度更快,更有效的方法。它逐行扫描文档,一边扫描一边解析。而且相比于DOM,SAX可以在解析文档的任意时刻停止解析,SAX既是一个接口,也是一个软件包,作为接口,SAX是事件驱动型XML解析的一个标准接口不会改变SAX的工作原理简单地说就是对文档进行顺序扫描,当扫描到文档(document)开始与结束、元素(element)开始与结束、文档(document)结束等地方时通知事件处理函数,由事件处理函数做相应动作,然后继续同样的扫描,直至文档结束。
接下来通过调用saxReader中的read函数来将一个文件对象file转换成一个Document类型的对象,具体的转换方法如下所示:Document document=saxReader.read(inputXml);
通过调用document对象中的document.getRootElement()来获取到根元素对象,该根元素对象也就是总配置标签,如<config>或</config>的元素对象,之后用Element来接收该对象的信息,具体的实现方式是ElementrootConfigs=document.getRootElement();
进一步,需要遍历总配置标签下的各子配置标签的信息,具体的方式可以是,通过调用rootConfigs.elementIterator()来获取到一个遍历对象Iterator iterator,之后判断iterator.hasNext()的结果是否为true,如果为true表示还有子配置标签,因此需要对其进行进一步的解析,否则就不需要继续解析了。
假设存在子配置标签,那么需要通过调用Element subConfig=(Element)iterator.next()来获取一个子配置标签的信息并且将该信息用Element类型的对象subConfig来接收。
对subConfig对象依旧使用上述的判定方法判定其是否有子配置标签,如果有就继续处理,否则就不处理,要获取子配置标签中的信息,可以通过调用Element fileName=(Element)iterator.next()及Element filePath=(Element)iterator.next()的方式来获取,进而通过定义Element类型的fileName和filePath来对读取到的信息进行接收。
随后通过调用fileName.getText()的方法来读取到文件的名称信息,并将该名称信息标记为configFileName;并通过调用filePath.getText()的方法来读取到文件的路径信息,并将该消息标记为configFilePath。
参照上述流程进行循环处理,就可以完整的读取到所有的路径信息和文件信息了,以此来获取到所有已有的配置信息。
103、判断配置信息中是否包含需要添加的目标信息,若否,则执行步骤104。
若有新的配置需要添加,如需要添加一个目标信息,那么首先需要判断现有的配置信息中是否包含有需要添加的目标信息,下面对判断的具体流程做进一步的介绍:
首先通过调用File file=new File(settingFilePath)来读取文件,之后通过调用file.exists()函数来判断文件是否存在,如果该函数返回false表示文件不存在,那么就终止流程,若函数返回true则继续检测该目标信息是否已经完成配置;
通过FileInputStream类的构造函数来将file对象转变成一个FileInputStream对象,具体的实现方法是FileInputStream mFileInputStream=new FileInputStream(file)。
然后将FileInputStream包装成一个InputStreamReader对象,具体的包装方法是调用InputStreamReaderreader=newInputStreamReader(mFileInputStream,“utf-8”)。
接下来将reader对象包装成一个BufferedReader类型的对象,用于从字符输入流中读取文本,缓冲各个字符,从而实现字符、数组和行的高效读取,通常,Reader所作的每个读取请求都会导致对底层字符或字节流进行相应的读取请求,因此,可以用BufferedReader包装所有read()操作可能开销很高的Reader(如FileReader和InputStreamReader),如果没有缓冲,则每次调用read()或readLine()都会导致从文件中读取字节,并将其转换为字符后返回,而这是极其低效的,通过用合适的BufferedReader替代每个DataInputStream,可以对将DataInputStream用于文字输入的程序进行本地化。具体的实现方法是BufferedReader mBufferedReader=new BufferedReader(reader),这样就得到了最终读取文件的mBufferedReader对象。
进而通过调用mBufferedReader对象中的readLine依次读取一行数据,具体的代码可以是mBufferedReader.readLine(),将读取到的数据标记为lineStr,接下来通过调用lineStr.contains()函数来判定读取到的每一行数据中是否包含目标信息,即需要插入的数据信息,如果该函数返回true则表示现有的配置信息中已经包含了该目标信息,此时就无需再插入目标信息了,否则就需要插入该目标信息。
104、为模块配置目标信息。
经过上述判定流程,如现有的配置信息中不包含需要添加的目标信息,则需要为已建立的模块配置该目标信息,即需要插入该配置信息,下面对插入目标信息的具体流程进行介绍:
首先将上述获取到的mBufferedReader对象进行再次包装成一个可以写入数据的对象PrintWriter,printwriter是向文本输出流打印对象的格式化表示形式,具体的包装为PrintWriterwriter=new PrintWriter(mBufferedReader),这样就得到一个writer对象。
随后通过调用StringBuffer对象的构造函数来构造一个StringBuffer对象,String和StringBuffer他们都可以存储和操作字符串,即包含多个字符的字符串数据;String类是字符串常量,是不可更改的常量,而StringBuffer是字符串变量,它的对象是可以扩充和修改的;具体是通过调用StringBuffer strBuffer=new StringBuffer(),后续通过使用strBuffer对象来将数据进行插入处理。
接下来通过调用strBuffer.append(System.getProperty("line.separator"))函数来向代码中插入一行空格符;再通过调用strBuffer.append("include':"+completeModuleName+"'")在setting.gradle文件中插入include completeModuleName这段代码,表示对module的引入操作,然后再通过调用strBuffer.append(System.getProperty("line.separator"))的方法来插入一行换行。
进而通过调用strBuffer.append("project(':"+completeModuleName+"').projectDir=new File('"+modulePath+"')")的方法来插入目标信息,将其添加到strBuffer中。
随后通过调用writer.write(strBuffer.toString().toCharArray())函数将strBuffer的内容完整的写入到文件中,完成对目标信息的插入。
本申请实施例中,首先建立模块的配置标签,所述配置标签包括总配置标签以及至少一个子配置标签,所述子配置标签建立在所述总配置标签下,所述子配置标签对应有配置信息,所述配置信息包括所述模块的名称信息以及所述模块的路径信息,所述配置信息为XML格式,随后读取所述配置信息,进而,判断所述配置信息中是否包含需要添加的目标信息,若否,则为所述模块配置所述目标信息。通过上述方式,若当前模块的配置信息中不包含需要使用的目标信息,可以为该模块配置该目标信息,无需再依靠人工手动的方式对配置信息进行修改,提高了配置的效率。
上面对本申请实施例中模块的配置方法进行了描述,下面对本申请实施例中模块的配置装置进行描述:
请参阅图2,本申请实施例中模块的配置装置的一个实施例包括:
建立单元201,用于建立模块的配置标签,所述配置标签包括总配置标签以及至少一个子配置标签,所述子配置标签建立在所述总配置标签下,所述子配置标签对应有配置信息,所述配置信息包括所述模块的名称信息以及所述模块的路径信息,所述配置信息为XML格式;
读取单元202,用于读取所述配置信息;
判断单元203,用于判断所述配置信息中是否包含需要添加的目标信息;
配置单元204,用于当所述配置信息中不包含所述目标信息时,为所述模块配置所述目标信息。
可选地,所述读取单元202具体用于:
通过调用saxreader解析器中的函数将所述模块中的file对象转换为document对象;
通过调用所述document对象中的函数获取所述总配置标签;
获取所述子配置标签;
读取与所述子配置标签对应的所述配置信息。
可选地,所述配置单元204具体用于:
建立StringBuffer;
将所述目标信息插入到所述StringBuffer中;
将所述StringBuffer中的所述目标信息添加至所述模块。
可选地,所述判断单元203具体用于:
将所述模块中的file对象转换为bufferedreader对象;
通过调用所述bufferedreader对象中的函数依次读取所述配置信息中的每一行数据;
判断所述每一行数据中是否包含所述目标信息;
若否,则确定所述配置信息中不包含所述目标信息。
可选地,所述模块包括setting.gradle文件及gradle.build文件。
本申请实施例中,模块的配置装置中的各单元具体可以执行图1所示实施例中所执行的全部或部分动作,具体此处不再赘述。
本申请实施例中,建立单元201首先建立模块的配置标签,所述配置标签包括总配置标签以及至少一个子配置标签,所述子配置标签建立在所述总配置标签下,所述子配置标签对应有配置信息,所述配置信息包括所述模块的名称信息以及所述模块的路径信息,所述配置信息为XML格式,随后,读取单元202读取所述配置信息,进而,判断单元203判断所述配置信息中是否包含需要添加的目标信息,若否,则配置单元204为所述模块配置所述目标信息。通过上述方式,若当前模块的配置信息中不包含需要使用的目标信息,可以为该模块配置该目标信息,无需再依靠人工手动的方式对配置信息进行修改,提高了配置的效率。
上面从模块化功能实体的角度对本申请实施例中的模块的配置装置进行了描述,下面从硬件处理的角度对本申请施例中的模块的配置装置进行描述:
请参阅图3,本申请实施例提供了一种模块的配置装置300一个实施例,包括:
输入装置301、输出装置302、处理器303和存储器304(其中处理器303的数量可以一个或多个,图3中以一个处理器303为例)。在本发明的一些实施例中,输入装置301、输出装置302、处理器303和存储器304可通过总线或其它方式连接,其中,图3中以通过总线连接为例,其中,通过调用存储器304存储的操作指令,处理器303,用于执行如下步骤:
建立模块的配置标签,所述配置标签包括总配置标签以及至少一个子配置标签,所述子配置标签建立在所述总配置标签下,所述子配置标签对应有配置信息,所述配置信息包括所述模块的名称信息以及所述模块的路径信息,所述配置信息为XML格式;
读取所述配置信息;
判断所述配置信息中是否包含需要添加的目标信息;
若否,则为所述模块配置所述目标信息。
可选地,读取所述配置信息包括:
通过调用saxreader解析器中的函数将所述模块中的file对象转换为document对象;
通过调用所述document对象中的函数获取所述总配置标签;
获取所述子配置标签;
读取与所述子配置标签对应的所述配置信息。
可选地,判断所述配置信息中是否包含需要添加的目标信息包括:
将所述模块中的file对象转换为bufferedreader对象;
通过调用所述bufferedreader对象中的函数依次读取所述配置信息中的每一行数据;
判断所述每一行数据中是否包含所述目标信息;
若否,则确定所述配置信息中不包含所述目标信息。
可选地,为所述模块配置所述目标信息包括:
建立StringBuffer;
将所述目标信息插入到所述StringBuffer中;
将所述StringBuffer中的所述目标信息添加至所述模块。
可选地,所述模块包括setting.gradle文件及gradle.build文件。
本实施例中,处理器303具体可以执行图1所示实施例中所执行的全部或部分动作,具体此处不再赘述。
本实施例中,处理器303中的具体功能模块划分可以与前述图2中所描述的建立单元、读取单元、判断单元、配置单元等单元的功能模块划分方式类似,此处不再赘述。
请参阅图4,本申请实施例提供了一种电子设备,包括存储器410、处理器420及存储在存储器410上并可在处理器420上运行的计算机程序411,处理器420执行计算机程序411时实现以下步骤:
建立模块的配置标签,所述配置标签包括总配置标签以及至少一个子配置标签,所述子配置标签建立在所述总配置标签下,所述子配置标签对应有配置信息,所述配置信息包括所述模块的名称信息以及所述模块的路径信息,所述配置信息为XML格式;
读取所述配置信息;
判断所述配置信息中是否包含需要添加的目标信息;
若否,则为所述模块配置所述目标信息。
可选地,读取所述配置信息包括:
通过调用saxreader解析器中的函数将所述模块中的file对象转换为document对象;
通过调用所述document对象中的函数获取所述总配置标签;
获取所述子配置标签;
读取与所述子配置标签对应的所述配置信息。
可选地,判断所述配置信息中是否包含需要添加的目标信息包括:
将所述模块中的file对象转换为bufferedreader对象;
通过调用所述bufferedreader对象中的函数依次读取所述配置信息中的每一行数据;
判断所述每一行数据中是否包含所述目标信息;
若否,则确定所述配置信息中不包含所述目标信息。
可选地,为所述模块配置所述目标信息包括:
建立StringBuffer;
将所述目标信息插入到所述StringBuffer中;
将所述StringBuffer中的所述目标信息添加至所述模块。
可选地,所述模块包括setting.gradle文件及gradle.build文件。
本实施例中,处理器420具体可以执行图1所示实施例中所执行的全部或部分动作,具体此处不再赘述。
本实施例中,处理器420中的具体功能模块划分可以与前述图2中所描述的建立单元、读取单元、判断单元、配置单元等单元的功能模块划分方式类似,此处不再赘述。
请参阅图5,图5为本申请实施例提供的一种计算机可读存储介质的实施例示意图。
如图5所示,本实施例提供了一种计算机可读存储介质500,其上存储有计算机程序511,该计算机程序511被处理器执行时实现如下步骤:
建立模块的配置标签,所述配置标签包括总配置标签以及至少一个子配置标签,所述子配置标签建立在所述总配置标签下,所述子配置标签对应有配置信息,所述配置信息包括所述模块的名称信息以及所述模块的路径信息,所述配置信息为XML格式;
读取所述配置信息;
判断所述配置信息中是否包含需要添加的目标信息;
若否,则为所述模块配置所述目标信息。
可选地,读取所述配置信息包括:
通过调用saxreader解析器中的函数将所述模块中的file对象转换为document对象;
通过调用所述document对象中的函数获取所述总配置标签;
获取所述子配置标签;
读取与所述子配置标签对应的所述配置信息。
可选地,判断所述配置信息中是否包含需要添加的目标信息包括:
将所述模块中的file对象转换为bufferedreader对象;
通过调用所述bufferedreader对象中的函数依次读取所述配置信息中的每一行数据;
判断所述每一行数据中是否包含所述目标信息;
若否,则确定所述配置信息中不包含所述目标信息。
可选地,为所述模块配置所述目标信息包括:
建立StringBuffer;
将所述目标信息插入到所述StringBuffer中;
将所述StringBuffer中的所述目标信息添加至所述模块。
可选地,所述模块包括setting.gradle文件及gradle.build文件。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,read-onlymemory)、随机存取存储器(RAM,random access memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。

Claims (10)

1.一种模块的配置方法,其特征在于,包括:
建立模块的配置标签,所述配置标签包括总配置标签以及至少一个子配置标签,所述子配置标签建立在所述总配置标签下,所述子配置标签对应有配置信息,所述配置信息包括所述模块的名称信息以及所述模块的路径信息,所述配置信息为XML格式;
读取所述配置信息;
判断所述配置信息中是否包含需要添加的目标信息;
若否,则为所述模块配置所述目标信息。
2.根据权利要求1所述的方法,其特征在于,读取所述配置信息包括:
通过调用saxreader解析器中的函数将所述模块中的file对象转换为document对象;
通过调用所述document对象中的函数获取所述总配置标签;
获取所述子配置标签;
读取与所述子配置标签对应的所述配置信息。
3.根据权利要求1所述的方法,其特征在于,判断所述配置信息中是否包含需要添加的目标信息包括:
将所述模块中的file对象转换为bufferedreader对象;
通过调用所述bufferedreader对象中的函数依次读取所述配置信息中的每一行数据;
判断所述每一行数据中是否包含所述目标信息;
若否,则确定所述配置信息中不包含所述目标信息。
4.根据权利要求1至3中任一项所述的方法,其特征在于,为所述模块配置所述目标信息包括:
建立StringBuffer;
将所述目标信息插入到所述StringBuffer中;
将所述StringBuffer中的所述目标信息添加至所述模块。
5.根据权利要求1至3中任一项所述的方法,其特征在于,所述模块包括setting.gradle文件及gradle.build文件。
6.一种模块的配置装置,其特征在于,包括:
建立单元,用于建立模块的配置标签,所述配置标签包括总配置标签以及至少一个子配置标签,所述子配置标签建立在所述总配置标签下,所述子配置标签对应有配置信息,所述配置信息包括所述模块的名称信息以及所述模块的路径信息,所述配置信息为XML格式;
读取单元,用于读取所述配置信息;
判断单元,用于判断所述配置信息中是否包含需要添加的目标信息;
配置单元,用于当所述配置信息中不包含所述目标信息时,为所述模块配置所述目标信息。
7.根据权利要求6所述的装置,其特征在于,所述读取单元具体用于:
通过调用saxreader解析器中的函数将所述模块中的file对象转换为document对象;
通过调用所述document对象中的函数获取所述总配置标签;
获取所述子配置标签;
读取与所述子配置标签对应的所述配置信息。
8.根据权利要求6所述的装置,其特征在于,所述配置单元具体用于:
建立StringBuffer;
将所述目标信息插入到所述StringBuffer中;
将所述StringBuffer中的所述目标信息添加至所述模块。
9.一种计算机可读存储介质,包括指令,当所述指令在计算机上运行时,使得计算机执行如权利要求1至5中任意一项所述的方法。
10.一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行如权利要求1至5中任意一项所述的方法。
CN201810720093.3A 2018-07-03 2018-07-03 一种模块的配置方法及相关设备 Pending CN109189490A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810720093.3A CN109189490A (zh) 2018-07-03 2018-07-03 一种模块的配置方法及相关设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810720093.3A CN109189490A (zh) 2018-07-03 2018-07-03 一种模块的配置方法及相关设备

Publications (1)

Publication Number Publication Date
CN109189490A true CN109189490A (zh) 2019-01-11

Family

ID=64948834

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810720093.3A Pending CN109189490A (zh) 2018-07-03 2018-07-03 一种模块的配置方法及相关设备

Country Status (1)

Country Link
CN (1) CN109189490A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114741315A (zh) * 2022-04-28 2022-07-12 深圳市紫光同创电子有限公司 用例更新方法、装置、电子设备及存储介质

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101409709A (zh) * 2008-11-24 2009-04-15 浪潮通信信息系统有限公司 一种通信网管系统中客户端程序的自动发布方法
CN103914327A (zh) * 2014-04-25 2014-07-09 广东威创视讯科技股份有限公司 插件加载方法和插件加载模块
US20150278141A1 (en) * 2014-03-26 2015-10-01 Cae Inc. Configurable input/output unit
CN105955776A (zh) * 2016-04-29 2016-09-21 北京奇虎科技有限公司 应用程序的运行控制方法及装置
CN106055374A (zh) * 2016-06-30 2016-10-26 珠海佳米科技有限公司 配置信息存储方法及装置、配置信息应用方法及装置
CN108021389A (zh) * 2017-11-15 2018-05-11 武汉斗鱼网络科技有限公司 一种Android中引入ARouter的方法及装置

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101409709A (zh) * 2008-11-24 2009-04-15 浪潮通信信息系统有限公司 一种通信网管系统中客户端程序的自动发布方法
US20150278141A1 (en) * 2014-03-26 2015-10-01 Cae Inc. Configurable input/output unit
CN103914327A (zh) * 2014-04-25 2014-07-09 广东威创视讯科技股份有限公司 插件加载方法和插件加载模块
CN105955776A (zh) * 2016-04-29 2016-09-21 北京奇虎科技有限公司 应用程序的运行控制方法及装置
CN106055374A (zh) * 2016-06-30 2016-10-26 珠海佳米科技有限公司 配置信息存储方法及装置、配置信息应用方法及装置
CN108021389A (zh) * 2017-11-15 2018-05-11 武汉斗鱼网络科技有限公司 一种Android中引入ARouter的方法及装置

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
彼扬: "maven 配置多模块项目 pom modules", 《HTTPS://WWW.CNBLOGS.COM/BEYANG/P/6937856.HTML》 *
黎才茂等: "《Java Web开发技术与项目实战》", 31 August 2016 *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114741315A (zh) * 2022-04-28 2022-07-12 深圳市紫光同创电子有限公司 用例更新方法、装置、电子设备及存储介质

Similar Documents

Publication Publication Date Title
US7908594B2 (en) External programmatic interface for IOS CLI compliant routers
US7698694B2 (en) Methods and systems for transforming an AND/OR command tree into a command data model
US7779398B2 (en) Methods and systems for extracting information from computer code
CN101620636B (zh) 一种显示表格数据的方法和装置
US7784036B2 (en) Methods and systems for transforming a parse graph into an and/or command tree
CN110351325B (zh) 一种数据处理方法及相关设备
CN111683066B (zh) 异构系统集成方法、装置、计算机设备和存储介质
CN101329665A (zh) 解析标记语言文档的方法和解析器
CN111209004A (zh) 代码转换方法及装置
WO2007144853A2 (en) Method and apparatus for performing customized paring on a xml document based on application
CN107783967A (zh) 用于自动化的文档翻译的技术
CN109408247A (zh) 交互数据处理方法及装置
CN110297999A (zh) 一种网页模板生成方法及装置、网页加载方法及前端服务器和网站服务器
WO2021079262A1 (en) Automatic delineation and extraction of tabular data using machine learning
CN102647414A (zh) 协议解析方法、设备及系统
KR20160031519A (ko) 파서 생성
CN105005543A (zh) 一种接口生成装置及方法
CN107341027A (zh) 用户界面的生成方法和生成装置
CN115016784B (zh) 低代码应用复用方法、应用解析系统、设备及存储介质
CN107729001B (zh) 一种表达式处理方法和装置
CN114331416A (zh) 数据处理的方法、装置、电子设备及存储介质
CN109189490A (zh) 一种模块的配置方法及相关设备
CN106293862B (zh) 一种可扩展标记语言xml数据的解析方法和装置
KR102407941B1 (ko) Rpc에 기반하여 외부 장치의 함수 또는 프로시저를 호출하는 전자 장치가 사용자 인터페이스를 생성하는 방법, 그 컴퓨터 프로그램 및 그 전자 장치
CN107797793A (zh) 一种构建代理服务器框架的方法和装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
RJ01 Rejection of invention patent application after publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20190111