【问题标题】:What is the purpose of "ext: 'jar'" in dependencies config?依赖项配置中“ext:'jar'”的目的是什么?
【发布时间】:2021-09-10 06:03:01
【问题描述】:

我看到很多带有此设置的 build.gradle 配置:

compile group: 'org.jenkins-ci.main', name: 'jenkins-core', version: '+', ext: 'jar'

ext: 'jar' 是做什么的?

ext 是 DefaultExtraPropertiesExtension,但我找不到“jar”是什么的文档。

如果我在这个例子中去掉ext: jar,我会得到一个看起来像传递依赖的错误:

Could not find org.connectbot.jbcrypt:jbcrypt:1.0.0.

“jar”是下载预编译的 uber jar 还是其他东西而不是正确的 Maven 包?为什么似乎有零文档 - 也许我没有找对地方?

编辑

我找到了解释here

注意 2:ext: 'jar' 对于确保 jar 文件非常重要, 而不是 hpi/jpi 文件,正在被下载和理解 智能。如果没有指定 ext 选项,IntellJ 将找不到 JAR 嵌套在 hpi/jpi 文件中的文件,这是默认的二进制文件 Jenkins 插件。

但我仍然对正在发生的事情感到困惑。是否将参数“jar”传递给依赖项并且这些 Jenkins 依赖项是否知道这个“jar”参数?所以 jar 不是标准的 Gradle 部门的东西,它是特定于这些 Jenkins 部门的?

【问题讨论】:

  • 我不确定你在问什么,但是:JAR 是一个压缩的 java 文件。见docs.oracle.com/javase/tutorial/deployment/jar/basicsindex.html
  • ext 是“扩展名”的缩写——表示文件名末尾的后缀(或“文件扩展名”)——例如文件名notes.txt 中的txt。而jar 是您的 Gradle 配置中需要的文件扩展名,以便可以找到嵌入在 Je​​nkins 插件中的 JAR 文件。 JAR 文件的文件扩展名为 jar - 例如,您问题中的文件名可能是 jbcrypt.1.0.0.jar。如果我在解释你已经知道的事情,请提前道歉......
  • ...Jenkins 插件有点不寻常,因为它们本身就是 zip 文件(可能包含 JAR 文件!) - 但它们使用 hpijpi 作为文件扩展名:@ 987654335@。这个额外的指令允许定位*.hpi 文件中的*.jar 文件。
  • 所以ext: jar 正在搜索并下载我指定的依赖项/包中的所有 *.jar 文件?所以我可以指定任何扩展名,它只会在依赖项中覆盖那些特定的文件?认为我仍然对其实际在做什么感到困惑

标签: java jenkins gradle groovy


【解决方案1】:

这在DependencyHander的DSL文档中有记录:

https://docs.gradle.org/current/dsl/org.gradle.api.artifacts.dsl.DependencyHandler.html#N16E3D

支持声明对外部模块的依赖的两种表示法。一种是这样格式化的字符串表示法:

configurationName "group:name:version:classifier@extension"

另一个是地图符号:

configurationName group: group, name: name, version: version, classifier: classifier, ext: extension

并在 Javadoc 中进一步记录:

https://docs.gradle.org/current/javadoc/org/gradle/api/artifacts/DependencyArtifact.html#getExtension--

返回此工件的扩展名。通常扩展名与类型相同,但有时情况并非如此。例如,对于 ivy XML 模块描述符,类型是 ivy,扩展名是 xml

【讨论】:

  • 但什么是“罐子”?是不是只有这些特定的依赖才能理解?
  • 我不知道还有什么可以解释的,因为文档已经解释过了。是神器的延伸。
  • 为什么在这种情况下需要指定扩展名?类型是“hpi”,扩展名是“jar”吗?它默认查找名为“.hpi”但实际上名为“.jar”的文件?
猜你喜欢
  • 2011-07-03
  • 2015-06-24
  • 2010-11-18
  • 1970-01-01
  • 2019-10-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-15
相关资源
最近更新 更多