gpt4 book ai didi

maven - 目标文件夹与本地存储库

转载 作者:行者123 更新时间:2023-12-04 13:46:39 24 4
gpt4 key购买 nike

我知道 Maven 将构建的结果保存在本地存储库中( Artifact 安装在 ~/.m2/repository/ 下),但它也在 target 中输出编译的类src旁边的文件夹.

本地存储库中的内容与 target 中的内容之间有什么区别吗?文件夹?

最佳答案

它们是完全不同的,不应混淆。

  • target表示构建目录。也就是说,在构建过程中从源代码生成的每个临时文件都在那里结束。值得注意的是,您会找到主要和测试 Java 源代码的编译类,但是 you'll also find lots of things in there (生成的源文件、过滤的文件等)。重要的是,此文件夹中包含的所有内容本质上都是临时的。您可以随时删除它,运行 mvn clean ,并确保下一个构建将(或至少应该)正常工作。 target下生成的所有文件和文件夹服务于一个目的:创建项目的 Artifact 。一个 Maven 项目,例如 jar包装,会有一个主神器,由its final name组成与 jar扩展,并将包含已编译的 Java 类。最终名称可以是在 POM 中设置的自定义名称,也可以是源自 Maven coordinates 的默认名称。项目的。这样的项目还可以有附加的 Artifact ,如测试 JAR 或源 JAR。
  • 本地存储库仅包含 Artifact 。里面没有临时文件。运行时安装了什么mvn install严格来说是 Maven 项目生成的 Artifact ,即最终产品,加上项目的 POM 文件。用于创建它们的所有东西都没有放在本地存储库中,并且项目的构建绝不能将临时的东西放在那里。请记住,本地存储库是一个 Maven 存储库,因此遵循严格的命名方案:组 ID 为 my.groupid 的项目。 , Artifact ID 为 my-artifactid和一个版本的 1.0将安装在文件夹 my/groupid/my-artifactid/1.0 中;您将在其中找到 POM 文件和所有其他 Artifact 。 Artifact 本身的名称不能被覆盖:它将是 my-artifactid-1.0.jar对于 JAR 项目(可能添加了 a classifier)。

  • 这通常是一个困惑的来源:在 target 下生成的主要 Artifact 文件的名称。文件夹与安装时在本地存储库中或在部署时在远程存储库中的名称完全不同。第一个可以控制,但后者是由存储库的命名方案定义的,它是根据坐标计算的。

    回顾一下: target包含在构建期间创建项目 Artifact 的所有血腥临​​时细节(主 JAR、源代码、Javadoc ......即该项目应该部署和发布的所有内容),而本地存储库(和远程存储库)将只包含 Artifact 本身。

    关于maven - 目标文件夹与本地存储库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40979487/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com