在继承Maven项目之后,我想检查未使用的属性并将其删除。我不想采取的一种方式是一个接一个地删除它们,然后看到构建失败。另一种方法是使用定制脚本计算整个代码库中的出现次数(以确保筛选器和资源的属性不会被错误地视为未使用)。在我这样做之前,我想确保我不是在重新发明轮子。对于here解释的依赖项,有一种方法可以做到这一点。对于我错过的房产,是否有类似的东西?还是更好的方式?谢谢我使用的是Maven 3.0.3
pcrecxhr1#
这有点复杂,但这里有一个bash脚本,它将从pom.xml中解析属性元素,检查是否在pom中使用了每个属性,并可选地检查所有项目文件(深度搜索)。
# !/bin/bash cmd=$(basename $0) read_dom () { local IFS=\> read -d \< entity content local retval=$? tag=${entity%% *} attr=${entity#* } return $retval } parse_dom () { # uncomment this line to access element attributes as variables #eval local $attr if [[ $tag = "!--" ]]; then # !-- is a comment return elif [[ $tag = "properties" ]]; then in=true elif [[ $tag = "/properties" ]]; then in= elif [[ "$in" && $tag != /* ]]; then #does not start with slash */ echo $tag fi } unused_terms () { file=$1 while read p; do grep -m 1 -qe "\${$p}" $file if [[ $? == 1 ]]; then echo $p; fi done } unused_terms_dir () { dir=$1 while read p; do unused_term_find $dir $p done } unused_term_find () { dir=$1 p=$2 echo -n "$p..." find $dir -type f | xargs grep -m 1 -qe "\${$p}" 2> /dev/null if [[ $? == 0 ]]; then echo -ne "\r$(tput el)" else echo -e "\b\b\b " fi } if [[ -z $1 ]]; then echo "Usage: $cmd [-d] <pom-file>" exit fi if [[ $1 == "-d" ]]; then deep=true shift fi file=$1 dir=$(dirname $1) if [ $deep ]; then while read_dom; do parse_dom done < $file | unused_terms $file | unused_terms_dir $dir else while read_dom; do parse_dom done < $file | unused_terms $file fi
该脚本使用this thread中的XML解析代码。该脚本不会找到任何由maven或maven插件直接使用的属性。它只是在项目文件中查找模式*${Property}*。它在我的Mac上运行;你的里程数可能会有所不同。
cu6pst1q2#
不幸的是,除了手动完成之外,没有更好的方法。
ia2d9nvy3#
如果你使用的是IntelliJ,你可以只搜索房产的用途。只需将光标放在标签上,然后右击->查找用法(在我的例子中,键盘快捷键:Alt+F7)。还没有找到更好的办法。
lmvvr0a84#
依赖关系_清洁器https://github.com/junaidbs/dependency_cleaner该JAR将帮助识别不需要的依赖项,然后将其从POM中移除。它将自动删除依赖项并运行,然后检查是否需要依赖项这是比手工操作更好的方法
4条答案
按热度按时间pcrecxhr1#
这有点复杂,但这里有一个bash脚本,它将从pom.xml中解析属性元素,检查是否在pom中使用了每个属性,并可选地检查所有项目文件(深度搜索)。
该脚本使用this thread中的XML解析代码。
该脚本不会找到任何由maven或maven插件直接使用的属性。它只是在项目文件中查找模式*${Property}*。
它在我的Mac上运行;你的里程数可能会有所不同。
cu6pst1q2#
不幸的是,除了手动完成之外,没有更好的方法。
ia2d9nvy3#
如果你使用的是IntelliJ,你可以只搜索房产的用途。只需将光标放在标签上,然后右击->查找用法(在我的例子中,键盘快捷键:Alt+F7)。
还没有找到更好的办法。
lmvvr0a84#
依赖关系_清洁器https://github.com/junaidbs/dependency_cleaner
该JAR将帮助识别不需要的依赖项,然后将其从POM中移除。
它将自动删除依赖项并运行,然后检查是否需要依赖项
这是比手工操作更好的方法