一:Maven
1.Maven概念
是Apache下的一个纯Java开发的开源项目。Maven是一个项目管理工具,可以对Java项目进行构建、依赖管理。
2.约定配置
Maven提倡使用一个共同的标准目录结构,Maven 使用约定优于配置的原则
3.Maven POM
POM(Project Object Model,项目对象模型)是Maven工程的基本工作单元,是一个XML文件,包含了项目的基本信息,用于描述项目如何构建,声明项目依赖,等等。
执行任务或目标时,Maven会在当前目录中查找POM。它读取POM,获取所需的配置信息,然后执行目标。
POM中可以指定一下配置:
项目依赖,插件,执行目标,项目构建profie,项目版本,项目开发者列表,相关邮件列表信息。
所有POM文件都需要project元素和三个必需字段:groupId,artifactId,version
4.Maven生命周期
5.Maven仓库
Maven仓库是项目中依赖的第三方库,这个库所在的位置叫做仓库。在Maven中,任何一个依赖、插件或者项目构建的输出,都可以称之为构件。
Maven 仓库有三种类型:
本地(local)
中央(central)
远程(remote)
6.Maven引入外部依赖
要添加依赖项,我们一般是先在src文件夹下添加lib文件夹,然后将工程需要的jar文件复制到lib文件夹下;然后添加依赖到pom.xml文件中
7.Maven依赖管理
(1)可传递性依赖发现
一种相当常见的情况,比如说A依赖于其他库B。如果,另外一个项目C想要使用A,那么C项目也需要使用库B。Maven可以避免去搜索所有所需库的需求。Maven通过读取项目文件(pom.xml),找出它们项目之间的依赖关系
任何可传递的依赖都可以通过"exclusion"元素被排除在外;任何可传递的依赖可以被标记为可选的,通过使用"optional"元素。
(2)依赖范围
maven的依赖范围包括:compile,provide,runtime,test,system
1>compile:表示编译范围,指A在编译时依赖B,该范围为默认依赖范围。编译范围的依赖会用在编译,测试,运行
,由于运行时需要,所以编译范围的依赖会被打包。
2>provided:provied依赖只有当jdk或者一个容器已提供该依赖之后才使用。provide依赖在编译和测试时需要,在
运行时不需要。例如:servlet api被Tomcat容器提供了。
3>runtime:runtime依赖在运行和测试系统时需要,但在编译时不需要。例如jdbc的驱动包。由于运行时需要,所以
runtime范围的依赖会被打包。
4>test:test 范围依赖在编译和运行时都不需要,只在测试编译和测试运行时需要。例如:Junit。由于运行时不需
要,所以test范围依赖不会被打包。
5>system:system范围依赖与provide类似,但是必须显示的提供一个对于本地系统中 jar 文件的路径。一般不推
荐使用。
二:Gradle
1.Groovy概述
Groovy是一种基于Java平台的面向对象语言
**2.Gradle是基于JVM的富有突破性构建工具
3.Gradle特性**
(1)基于声明构建和基于约定构建
(2)为以依赖为基础的编程方式提供语言支持
(3)构建结构化
(4)深度API
(5)Gradle有良好扩展性
(6)多项目构建
(7)多种方式管理依赖
(8)Gradle是第一个构建集成工具
(9)易于移植
(10)Groovy
(11)Gradle wrapper
(12)自由和开源
4.标准结构
project root
src/main/java(测试)
src/main/resources
src/test/java(测试源码目录)
src/test/resources(测试资源目录)
src/main/webapp(web工程)
5.Gradle脚本
一个简单的Gralde脚本,或许包含如下内容,其中标明可选的都是可以删掉的部分
插件引入:声明你所需的插件
属性定义(可选):定义扩展属性
局部变量(可选):定义局部变量
属性修改(可选):指定project自带属性
仓库定义:指明要从哪个仓库下载jar包
依赖声明:声明项目中需要哪些依赖
自定义任务(可选):自定义一些任务
6.Gradle依赖管理
(1)项目的依赖
(2)发布
依赖声明:
apply plugin: 'java'
repositories {
mavenCentral()
}
dependencies {
compile group: 'org.hibernate', name: 'hibernate-core', version: '3.6.7.Final'
testCompile group: 'junit', name: 'junit', version: '4.+'
}
依赖配置:
1>compile
编译范围依赖在所有的classpath 中可用,同时它们也会被打包
2>runtime
runtime依赖在运行和测试系统的时候需要,但在编译的时候不需要。比如,你可能在编译的时候只需要JDBC API JAR,而只有在运行的时候才需要JDBC驱动实现
3>testCompile
测试期编译需要的附加依赖
4>testRuntime
测试运行期需要
外部依赖:由外部构建或者在不同的仓库中
1>定义
dependencies {
compile group: 'org.hibernate', name: 'hibernate-core', version: '3.6.7.Final'
}
外部依赖包含group,name和version几个属性。根据选取仓库的不同,group和version也可能是可选的。
仓库:Gradle是在一个被称之为仓库的地方找寻所需的外部依赖。仓库即是一个按group,name和version规则进行存储的一些文件
1>使用Maven中央仓库
repositories {
mavenCentral()
}
2>使用Maven远程仓库
repositories {
maven {
url "http://repo.mycompany.com/maven2"
}
}
打包发布:
1>发布到Maven仓库
apply plugin: 'maven'
uploadArchives {
repositories {
mavenDeployer {
repository(url: "file://localhost/tmp/myRepo/")
}
}
}
项目依赖:依赖存在于本地文件系统中
dependencies {
// 指定多个依赖
compile files('hibernate.jar', 'libs/spring.jar')
// 读取lib文件夹下的全部文件作为项目依赖
compile fileTree('libs')
// 根据指定基准目录\包含\排除条件加载依赖
compile fileTree(dir:'libs',include:'spring*.jar',exclude:'hibernate*.jar')
}
排除依赖:可以通过configuration配置或者在依赖声明时添加exclude的方式来排除指定的引用。
7.Gradle插件
(1)Gradle java插件
apply plugin: 'java'
(2)Gradle groovy插件
apply plugin: 'groovy'
(3)Gradle scala插件
apply plugin: 'scala'
(4)Gradle war插件
apply plugin: 'war'
(5)Gradle ear插件
apply plugin: 'ear'
(6)Gradle jetty插件
apply plugin: 'jetty'
(7)Gradle checkstyle插件
apply plugin: 'checkstyle'
使用Checkstyle对项目的Java源文件执行质量检查,并从检查结果中生成报告
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。