【问题标题】:Building open source dependencies using gradle使用 gradle 构建开源依赖项
【发布时间】:2021-12-10 22:02:39
【问题描述】:

我真的没有太多开发经验,更不用说使用构建工具了。

我被分配了一项任务来在本地构建依赖项并获取 jar 文件。 假设我有一个像这样的 deps (GAV) 列表:-

1. org.jetbrains.kotlin:kotlin-stdlib:1.6.0-RC
2. com.auth0:java-jwt:3.18.2, etc
3. openapi4j:openapi-operation-validator:1.0.7, etc

所以我能够以编程方式从 maven 存储库和 github 下载源代码 url,例如:-

  1. org.jetbrains.kotlin:kotlin-stdlib:1.6.0-RC - https://github.com/JetBrains/kotlin
  2. com.auth0:java-jwt:3.18.2 - https://github.com/auth0/java-jwt
  3. openapi4j-openapi-operation-validator-1.0.7 https://github.com/openapi4j/openapi4j

但是在不同的目录中有很多build.gradle文件,我怎么知道在运行gradle build命令之前我应该​​移动到哪个目录。 我已经尝试过但失败的事情:-

  • 对于像 openapi4j:openapi-operation-validator:1.0.7 这样的 deps,我可以直接进入 Github repo (https://github.com/openapi4j/openapi4j) 中的 openapi-operation-validator 文件夹并运行 gradle build 命令,但不能我猜所有项目的结构都是这样的?
  • 对于像 com.auth0:java-jwt:3.18.2 这样的部门,artifactId (java-jwt ) 已经存在于 github 路径 (https://github.com/auth0/java-jwt) 中,因此我可以在根 github 存储库上运行 gradle build 命令。
  • spring guides ,在所有可用的 Gradle.build 文件中,我可以检查哪个文件具有:-
    jar {
        archiveBaseName = <artifactId>
        archiveVersion =  <version>
    }

,然后我可以移动到该目录并运行Gradle build,但并非所有build.gradle 文件都有这个。

上述方法都不是具体的,我可以使用其他可靠的方法来解决问题吗?

【问题讨论】:

  • 主要问题:为什么要从源代码构建所有这些库?该计划背后的原因是什么?
  • 我被告知不应该将在线可用的jar用于生产,我们必须自己构建它。
  • 这是一种奇怪的方法。如果这是关于安全性,那么最好使用开源安全扫描程序来找出它可能存在的危险。

标签: maven gradle build build.gradle build-tools


【解决方案1】:

您的方法通常是正确的。

您需要在 github/gitlab/wherever 中找到源代码,阅读自述文件并尝试使用那里使用的任何构建工具进行构建。

这可能有效,也可能无效。

【讨论】:

  • 我正在尝试以编程方式实现这一目标,可行吗?从某种意义上说,我可以为所有项目遵循一种通用方法吗?无需参考自述文件?
  • 不,这是不可能的。我想,对于一个相当大的项目,您将花费数周时间编译代码,也许您可​​以完成 80% 的库。如果您真的(真的)需要从源代码编译您使用的所有内容(无论出于何种原因,请阅读:没有人这样做),那么我建议您使用尽可能少的库,并且更愿意从头开始编写大部分代码。跨度>
猜你喜欢
  • 2019-08-24
  • 1970-01-01
  • 2013-01-30
  • 2014-02-04
  • 1970-01-01
  • 2015-11-30
  • 2018-01-02
  • 2016-02-08
  • 1970-01-01
相关资源
最近更新 更多