2012-03-26 40 views
3

我想創建一個沒有任何源的新Gradle項目。我打算在那裏放置一些配置文件,並且在構建時我想生成一個zip文件。 使用maven我會使用程序集插件。我正在尋找最簡單最輕鬆的方式來用Gradle來做到這一點。我想知道是否需要應用java插件,即使我沒有任何源代碼,僅僅是因爲它提供了一些基本和有用的任務,比如清理,裝配等。生成一個zip文件非常簡單,我知道該怎麼做,但我不知道在哪裏以及如何將zip生成放在gradle世界中。只有配置且沒有源的Gradle項目

回答

3

我已經手動完成,直到現在。換句話說,對於我想要做的是創建某種發行版的項目,我需要像彙編和清理這樣的基本生命週期任務,我只是簡單地創建這些任務以及所需的依賴關係。

但是有一個'base'插件(在用戶指南中的「Standard Gradle Plugins」的「Base plugins」下面提到)似乎很適合這項功能。請注意,用戶指南提到這個和其他基本插件尚未被認爲是Gradle API的一部分,並且沒有真正記錄。

結果與您的結果非常相似,唯一的區別是沒有令人困惑的java特定任務始終保持最新狀態。

apply plugin: 'base' 

task dist(type: Zip) { 
    from('solr') 
    into('solr') 
} 

assemble.dependsOn(dist) 

採樣運行:

$ gradle clean assemble 
:clean 
:dist 
:assemble 

BUILD SUCCESSFUL 

Total time: 2.562 secs 
+0

好的!我只是一個Gradle新手,我不知道有基本的插件。非常感謝! – javanna 2012-03-26 19:58:43

1

據我瞭解,這可能聽起來很奇怪,但看起來我需要應用java插件才能創建zip文件。此外,它可以方便地使用一些常見任務,例如clean。以下是我的build.gradle

apply plugin: 'java' 

task('dist', type: Zip) { 
    from('solr') 
    into('solr') 
} 

assemble.dependsOn dist 

我應用了Java插件和定義我的dist任務,創建一個包含與Solr的目錄中我的項目中內容的Solr的目錄中的zip文件。當我運行常見的gradle buildgradle assemble時,最後一行很方便,因爲我不想明確地調用dist任務。 這種方式,如果我與多個項目工作,我只需要執行gradle build父母上生成所有工件,包括配置zip。

請讓我知道,如果你有更好的解決方案,並添加自己的答案!

1

你可以使用groovy插件並使用ant。我做了這樣的事情。我也喜歡javanna的回答。

task jars(dependsOn: ['dev_jars']) << { 
    def fromDir = file('/database-files/non_dev').listFiles().sort() 

    File dist = new File("${project.buildDir}/dist") 
    dist.mkdir() 

    fromDir.each { File dir -> 
    File destFile = new File("${dist.absolutePath}" + "/" + "database-connection-" +  dir.name + ".jar") 
    println destFile.getAbsolutePath() 
    ant.jar(destfile:destFile, update:false, baseDir:dir) 
    } 
} 
+0

感謝您的貢獻! +1!如果你喜歡我自己的答案,你可以upvote它! :)我更喜歡我的,因爲它更短,如果我使用Gradle,我寧願不使用Ant,但也許是我。 – javanna 2012-03-26 13:57:48

相關問題