Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用LinuxFind命令清理所有maven项目?_Linux_Maven_Cygwin - Fatal编程技术网

如何使用LinuxFind命令清理所有maven项目?

如何使用LinuxFind命令清理所有maven项目?,linux,maven,cygwin,Linux,Maven,Cygwin,我想立刻清理我所有的maven项目。但是我想避免一步一步地手动浏览所有文件夹,然后调用mvnclean。所以我想用find命令来实现这一点。我打了以下电话: find . -name pom.xml -exec mvn clean {} \; 结果是错误消息:find:“-exec”缺少参数 现在我的问题是:是否可以使用find和exec进行这样的调用?我想我可以使用每个命令作为find-exec的参数 提前谢谢 Hardie如果您展开exec将为您运行的内容: mvn clean dir1/

我想立刻清理我所有的maven项目。但是我想避免一步一步地手动浏览所有文件夹,然后调用
mvnclean
。所以我想用find命令来实现这一点。我打了以下电话:

find . -name pom.xml -exec mvn clean {} \;
结果是错误消息:find:“-exec”缺少参数

现在我的问题是:是否可以使用find和exec进行这样的调用?我想我可以使用每个命令作为find-exec的参数

提前谢谢

Hardie

如果您展开exec将为您运行的内容:

mvn clean dir1/dir2/pom.xml
您将看到您将pom文件视为maven目标

您应该使用-f标志和撇号(以防止全球化):

至于我,我使用这个命令

find . -name 'target' -a -type d -exec rm -rfv '{}' \;

这将删除所有目标文件夹。

如果展开exec将为您运行的内容:

mvn clean dir1/dir2/pom.xml
您将看到您将pom文件视为maven目标

您应该使用-f标志和撇号(以防止全球化):

至于我,我使用这个命令

find . -name 'target' -a -type d -exec rm -rfv '{}' \;

这将删除所有目标文件夹。

我不确定哪个版本的mvn命令支持这样指定pom文件,但对于例如Maven 3.x,这不起作用。我们需要一点零钱。使用-execdir运行,它会自动将目录更改为找到的pom文件的位置(通常比-exec更安全):

或使用指定的备用pom文件选项-f

find . -name pom.xml -exec mvn clean -f '{}' \;

我不确定哪个版本的mvn命令支持这样指定pom文件,但对于例如Maven 3.x,这不起作用。我们需要一点零钱。使用-execdir运行,它会自动将目录更改为找到的pom文件的位置(通常比-exec更安全):

或使用指定的备用pom文件选项-f

find . -name pom.xml -exec mvn clean -f '{}' \;

如果您和我一样,有相当多的maven项目被签出,那么建议的方法可能需要几个小时。 我目前有700个项目已签出

find . -maxdepth 3 -type f -name pom.xml | 
  sed 's|/pom.xml$|/target|' | 
  xargs -I{} bash -c '[ -d {} ] && echo {}' | 
  xargs -I{} bash -c 'mvn clean -f "$(sed "s|/target$|/pom.xml|" <<< "{}")"'
find-maxdepth 3-类型f-名称pom.xml |
sed's |/pom.xml$|/target |'|
xargs-I{}bash-c'[-d{}]&&echo{}'|

xargs-I{}bash-c'mvn clean-f“$(sed“s |/target$|/pom.xml |“如果您和我一样有很多maven项目被签出,那么建议的方法可能需要几个小时。 我目前有700个项目已签出

find . -maxdepth 3 -type f -name pom.xml | 
  sed 's|/pom.xml$|/target|' | 
  xargs -I{} bash -c '[ -d {} ] && echo {}' | 
  xargs -I{} bash -c 'mvn clean -f "$(sed "s|/target$|/pom.xml|" <<< "{}")"'
find.-maxdepth 3-type f-name pom.xml |
sed's |/pom.xml$|/target |'|
xargs-I{}bash-c'[-d{}]&&echo{}'|

xargs-I{}bash-c'mvn clean-f“$(sed“s |/target$/pom.xml |”就是这样。使用撇号就可以了。您的解决方案也很好。非常感谢。如果您在Windows上使用Cygwin使用
pwd
-
查找'pwd'-name'pom.xml'-exec mvn clean'{/code>或
查找'pwd'-name'target'-a-type-exec-rm}{}{}“\;
就是这样。使用撇号效果很好。您的解决方案也是一个很好的解决方案。非常感谢。如果您在Windows上使用Cygwin,请使用
pwd
-
find`pwd`-name'pom.xml'-exec mvn clean'{}\
find`pwd`-name'target'-a-type-exec rm-rfv'{}\