簡體   English   中英

使用Gradle構建多Java項目

[英]Building multi java project using Gradle

我正在撕裂我的頭發。 我已經將我的腳本剝離回Gradle教程頁面中提供的代碼,因為我認為我要么做了一些根本錯誤的事情,要么誤解了如何使用gradle構建多項目應用程序。

我在eclipse中有三個java項目,所有三個都包含build.gradle腳本,只有一個包含settings.gradle腳本。 結構如下:

Scripts
-- build.gradle
-- settings.gradle
Database
-- build.gradle
Services
-- build.gradle

我正在嘗試使用“腳本”項目中的構建腳本構建“數據庫”和“服務”項目。 要創建項目樹,我在settings.gradle中有以下代碼:

include 'Services', 'Database'

project (':Services').projectDir = new File(settingsDir, "../Services")
project (':Database').projectDir = new File(settingsDir, "../Database")

復制多項目教程中的代碼(gradle docs),我試圖讓每個構建腳本打印出一些文本,以確保所有內容都正確設置。 我的最終目標是在執行'eclipseClasspath'時正確構建依賴項,以便所有項目在eclipse中正確編譯。 但是,正如我所料,文本沒有打印出來!

以下是三個構建腳本中包含的內容:

腳本build.gradle

allprojects {
    task hello << { task -> println "I'm $task.project.name" }
}

subprojects {
    hello << {println "- I depend on Scripts"}
}

數據庫build.gradle

hello.doLast { 
    println "- I'm inside database" 
}

服務build.gradle

hello.doLast { 
    println "- I'm inside services" 
}

在'Scripts'項目中,當我運行'gradle -q hello'時,我得到以下結果:

I'm Scripts
I'm AnprDatabase
- I depend on Scripts
I'm Database
- I depend on Scripts

為什么文本' - 我在數據庫內'和'我在服務內'沒有出現? 我有點困惑。 我只能猜測它與我的項目結構有關。 有人可以證實這是事實嗎? 如果沒有,問題是什么? 如上所述,我已經將我的腳本剝離回這個簡單的示例,因為我無法使用相同的結構在每個項目構建腳本中運行依賴項。

非常感謝任何提供的幫助。

我已經設法找出它為什么不起作用。 這對我來說是一個愚蠢的錯誤。 “數據庫”和“服務”項目與我的“腳本”項目不在同一目錄中。 我已經將這些項目檢查到git存儲庫中,該存儲庫將本地目錄從Eclipse工作空間復制到本地git存儲庫。 我沒有將'Scripts'項目檢查到我的git存儲庫中,因此它仍然存在於我的Eclipse工作區中。 現在似乎非常明顯,為什么它不起作用! 檢查我的'Scripts'項目並更改settings.gradle中其他項目的路徑已修復此問題。

有趣的是,如果找不到定義的項目,Gradle將創建一個空項目,而不是拋出FileNotFoundException或類似的東西。 這是我沒有意識到的。 起初我認為這是一種奇怪的行為,但我認為它使用戶能夠在腳本運行時動態創建項目。 不確定我是否喜歡它!

因此,在包含項目時,請始終確保導航到設置中的正確目錄! 否則,你可能會像我一樣犯規。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM