2012-03-26 51 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

相关问题