[ gradle ] 理解task project 和 dependency management
1. CLI创建一个gradle项目
mkdir project
git init
git status
echo '#description' > README.md
写描述文件
git add .
git diff --cached
查看stating和history的区别
git commit -m "chore: explain "
gradle init
#选择project类型: application, 选择语言:java, 选择是否多个子项目:no, 选择DSL语言 Groovy; 选择测试框架: Jupiter ; projectname, source package: 修改为自己的项目包名 com....;
结束后查看 brew install tree , tree . 查看文件结构,生成app, appTest
cd app
./gradlew app:dependencies
# 查看依赖信息
./gradlew app:run
or :app:run
2. Shortcut
Shift Command o
#通过文件名查找文件
Command 1
#去左上角的主菜单,及project的目录部分
Command 4
#去下方run的窗口
Shift Command '
#maximize此窗口
Option Command L
#format代码
操作: Shift Command up/down # 移动一行上下
导航: Ctrl Shift up/down # 下一个方法
Ctrl + T # refactor this!!!! delegate, IPO etc.
Ctrl + O # override a method
复制一行,任意位置直接Command+ C
Ctrl+ Option+ O # 优化import
Shift + Command + F # 用关键字在所有文件中寻找
3. Gradle and Wrapper
重要概念: task和project
3.1 build tool:
gradle wrapper 包裹gradle版本号, 指定要下载的gradle版本,位置: gradle/wrapper/gradle-wrapper.properties
文件中: 下载地址: distributionBase 和 distributionPath 的拼接
第一个默认为 ~/
3.2 查看当前项目使用的gradle版本
: 1. 去配置文件 2. gradlew -v
3. 3 改变当前项目中的gradle版本
: 修改文件, 命令, build.gradle配置
3. 4 Task
gradle 后面的命令可以成为task, 一个task是指一个最小的动作, 可以是构建, 打包, 初始化等
./gradlew clean #清理构建产物
./gradlewbuild #构建
./gradlew test #运行测试
./gradlew tasks #查看所有的task
./gradlew help --task taskName #查看某个task的帮助信息
每次的构建产物都放在build文件夹下
java经典流程:
如果有多个task相互依赖, 使用链式执行:
./gradlew build --dry-run # 可以用于查看此task所依赖的其他task(干跑)
如果只修改了配置信息, 没有修改代码,不想重新运行test task, 可以使用:
来排除test任务, 如果有多个需要排除, 可以使用 -x taskname1 -x taskname2
跟在后面。
3. 5 Project
如果是一个multi-project, 可以在每个sub-project下面放一个build.gradle,每一个sub项目中的gradle会继承总的, 放在父目录下的gradle文件。 settings.gradle文件也很重要(有子项目的名字)
此时, 当在父目录下运行: ./gradlew run
, 所有的sub项目都会运行
如果只想运行其中一个: .gradlew projects
可以查看multi项目所有的项目路径,
./gradlew help --task run
可以查看run这个task所包含的所有可执行命令(把每一个sub-project的run的path打印出来)
./gradlew :app:run
第一个:可以省略 ---->. ./gradlew app:run
新建一个sub-project: mkdir, create一个build.gradle在dir中, 在settings.gradle中添加子项目名字。
4. dependency management
4.1 坐标
引用坐标: coordinates
commons-cli:commons-cli:1.4
规则: group(或者公司域名):artifact(项目子模块/项目名):version
eg:
4.2 dependency的关键字:
api: 可以调用当前库和当前库所依赖的裤的方法
implementation: 只能使用此包的方法, 不能调用这个包所依赖的其他库里面的方法
testImplementation: 测试时才可以用, 并只能调用此包的方法, 不能调用这个包所依赖的包
runtime/compile etc.
4.3 dependency conflict:
-
统一版本管理 config.gradle
-
某个包所依赖的包和我们自己项目中使用的包版本冲突, 可以使用exclude去重。
- 强制使用某版本依赖