为了账号安全,请及时绑定邮箱和手机立即绑定

在多项目 gradle 设置中引用子项目的主类

在多项目 gradle 设置中引用子项目的主类

梦里花落0921 2022-10-12 15:29:14
我正在研究一个多项目 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.gradlepipeline-jobs是根项目文件夹,现在我只有一个名为partition-by-users 的子项目。将来会增加更多的子项目。我想为所有这些子项目构建可运行的 jar。我在partition-by-users子项目下的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)但这没有帮助。更新: 我认为构建 fat-jar 存在一些问题。在没有依赖项的情况下构建 jar 可以解决问题,但是我可能已经找到了另一种准备 fat-jar 的方法。
查看完整描述

1 回答

?
心有法竹

TA贡献1866条经验 获得超5个赞

我在这个SO 线程中找到了答案。谁碰到此页面,请查看@blootsvoets 在上一个链接中提供的答案。

基本思想是在 jar 和 fatJar 任务中使用相同的清单。


查看完整回答
反对 回复 2022-10-12
  • 1 回答
  • 0 关注
  • 152 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信