我正在进行多项目gradle设置,其结构如下:
pipeline-jobs // root folder
|-gradle.properties
|-settings.gradle
|-build.gradle
|
|-partition-by-users // sub-project
|-com.client.dataPipelineJobs.partitionByUsers
|-PartitionByUsers.java // has the main() method
|-build.gradle
pipeline-jobs 是项目的根目录,现在我只有一个子项目按用户分区。将来会添加更多子项目。我想为所有这些子项目构建可运行的jar。我的按用户分区子项目下的 build.gradle 文件如下所示:
jar {
zip64 = true
manifest {
attributes('Main-Class': 'com.client.dataPipelineJobs.partitionByUsers.PartitionByUsers')
}
from {
configurations.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) }
}
}
现在如果我执行gradle jar
命令然后运行jar文件,则从根项目目录开始,它将引发以下错误:
找不到或加载主类 com.client.dataPipelineJobs.partitionByUsers.PartitionByUsers
我无法找出背后的根本原因。我在这里想念什么?我尝试使用attributes('Main-Class': partition-by-users.com.client.dataPipelineJobs.partitionByUsers.PartitionByUsers)
更改清单,但这无济于事。
更新: 我认为构建胖罐存在一些问题。构建没有依赖项的jar可以解决问题,但是也许我发现了另一种准备胖jar的方法。
答案 0 :(得分:0)
我在this SO线程中找到了答案。无论谁进入此页面,请查看上一个链接中@blootsvoets提供的答案。
基本思想是在jar和fatJar任务中使用相同的清单。