00:00
请大家继续观看上硅谷格斗技术视频,这节课我们继续对构建脚本中的属性和方法做一个详细说明。首先我们看一下构建脚本中出现的属性,比如说group name version。它们三个类似于以前咱们学过me的group ID artifact ID version啊,类似于中的jav坐标。当然。在ID中,Group和version是存在于build.id文件中的。啊,而这个name,它是存在于settings gradeid文件中的。这是这个整个的项目营市场。再一个还有啊,JDK相关的。比如还有这个字符集相关的来,其实就是这些。比如说这里指令。DDK。编译Java源码时用的是哪个版本?啊,以及生成字节码之后,咱们用的是对应GDP的哪个版本。
01:00
OK啊,然后接着咱们这里还指定了一些字符集信息。比如说我们在这里指定了。针对业务逻辑代码进行解码时的用到的字符集啊,还有一个是针对业务,针对测试代码解码时用到字符集。接着还有编译加入文件时用到的编码的字符集。啊,以及生成Java doc文档的时候。用的的字符集是啥?总之啊,这些写法基本上都是固定的。如果。大家怕出现乱码问题,你就直接把它拿过来就可以了。啊,当然这个版本号你这里可以啊,使用1.8你也可以使用啊。前面咱们提到过的Java。1.8,这样也是可以的。OK啊。这是JDK及字符集问题。
02:01
然后这里有两个提示,他说。ID中的group name version类似于中的group artifact ID和version。然后这个encoding是用来解决业务逻辑代码和测试代码中文转码问题的。就是大家写业务逻辑代码的过程中,哪怕你在注释里边。这个使用了这种注释。只要出现中文,它都有可能出现中文乱码啊,如果出现了中文乱码,你就把这些粘贴过来就得了。接着是。看一下构建脚本中的方法,首先我们看repository。来,直接拿过来。这个repository,它本质也是product对象的一个方法。然后在里边我们可以配置多个仓库。默认情况下,C会按照从上到下的顺序依次去指定的仓库中去找。
03:06
需要的价包。如果在上面的仓库中能找到对应的夹包,他就要停止搜索,不再搜索下边的仓库。如果上面的仓库搜索不到咱们想要的价包,它会继续往下收货。一直搜索到想要的这个价包。如果搜索到最后一个仓库,依旧没有搜索到想要的价位,那他就会啊报错。当然。Grid它支持使用仓库,可以使用相对路径的方式,也可以使用啊绝对路径的方式,比如咱们这里用的相对路径,而上面这个用的fail协议的啊,指定绝对路径。同时也支持去marvi中央仓库去下载,或者说谷歌仓库。总之。这里它支持多种仓库,这些仓库你可以啊,都写上。
04:01
如果我们都写上,它是按照从上到下的顺序去查找。这是grid中的。仓库。接着我们提一下sub productctx和products。从这个名字上咱们就能看出,Sub products是针对当前工程底下所有的子工程设置的。而our product是针对啊所有工程,包括根工程和根工程底下的子工程。而呢,它只包含子工程,不包含。根工程。OK啊,然后咱们这里给大家举了一个案例。来,我们复制过来。比如。嗯,我把上面这个先注释掉。我如果用opera。它是会对根工程及根工程底下各个子工程。
05:02
啊,都创建一个hello任务。啊,然后在这个任务里边输出。这个当前product的名字。来,咱们试一下。找到这个terminal,然后执行clean。然后执行great build。这个great Bill的指令。他会让他执行啊,或者说输出当前所有项目的名字。嗯。来,你看这里。我们来看一下。我们如果让这个任务执行的话,我们可以这样整。
06:01
任务执行我就可以啊。创建任务之后,直接在他的。配置段里边执行。下边这个行为我先给它注掉,或者说去掉。然后在这里我直接让他输出姓名就可以了。啊,此时我们再来试,你再看。这样他就把。根工程及根工程底下各个子工程的项名都输出了。如果这个product,我们换成sub products。那他只会输出根工程底下所有子工程的项目名。此时,我们再来看。你会发现,这一次他并没有输出根工程的项名。啊,它只是输出根工程底下子工程的项目。继续。如果我们在根工程中配置repository和depends,它只是针对根工程有效,说白了就是这个。
07:06
如果这个depends,或者说这个repositories,咱们是在根工程这里配置的,那它只是啊根工程有效。那根工程底下的子工程。是。没有效果了。OK。再一个咱们也可以啊,对单个product进行单独的设置。比如我可以在根工程对根工程底下的某个子工程。进行一个设置。啊,我可以通过product,然后让它定位某个子工程,需要注意这个子工程的名字必须是出现在settingsid文件中的,比如说sub product01。啊,直接复制过来,然后CTRL为粘贴。这样根工程就去根工程底下找一个名字为S01的这样一个子工程。当然查找的时候,他可以根据这种名字直接查找,也可以根据路径进行查找。
08:05
啊,实际上本质都是一样的。OK啊,然后找到这个子工程之后,咱们可以单独给这个子工程加一个依赖信息,比如我们现在刷新看一下这个子工程现在有没有对应的依赖信息。你会发现sub product01底下,它没有专门针对业务逻辑代码所需要的依赖。咱们现在给他加一个。我在这里定位到它之后,然后给它加个依赖,加依赖我就放在。Depends下边就得了。这样我们就对sub product01这个工程给它加了一个har car这个依赖,此时我们刷新你再看。
09:03
然后他这里报一个错,说这个implementation有问题。这是因为咱们要给它加依赖的话,这个implementation它是由Java插件提供的,所以咱们这里还得给他准备一个Java插件。用apply plug。Java就可以了。此时我们再来。刷新。这一次你再看PRODUCT01,它底下就多了一个。Call这样一个依赖。总之,通过这种方式,我们可以在根工程中对根工程以及根工程底下的某个子工程做一些特殊的设置。比如说我给他加依赖,比如说给他,让他依赖某个特定的仓库。啊,都是可以的。甚至你还可以啊,在这里给这个子工程指定它的group或者信息也都是可以的。
10:10
OK啊,行。这个后边咱们也会用到。这样我们先停一下。
我来说两句