为什么gradle JAR是用“build/libs”编写的?

为什么gradle JAR是用“build/libs”编写的?,gradle,Gradle,根据,输出目录由destinationDir属性控制: 文件destinationDir 生成存档文件的目录 java插件的默认值:project.distsDir 在同一个属性中,查看以下内容: 由java插件添加的属性 distsDir:生成TAR和ZIP归档文件的目录 distsDirName:分发目录的名称。这是相对于项目的生成目录进行解释的 通过谷歌搜索,我发现: 文件distsDir(只读) 要生成TAR和ZIP存档的目录 java插件的默认值:${project.buil

根据,输出目录由
destinationDir
属性控制:

  • 文件
    destinationDir

    生成存档文件的目录

    java插件的默认值:
    project.distsDir

在同一个属性中,查看以下内容:

java
插件添加的属性

  • distsDir
    :生成TAR和ZIP归档文件的目录
  • distsDirName
    :分发目录的名称。这是相对于项目的生成目录进行解释的
通过谷歌搜索,我发现:

  • 文件
    distsDir
    (只读)

    要生成TAR和ZIP存档的目录

    java插件的默认值:
    ${project.buildDir}/${project.distsDirName}

  • 字符串
    distsDirName

    分发目录的名称。这是相对的 到项目的生成目录

    java插件的默认值:
    'distributions'

所有这些文档都指向相同的Gradle版本,与我安装的版本相匹配

我将其添加到我的
build.gradle
中,以检查这些属性的真实值:

println("distsDirName = " + project.distsDirName)
println("distsDir = " + project.distsDir.toString())

jar {
    println("jar.destinationDir = " + destinationDir)
}
最后,我运行
/gradlew
并检查输出:

distsDirName = distributions
distsDir = /home/ntrrgc/myProject/build/distributions
jar.destinationDir = /home/ntrrgc/myProject/build/libs

为什么jar.destinationDir不尊重其记录的默认值?

我认为,@Alicia正确地指出,当前在文件destinationDir的默认值中提供了错误的信息:

文件目的地

生成存档文件的目录

java插件的默认值:

project.distsDir

其中,distsDir的默认值为“构建/分发”

在我看来,应该是这样

文件目的地

生成存档文件的目录

java插件的默认值:

project.libsDir

如图所示,libsDir的默认值为“build/libs”


我已经为此打开了大门。让我们看看他们的答案。

在我找到的源代码中搜索。另外,根据docs,
libsDir
是生成JAR和WAR归档文件的目录,而
distsDir
用于TAR和ZIP文件。唯一矛盾的是Jar插件的文档,因为Gradle发行版不是Jar。通常这是一个包含任何文件的ZIP或TAR包。它可以是一堆罐子或其他任何东西。例如,请参阅
应用程序
发行版
插件文档。如果您想覆盖
build/libs
使用
libsDir
libsDirName
。他们确认了这一点,因此我将此标记为正确答案:)