项目构建工具
2021-06-17 15:58:13 0 举报
AI智能生成
maven gradle
作者其他创作
大纲/内容
项目构建工具
maven
简化构建过程 + 提供统一的构建系统
基础
坐标
groupId
artifactId
version
scope
compile
默认的依赖有效范围。此种依赖,在编译、运行、测试时均有效。
provided
在编译、测试时有效,但是在运行时无效。例如:servlet-api,运行项目时,容器已经提供,就不需要Maven重复地引入一遍了。
runtime
runtime :在运行、测试时有效,但是在编译代码时无效。例如:JDBC驱动实现,项目代码编译只需要JDK提供的JDBC接口,只有在测试或运行项目时才需要实现上述接口的具体JDBC驱动。
test
只在测试时有效
system
从参与度来说,也provided相同,不过被依赖项不会从maven仓库抓,而是从本地文件系统拿,一定需要配合systemPath属性使用。
特性
依赖传递
依赖冲突
第一声明者优先原则
使用路径优先者原则
排除依赖 exclusions标签
版本锁定(常用)
1. 在dependencyManagement标签中锁定依赖版本
2. 在dependencies 中导入maven坐标
注:dependencyManagement 只是锁定版本,并没有导入依赖的jar包。具体的jar包导入仍需要在dependencies 标签中声明。
命令
validate
验证项目是否正确
编译项目的源代码
使用合适的单元测试框架测试编译的源代码。这些测试不应该要求代码被打包或部署
clean
清空target目录
package
打包项目,生成 jar 包 或 war 包到 target 目录
install
将项目打成 maven 放入本地 maven 仓库
deploy
将项目发布到远程 maven 仓库
site
生成项目文档,运行 mvn site 命令会在 target/site/目录下生成文件
maven本地仓库
cd maven_home
vim conf/setting.xml
找到并修改<localRepository>你想存放的本地仓库路径</localRepository>
Maven配置阿里云镜像
<mirrors> <mirror> <id>nexus-aliyun</id> <mirrorOf>*</mirrorOf> <name>Nexus aliyun</name> <url>http://maven.aliyun.com/nexus/content/groups/public</url> </mirror> </mirrors>
gradle
一个基于 JVM 的富有突破性构建工具一个像 ant 一样,通用的灵活的构建工具一种可切换的,像 maven 一样的基于约定约定优于配置的构建框架强大的多工程构建支持强大的依赖管理(基于 ApacheIvy)对已有的 maven 和 ivy 仓库的全面支持支持传递性依赖管理,而不需要远程仓库或者 pom.xml 或者 ivy 配置文件ant 式的任务和构建是 gradle 的第一公民基于 groovy,其 build 脚本使用 groovy dsl 编写具有广泛的领域模型支持你的构建
构建基础
Projects
任何一个 Gradle 构建都是由一个或多个 projects 组成。每个 project 包括许多可构建组成部分。
tasks
每个 project 都由多个 tasks 组成。每个 task 都代表了构建执行过程中的一个原子性操作。如编译,打包,生成 javadoc,发布到某个仓库等操作。
使用
代码即脚本, Gradle 脚本采用 Groovy 书写。
快速定义任务
task hello { println 'Hello world!'}
任务之间依赖
假设task-hello在task-intro之前已定义: task intro(dependsOn: hello) << { println \"I'm Gradle\" }假设task-hello在task-intro之前还没定义: task intro(dependsOn: 'hello') << { println \"I'm Gradle\"}
任务操纵
一旦任务被创建后,任务之间可以通过 API 进行相互访问。
span style=\"font-size: inherit;\
任务属性
访问任务的属性
${taskName}.{taskPropertyKey}
为任务增加自定义属性
在任务中使用ext.**赋值即可task myTask { ext.myProperty = \"myValue\" }
任务排序
假设任务taskX,taskY已定义taskY.mustRunAfter taskX
调用 Ant 任务
Ant 任务是 Gradle 中的一等公民。Gradle 借助 Groovy 对 Ant 任务进行了优秀的整合。Gradle 自带了一个 AntBuilder,在 Gradle 中调用 Ant 任务比在 build.xml 中调用更加的方便和强大。
使用外部构建脚本配置项目
apply from: 'other.gradle'
java构建
大部分 Java 项目基本流程都是相似的:编译源文件,进行单元测试,创建 jar 包。使用 Gradle 做这些工作不必为每个工程都编写代码。Gradle 已经提供了完美的插件来解决这些问题。
基础使用
采用 Java 插件
apply plugin: 'java'定义一个 Java 项目只需如此而已。这将会为你添加 Java 插件及其一些内置任务。
标准目录结构:project +build +src/main/java +src/main/resources +src/test/java +src/test/resources Gradle 默认会从 src/main/java 搜寻打包源码,在 src/test/java 下搜寻测试源码。src/main/resources 下的所有文件按都会被打包,所有 src/test/resources 下的文件 都会被添加到类路径用以执行测试。所有文件都输出到 build 下,打包的文件输出到 build/libs 下。
构建 Java 项目
gradle build编译并执行单元测试,并且将 src/main/* 下面 class 和资源文件打包
gradle clean删除 build 目录以及所有构建完成的文件
gradle assemble编译并打包 jar 文件,但不会执行单元测试。
gradle check编译并测试代码
外部依赖
添加 Maven 仓库
repositories { mavenLocal() mavenCentral() maven { url \"http://repo.mycompany.com/maven2\" }}
添加依赖
font color=\"#b71c1c\
定制项目
Java 插件为你的项目添加了众多默认配置。这些默认值通常对于一个普通项目来说已经足够了。但如果你觉得不适用修改起来也很简单。
指定坐标信息
group 'com.org'version '1.0-SNAPSHOT'------Maven的artifactId是Gradle内部的项目名称,它是从项目的目录名称派生的
指定jdk版本
sourceCompatibility = 1.5
targetCompatibility = 1.8
定制 MANIFEST.MF 文件
jar { font color=\"#b71c1c\
测试阶段加入一个系统属性
test { systemProperties 'property': 'value'}
多项目构建
定义一个多项目构建工程需要在根目录创建一个setting 配置文件来指明构建包含哪些项目。并且这个文件必需叫 settings.gradle
settings.gradle 中指明构建include \"shared\
多项目公共配置
subprojects { apply plugin: 'java' repositories { mavenCentral() } version = '1.0'}
依赖配置
依赖等级
用来编译项目源代码的依赖.
testCompile
测试期编译需要的附加依赖
testRuntime
运行测试所需要的依赖. 包含上面的依赖.
定义外部依赖
dependencies { compile font color=\"#4caf50\
dependencies { compile 'org.hibernate:hibernate-core:3.6.7.Final'}
打包发布
apply plugin: 'maven'uploadArchives { repositories { mavenDeployer { repository(url: \"file://localhost/tmp/myRepo/\") } }}
Gradle 命令行的基本使用
多任务调用
gradle compile test 命令会依次调用,并且每个任务仅会被调用一次
任务依赖
排除任务
gradle dist -x test
失败后继续执行
gradle test --continue
获取构建信息
项目列表
gradle projects
任务列表
gradle tasks
依赖列表
gradle dependencies
属性列表
gradle properties
构建环境
通过 gradle.properties 配置构建环境在gradle.properties中定义GRADLE_OPTS 或 JAVA_OPTS的相关配置,这些配置将会按以下顺序被应用:位于项目构建目录的gradle.properties。位于gradle 用户主目录的gradle.properties。系统属性,例如当在命令行中使用 -Dsome.property 时。
通过代理访问网站
systemProp.http.proxyHost=www.somehost.orgsystemProp.http.proxyPort=8080systemProp.http.proxyUser=useridsystemProp.http.proxyPassword=passwordsystemProp.http.nonProxyHosts=*.nonproxyrepos.com|localhost systemProp.https.proxyHost=www.somehost.orgsystemProp.https.proxyPort=8080systemProp.https.proxyUser=useridsystemProp.https.proxyPassword=passwordsystemProp.https.nonProxyHosts=*.nonproxyrepos.com|localhost
gradle插件开发
使用 Java 语言编写 Gradle 插件
0 条评论
回复 删除
下一页