【问题标题】:how to package a custom Jar task with JIB?如何使用 JIB 打包自定义 Jar 任务?
【发布时间】:2021-11-29 15:57:30
【问题描述】:

我正在使用Jib 将一些 Gradle Jar 任务的输出容器化。这适用于默认 Jar 任务。我的问题是我们有一个自定义 Jar 任务挂接到我们的构建过程中,例如

tasks.register('myOtherJarTask',jar){
   //do stuff, triggered by assemble task
   // outputted to non default directory
} 

并且我希望将其输出容器化而不是默认 Jar,默认 Jar 由于其他原因对我们仍然有效。有没有办法在 JIB 中实现这一点,从查看 JIB 插件的源代码来看,它似乎编码为期望 output of the Jar task。来自 Jib 插件的代码:

      Jar jarTask = (Jar) project.getTasks().findByName("jar");
      Path jarPath = jarTask.getArchiveFile().get().getAsFile().toPath();
      log(LogEvent.debug("Using JAR: " + jarPath));
      javaContainerBuilder.addToClasspath(jarPath);

我还尝试使用 extraDirectories 属性将 jar 从“myOtherJarTask”复制到容器中,并通过入口点执行该方式,但默认 Jar 不包含主类,因此会阻止此操作(myOtherJarTask 有一个主类)。重组项目以使默认 Jar 产生我想要的输出不是一种选择。

也许还有另一种我不清楚的方法。

任何帮助表示赞赏。

【问题讨论】:

  • 使用属性(变量)改变默认Jar任务的行为怎么样?如果没有通过-P 指定属性,则执行正常的Jar 任务。如果指定了属性,则在 Jar 任务中执行“myOtherJarTask”。

标签: java docker gradle jib


【解决方案1】:

只是另一个想法:您是否尝试过使用 jib.container.extraClasspath 将自定义 jar 添加到运行时类路径?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-14
    • 1970-01-01
    • 1970-01-01
    • 2014-09-08
    • 1970-01-01
    • 2015-03-20
    • 2014-05-02
    • 1970-01-01
    相关资源
    最近更新 更多