如果用户在 UNIX 操作系统上执行了一个程序,那么操作系统会为这个程序创建一个运行它的特定环境。这个环境包含系统运行该程序所需的一切资源,使得好像系统中没有运行其他程序一样。 用户如果在 UNIX 操作系统中输入一个指令,操作系统就会创建(启动)一个相应的进程。比如,如果用户希望使用 ls 指令来列出目录内的文件列表时,系统就启动了一个进程来完成这个任务。
你可以连接两个命令在一起,这样一个程序的输出就可以作为下一个程序的输入。两个或两个以上的命令以这种方式连接形成一个管道。为了形成管道,在同一行中利用一个竖线(|)将两个命令隔开。如果一个程序将另一个程序的输出作为输入数据,接着对输入的数据执行一些操作,并将结果写入标准输出,它就称为一个过滤器。grep 命令grep 程序用固定的模式搜索一个文件或多个文件。
文件所有权是 UNIX 的一个重要的组成部分,提供了一种安全的方法来存储文件。在 UNIX 中每个文件有以下属性:所有者权限:所有者的权限决定文件的所有者可以对文件执行的操作。组权限:组权限决定了属于该组的成员对他所拥有的文件能够执行的操作。其他人权限:其他人权限表示其他所有人对于该文件能够进行的操作。
配置构建环境Gradle 提供几个选项,使它容易配置将用于执行构建的 Java 进程。同时可以通过 GRADLE_OPTS 或 JAVA_OPTS 配置这些在你本地环境,包含的设置包括比如 JVM 内存设置,Java home,守护进程开/关,它们可以和你的项目在你的版本控制系统中被版本化的话,将会更有用,这样整个团队就可以使用一致的环境了。在你的构建当中,建立一致的环境,就和把这些配置放进 gradle.
走进守护进程Gradle 守护进程(有时也称为构建守护进程) 的目的是改善 Gradle 的启动和执行时间。我们准备了几个守护进程非常有用的用例。对于一些工作流,用户会多次调用 Gradle,以执行少量的相对快速的任务。举个例子:当使用测试驱动开发时,单元测试会被执行多次。当开发一个 web 应用程序中,应用程序会被组装多次。
Gradle 提供了对 Ant 的优秀集成。可以在你的 Gradle 构建中,使用单独的 Ant 任务或整个 Ant 构建。事实上,你会发现在 Gradle 中使用 Ant 任务比使用 Ant 的 XML 格式更容易也更强大。你甚至可以只把 Gradle 当作一个强大的 Ant 任务脚本的工具。Ant 可以分为两层。第一层是 Ant 的语言。它提供了用于 build.xml,处理的目标,特殊的构造方法比如宏,还有其他等等的语法。
大多数构建工作都要使用到文件。Gradle 添加了一些概念和 API 来帮助您实现这一目标。定位文件使用 Project.file() 方法来定位相对于 project 目录相关的文件。Example 16.1. Locating filesbuild.gradle // Using a relative path 使用相对路径 File configFile = file('src/config.
本章介绍了 Gradle 命令行的基本知识。正如在前面的章节里你所见到的, 调用 gradle 命令来执行构建。执行多 task同个构建可以执行多个 task ,通过再命令行 列出每个 task。举例,命令gradle compile test 将会执行 compile 和 test 两个 task。Gradle 将会按顺序执行 命令行每个列出的 task,并且执行每个 task 的依赖。
下面的例子中有一些重要的自定义选项例25.2.定制War插件build.gradleconfiguration{ moreLibs}respositories{ faltDir {dirs "lib"} mavenCentral()}dependencies{ compile module(":compile:1.0") { dependency ":compile-transitive-1.0@jar" dependency ":providedCompile-transitive:1.0@jar" } providedCompile "javax.
War任务默认会把src/main/webapp的内容复制到归档目录的根目录.webapp文件夹下会包含一个WEB-INF子文件夹,里面可能会有一个web.xml文件.编译后的class文件会在WEB-INF/classes下,所有runtime[13]的依赖配置会被拷贝至WEB-INF/lib下.API文档中有更多关于War的信息.[13]runtime配置扩展了compile配置.
表25.4.War插件-目录配置属性名称类型默认值描述webAppDirNameStringsrc/main/webapp在项目目录的web应用的资源文件夹名webAppDirFile (read-only)projectDir/webAppDirNameWeb应用的资源路径这些属性由一个WarPluginConvention公共对象提供
War插件增加了名为providedCompile和providedRuntime的两个依赖配置.这两个配置有相同的作用域在编译或者运行时的配置,不同之处在于是否会将war文件归档.很重要的一点是它们都会提供配置传递.比如在任意的provided配置中添加了commons-httpclient:commons-httpclient:3.0,该依赖依赖于commons-codec,因为这个一个"provided"
表25.3.War插件-项目布局文件夹含义src/main/webappWeb应用资源
<<<<<<< HEADWar插件会添加下列任务到项目.表25.1.War插件-任务任务名依赖类型描述warcompileWar组装应用程序War文件War插件由Java插件添加下列依赖任务.表25.2.War插件-附加的依赖任务任务名依赖assemblewar图25.1.War插件-任务a655fa4be4421004591827ae70fee579703794dd
<<<<<<< HEAD使用war插件需要在构建脚本下包括以下内容例25.1.使用war插件build.gradleapply plugin 'war'a655fa4be4421004591827ae70fee579703794dd
22.13.1.执行测试测试从main构建过程中分离出来的,运行在一个单独的JVM中执行.Test任务允许控制这些如何发生. 有许多属性用于控制测试过程如何启动.这包括使用诸如系统属性,JVM参数和Java可执行文件。可以指定是否要并行执行测试.Gradle通过同时运行多个测试进程提供并行执行测试.
test任务是Test的一个实例.它会在测试source set自动检测并执行所有的单元测试,并且在测试执行完成后会生成一份测试报告.task任务支持JUnit和TestNG.在Test查看完整地API.
Java 插件使用 Copy 任务处理资源. 它为项目每个 source set 都增加了一个实例. 可以参考Section 15.6, "Copying files" 获取关于copy任务的信息.表22.12.java 插件- ProcessResources 的属性任务属性类型默认值srcDirsObject.可以在Section 15.5, “Specifying a set of input files”中查看使用什么sourceSet.resourcesdestinationDirFile.
clean 任务是一个 Delete 的实例. 它只是删除 dir 属性指定的目录.表22.11.java 插件 - Clean 的属性任务属性类型默认值dirFilebuildDir
Javadoc task 是 Javadoc 的一个实例. 它支持 Javadoc 的核心选项和可执行的 Javadoc 的 reference documentation 中描述的标准 J avaTOC 的选项. 有关支持 Javadoc 选项的完整列表, 请参阅以下类的API文档:CoreJavadocOptions 和 StandardJavadocDocletOptions.表22.10.java 插件- javadoc 配置任务属性类型默认值classpathFileCollectionsourceSets.main.
关注时代Java