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