JAVAhgignore“target”文件夹,但有一些例外
我使用Mercurial,并为我的项目提供了标准的Maven布局和几个子模块,例如:
submodule1/src/main/java/xyz/.../
submodule1/src/main/java/xyz/.../target/Target.java
submodule1/src/test/java/xyz/.../target/TargetTest.java
submodule1/target/classes/xyz/.../target/Target.class
submodule1/target/something_else...
submodule2/...
etc...
要从SCM中排除所有target
文件夹,除非target
在src
下,例如submodule1/src/main/java/xyz/.../target/Target.java
,我尝试了以下.hgignore
:
syntax: regexp
^(?!(/src/).)/target$
(如果有任何文件夹名为src
,则不匹配,但如果有target
文件夹,则匹配)
及
syntax: regexp
^[^/]*/(?!(/src/).)*[^/]*/target$
(如果有任何文件夹名为src
,则某些文件夹不匹配,然后是其他一些文件夹,然后是target
文件夹)
但是这两个.hgignore
都不起作用,仍然排除了submodule1/src/main/java/xyz/.../target
文件夹以及其他target
文件夹
以前,我只忽略直接位于子模块文件夹中的target
就解决了这个问题,例如
syntax: regexp
^submodule1/target$
但是子模块太多,这需要在每次添加子模块时编辑.hgignore
我从.hgignore file is not ignoring the maven target/site directory和hgignore: help ignoring all files but certain ones获得了regexp语法的想法
另外,我知道我可以hg add
被.hgignore
排除的文件,我已经做到了。但这是一项临时措施
# 1 楼答案
这是一种方式。它只标识不是/src/子目录的/target/