跳到主要內容

Gradle(15)–– 深入Gradle專案

目標
本章深入介紹多個專案、屬性管理和日誌功能三方面討論,多個專案建置會由一個主專案的build.gradle
編譯各個子專案模組。這樣方便管理每個專案的功能。

  • War plugin

網頁專案通常會打包成.war或是.ear的檔案形式,在.gradle需要加入下列任務後,在建構的過程中,war會
取代原先的jar任務,

apply plugin : "war"    //打包為.war檔案
apply plugin : “ear”     //打包為.ear檔案

使用gradle建構網頁專案,在src/main/java裡面為java檔、/src/main/webapp為jsp檔與WEB-INF檔案

image

在war plugin裡面增加providedCompile和providedRuntime跟java plugin的complie和runtime相同,於不同的地方
它不會為打包入war檔案中,下面為例servlet-api:2.5將不會被打包進去WEB-INF/lib/裡面,因為這些在tomcat的
lib就有提供。

apply plugin: “war”

repositories{
   mavenCentral()
}

dependencies{
    providedCompile "javax.servlet:servlet-api:2.1"

}

 

apply plugin: 'war'

webAppDirName="WebContent"

repositories {
     mavenCentral()
}
dependencies {
      providedCompile "javax.servlet:servlet-api:2.1"

}

war{
    baseName = "simpleapp"
    version = "1.0"
    extension = "war"
    includeEmptyDirs = false
}

 

  • 日誌

日誌可以提供開發者方便區分資訊分級程度,

日誌層級 描述
ERROR 錯誤資訊
QUIET 使用者資訊
WARNING 警告資訊
LIFECYCLE 程序資訊(預設)
INFO 一般資訊
DEBUG 所有資訊

task showLogging << {
println "This is println example"
    logger.error "This is error message"
    logger.quiet "This is quiet message"
    logger.warn "This is WARNING message"
    logger.lifecycle "This is LIFECYCLE message"
    logger.info "This is INFO message"
    logger.debug "This is DEBUG message"
}

>gralde showLoggin


  • 多專案建立

(1)
本節我們會說明多專案的建立,當我們有一個root專案為team,底下有三個專案: Tool、application和Employee
。application專案需要呼叫Tool和Employee方法。如圖所示

Image3

settings.gradle

include ':Tool',':application',':Employee'

build.gradle

apply plugin: 'java'
apply plugin: 'eclipse'
 
project(":Tool"){
    apply plugin: "java"
    println "project name is $name"
    task toolTask << {
        println "Task name is $name"
    }
}

project(":Employee"){
   apply plugin: 'java'

    repositories {
        mavenCentral()
    }
   println "Project name is $name"
    task employeeTask << {
        println "Task name is $name"
    }
}

project(":application"){
   apply plugin: 'java'
    println "Project name is $name"
 
    dependencies{
        compile project(':Employee')
        compile project(':Tool')
    }

}

(2) Flat 階層
我們可以同階層來當作子專案(subproject),使用includeFlat ‘專案名稱’

includeFlat ‘application’

留言

這個網誌中的熱門文章

GSON基礎教學

GSON 前言 JSON是很常見的資料交換格式,在JAVA領域常用處理JSON的函式庫:GSON、FastXML和JSON-B,本章節會以GSON為主,學習目標如下 JSON格式說明 GSON 套件函式 GSON: 物件轉換JSON字串 GSON: JSON字串轉換物件 JSON 格式說明 JSON全名為JavaScript Object Notation,它是一種輕量級的資料交換格式,會大為流行的理由,主要是他比傳統用xml更輕巧且容易處理, JSON表達方式物件會用大括弧{},陣列則是用中括號[]。 用JSON字串來表達Employee的物件內容,由JSON字串可以知道物件name、age、sex和salary屬性。 JSON表示員工資料方式: {“name”:”Jack Bryant”, “age”:18, “sex”:”M”,”salary”:3500.00} JSON陣列表示方式: 跟我們使用JAVA的陣列方式類似,內容值可以是數字’、文字、布林、陣列、物件、null等等。 範例: 字串: [“紅”、”橙”、”黃”、”綠”、”青”、”藍”、”紫”} 布林: [true, true, false, false, true, true] GSON 套件函式 Gson為google所發布的函式庫,主要將物件與json字串之間的轉換時方便使用。當我們將JAVA物件轉換成JSON字串稱為 序列化 ,JSON字串轉換至JAVA物件稱為 反序列化 。 GSON: 物件轉換JSON字串 有了JSON基本概念後,我們進入本章重點,首先我們需要建立員工類別(Employee),定義如下 物件 屬性 員工類別 Employee name 名字 age 年紀 sex 性別 salary 薪水 /** * name:員工類別 */ public class Employee implements Serializable { //constructor public Employee(String name, double salary){ this.name = name; this.sala...

PHP與Python搭配

今天介紹如何利用php網頁呼叫目錄下的python程式工作或是資料交換,本人整理的方法有兩種 使用system()、exec()、shell_exec()呼叫程式 (1) string system ( string return_var ] ) 參考網址 官網解釋system()用來執行外部命令,返回為印出的結果,passthru()跟system()類似但是它不會返回結果。 範例1. 利用system執行ls指定並顯示在網頁上,無法使用變數保留ls的結果 檔案名稱: psystem.php $jsondata= system("ls -al", $result); 結果: (2) exec() : string exec ( string output [, int &$return_var ]] ) 參考網址 範例2. 利用exec執行python程式並可以回傳json格式給前端網頁做處理並顯示。我們ptopy.php就是可以看到callpy()為執行py的函式,它執行完pyEx01.py會將結果給$jsondata變數,做後面json解析。 檔案名稱: ptopy.php function callpy() { $jsondata= exec("/usr/bin/python pyEx01.py"); return $jsondata ; } $jsondata= callpy(); echo $jsondata ; echo " " ; $obj = json_decode($jsondata) ; echo "name:".$obj-> { 'name'} .',' ; echo "id:".$obj-> { 'id'} ; 檔案名稱: pyEx01.py import sys ...

Python AI-問題集

Python AI-問題集 問題集 Jupyter Notebook執行ipywidgets會出現kernel死掉的錯誤發生(The kernel appears to have died) 解決方法 (1) 根據log檔來判斷問題: 例如:log訊息出現OMP: Error #15: Initializing libiomp5.dylib, but found libiomp5.dylib already initialized. (2) 根據問題關鍵字找出問題所在: 利用google查詢所遭遇到的問題,例如我把上面的問題上google查詢可以找到這篇的解法 https://blog.csdn.net/bingjianIT/article/details/86182096 (3)實作解法: 我實作下面解法後,就可以順利執行手寫辨識的程式. //在Python宣告時加入 import os os.environ["KMP_DUPLICATE_LIB_OK"]="TRUE" 參考 https://blog.csdn.net/bingjianIT/article/details/86182096