将java文件和资源编译为zip文件的Gradle任务
我是Gradle的新手,过去没有Gradle构建的经验。我试图实现的是编译Java类,复制一些文件以使用一些资源文件构建目录,并生成整个目录的zip文件 压缩文件内容将java文件和资源编译为zip文件的Gradle任务,gradle,build,Gradle,Build,我是Gradle的新手,过去没有Gradle构建的经验。我试图实现的是编译Java类,复制一些文件以使用一些资源文件构建目录,并生成整个目录的zip文件 压缩文件内容 bin ----data ----java ----properties ----resources ----run.sh ----classes <---- Java compiles classes here! lib ----sqlite-jdbc-3.23.1.jar properties ----MANIFEST.
bin
----data
----java
----properties
----resources
----run.sh
----classes <---- Java compiles classes here!
lib
----sqlite-jdbc-3.23.1.jar
properties
----MANIFEST.MF
bin
----资料
----爪哇
----性质
----资源
----run.sh
----类我认为您应该同时使用Java和分发插件,这将帮助您创建一个简单的构建脚本。Java插件将为您带来一些在您的案例中可能不需要的任务,但仍然值得使用它,而不是为源代码编译创建您自己的任务
可以用作初学者的脚本示例:
plugins {
id 'java'
id 'distribution'
}
// Java plugin configuration
// ---------------------------------------------------
sourceCompatibility = 1.8
targetCompatibility = 1.8
repositories {
jcenter()
}
dependencies {
compile group: 'org.xerial', name: 'sqlite-jdbc', version: '3.23.1'
}
// Distribution plugin configuration
// ------------------------------------------------------
distributions {
main {
baseName = 'myDist'
contents {
// 1. by default, content under /src/main/dist will be automatically included in the target dist zip
// 2. include compiled classes output dir into /bin/classes
from(project.sourceSets.main.output.classesDir) {
into('bin/classes/')
}
// 3. include all dependent jars into /libs
from(configurations.compile) {
into('libs/')
}
// 4. other resources to include in the target zip
// ...
}
}
}
// Make distZip task depend on compileJava task
distZip {
dependsOn compileJava
// EDIT : change target file path
eachFile { file ->
String path = file.relativePath
String newPath = path.substring(path.indexOf("/")+1,path.length())
println "Changed path to file from $path to $newPath"
file.setPath(newPath)
}
}
此脚本假定您在项目中遵循标准的目录布局,用于源代码和资源(src/main/java/,src/main/dist/,…),否则您必须调整脚本。知道如何从存档中删除父目录吗?@JarnoLahtinen with Distribution plugin我不知道您是否可以创建没有根目录的zip;也许您可以直接使用Zip任务而不是分发插件:请参阅这里类似于您的问题的答案:我现在如何扩展javaCompile来制作Zip包。如果我将自定义任务设置为Zip,我就没有可用的java类。那么,我需要用doLast或其他什么扩展JavaCompile吗?让我们来看看。正如在chat中与Jarno讨论的那样,生成的Zip存档是正确的,不再包含根目录,使用了前面评论中描述的“技巧”(请参阅我的答案中脚本示例中的编辑部分)@JarnoLahtinen如果能解决您的问题,请随意接受我的回答;)