只有配置且没有来源的Gradle项目

时间:2012-03-26 10:34:53

标签: build gradle

我想创建一个没有任何来源的新Gradle项目。我将在那里放置一些配置文件,我想在构建时生成一个zip文件。 使用maven我会使用程序集插件。我正在寻找使用Gradle执行此操作的最简单,最轻松的方法。我想知道我是否需要应用java插件,即使我这里没有任何来源,只是因为它提供了一些基本和有用的任务,如清理,组装等。生成一个zip是非常简单的,我知道如何做到这一点,但我不知道在哪里以及如何将zip生成放入gradle世界。

3 个答案:

答案 0 :(得分:3)

到目前为止我手动完成了。换句话说,对于我想要创建某种发行版的项目,我需要基本的生命周期任务,如汇编和清理,我只是创建了这些任务以及所需的依赖项。

但是有一个'基础'插件(在用户指南中的“标准Gradle插件”的“基本插件”中提到)似乎很适合这个功能。请注意,用户指南提到这个和其他基本插件尚未被认为是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

答案 1 :(得分:1)

据我了解,这可能听起来很奇怪,但看起来我需要应用java插件才能创建一个zip文件。此外,提供一些常见任务(例如clean)非常方便。以下是我的build.gradle

apply plugin: 'java'

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

assemble.dependsOn dist

我应用了java插件并定义了我的dist任务,该任务创建了一个zip文件,其中包含一个solr目录,其中包含我项目中solr目录的内容。当我运行公共gradle buildgradle assemble时,最后一行很方便执行任务,因为我不想显式调用dist任务。 这样,如果我使用多个项目,我只需要在父项上执行gradle build来生成所有工件,包括配置zip。

如果您有更好的解决方案并添加自己的答案,请告诉我们!

答案 2 :(得分: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)
  }
}