動態

詳情 返回 返回

Maven和Gradle包管理 - 動態 詳情

一: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源文件執行質量檢查,並從檢查結果中生成報告

user avatar feipeng123s 頭像 zhangfeidezhu 頭像 crmeb 頭像 7mandy7 頭像 songzihuan 頭像 daniuge 頭像 risejl 頭像
點贊 7 用戶, 點贊了這篇動態!
點贊

Add a new 評論

Some HTML is okay.