【问题标题】:Spring Initializr .gitignore intent (or making sense of the intent)Spring Initializr .gitignore 意图(或理解意图)
【发布时间】:2021-02-07 11:54:03
【问题描述】:

我正在创建一个新的 Spring Boot 应用程序。我对.gitignore 模式非常熟悉,但我看到一些故意模板化的东西,上面有“意图”的味道。以下是由 Spring Initializr 在许多 IDE 中生成的。

target/
!.mvn/wrapper/maven-wrapper.jar
!**/src/main/**/target/
!**/src/test/**/target/
 ...
 ...
build/
!**/src/main/**/build/
!**/src/test/**/build/

我相信这与 maven 的多模块项目功能有关,但 Initializr 应用程序不是多模块的(在开始时)。除此之外,我在这里读到什么?如果我对我认为正在陈述的内容进行了尝试,那是我不想做的事情(作为一般做法)。

“无论遇到什么都忽略target/文件夹,但target文件夹 在顶层以下 some/path/src/main/deeper/still/target/ 包括 那些。

“哦,对 NetBeans build/ 目录做同样的事情!”

这不太合理。为什么我会提交构建生成的目标内容?因此,我试图推断 Spring 工程师的意图。

更新

事实上,这正是它的作用,在根目录更深处包括targetbuild 目录。 目的是什么?

mkdir -p some/path/src/main/deeper/still/target/
touch !$/test.txt

这个新的target 目录包含在暂存和提交中。删除它,它会被忽略。

【问题讨论】:

  • 我对@9​​87654334@ 的使用掩盖了意图,因为我还在否定排除语句中使用target。我可能会发现意图使用了更合适的路径,即像 src/main/com/target/api 这样的包名称模式。我在下面的研究中注意到了这一点。

标签: git spring-boot gitignore spring-initializr


【解决方案1】:

基本上,这些“包含”(否定排除)确保src/mainsrc/test 下可能命名为target 的目录(例如包名称)不会在提交中丢失。

根据 Spring Initializr gitter 的讨论,Spring 提交者 Andy Wilkinson 指出:

这是为了防止 Maven 的构建输出目录 (target) 的忽略导致名为 target 的包中的代码被忽略。

在许多情况下,在个别用例中安全删除,“除非您为 Target 工作”(Target Brands, Inc. 可能有命名空间为 com.target.api.* 的包)(例如,以 Andy 为例子)。

我的问题应该在使用src/mainsrc/test 时得到解答,但我让target 这个词的误导让我感到困惑。事实上,我在自己的例子中证明了这一点,但无法超越这个词。哦!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-10-14
    • 2017-08-23
    • 1970-01-01
    • 1970-01-01
    • 2023-03-20
    • 2010-10-18
    • 1970-01-01
    相关资源
    最近更新 更多