2. gradle构建学习系列

目录

  1. 1. gradle构建学习系列
  2. 2. gradle构建学习系列
  3. 3. gradle构建学习系列

上一篇: https://www.jianshu.com/p/79bbb616981d

11. SourceSet的作用

SourceSet可以用于修改源文件目录结构,
java插件默认实现了两个SourceSet,main和test。

src {
   main{
      java
      res
   }
   test{
      java
      res
   }
}

修改:

sourceSets {
// 这个为别名
    api
    main {
        java {
            srcDir 'java-sources'
        }
        resources {
            srcDir  'resources'
        }
    }
}

sourceSets {
    main {
        compileClasspath = compileClasspath + files(api.output.classesDirs)
    }
    test {
        runtimeClasspath = runtimeClasspath + files(api.output.classesDirs)
    }
}

12. gradle的常见命令

$ gradle init --type pom
Maven项目转换Gradle(在需要转换的根目录下执行此命令)
$ gradle build -x test
gradle 跳过测试直接编译
$ gradle idea
根据build.gradle和setting.gradle文件生成idea项目
$ gradle init --type java-application
创建一个gradle Demo的项目
$ gradle tasks --all
查看此项目有哪些任务如上,但上面的命令只能看到有group的,如果查看全部的任务需要使用参数all
$ gradle build
构建并单元测试
$ gradle build -x test
只构建不执行单元测试
$ gradle test
执行单元测试
$ gradle run
运行
$ gradle clean
删除build目录
$ gradle jar
打jar包
$ gradle clean war
打war包

13. gradle build之后成为jar还是war包

gradle clean war, gradle clean jar可以将其打成war包 或者jar包

14. 关于gradle wrapper 自定义问题

在build.gradle中添加 task wrapper(type: Wrapper) {.. 运行出现错误Cannot add task 'wrapper' as a task with that name already exists.。
解决方法:
在gradle 4 .8 以后,官方不再允许覆盖内置的构建任务:wrapper, init, help, tasks, projects, buildEnvironment, components, dependencies, dependencyInsight, dependentComponents, model, properties.

15. Gradle Wrapper

https://www.jianshu.com/p/d23ceed8f19d

  • Wrapper是对Gradle的一层包装,便于在团队开发过程中统一Gradle构建的版本
  • Wrapper启动Gradle时会检查Gradle有没有被下载关联,若没有就会从配置的地址下载并运行构建。
//file:build.gradle
task createWrapper(type: Wrapper) {
    gradleVersion = '0.9-preview-1'
}
然后执行:
gradle createWrapper
目录下会生成

16. 加入本地jar文件

dependencies {
   compile files('spring-core.jar', 'spring-aap.jar')
   compile fileTree(dir: 'deps', include: '*.jar')
}

17. gradle 提示 : Plugin with id 'jetty' not found.

https://blog.csdn.net/sino_crazy_snail/article/details/79300058
添加如下代码:

buildscript {
  repositories {
    maven {
      url "https://plugins.gradle.org/m2/"
    }
  }
  dependencies {
    classpath "gradle.plugin.org.akhikhl.gretty:gretty:2.0.0"
  }
}
 
apply plugin: "org.akhikhl.gretty"

18. project 的name 有什么决定

项目/Project

一个项目代表一个组件(jar/war包),构建启动后Gradle会根据build.gradle实例化一个org.gradle.api.Project类

project属性
group/name(artifact)/version
属性的其他设置方法:ext或者直接在gradle.properties里面读取(一定是此名称)
project方法
apply 应用插件
dependencies 添加依赖
repositories 添加仓库
task 定义任务

19. 引入jetty包,启动报错

ASM ClassReader failed to parse class file- probably due to a new Java class file version that isn't supported yet问题

ASM ClassReader failed to parse class file- probably due to a new Java class file version that isn't supported yet问题

主要是spring 3 不支持jdk1.8 , 支持jdk1.7, 如果需要,需将spring 升级到4

20. dependencies{}

我们平时用的最多的大概就这个了,

  • compile fileTree(include: [‘.jar’], dir: ‘libs’)*,这样配置之后本地libs文件夹下的扩展名为jar的都会被依赖,非常方便。
  • 如果你要引入某个本地module的话,那么需要用compile project(‘×××’)。
  • 如果要引入网上仓库里面的依赖,我们需要这样写compile group:’com.squareup.okhttp3’,name:’okhttp’,version:’3.0.1’,当然这样是最完整的版本,缩写就把group、name、version去掉,然后以”:”分割即可。
    compile ‘com.squareup.okhttp3:okhttp:3.0.1’


    2. gradle构建学习系列_第1张图片
    2

注意dependencies的类型, 主要是compile, testCompile, runtime, implementation, provides, api
compile 在前,
testCompile在后, runtime在后

Gradle 使用技巧(三) - dependencies 的类型与区别
这篇文章讲解的知识只需要查看dependencies的类型。

PS: 若你觉得可以、还行、过得去、甚至不太差的话,可以“关注”一下,就此谢过!

你可能感兴趣的:(2. gradle构建学习系列)