如何在 pom 中查找未使用的属性
Posted
技术标签:
【中文标题】如何在 pom 中查找未使用的属性【英文标题】:How to find unused properties in a pom 【发布时间】:2012-09-07 09:09:43 【问题描述】:继承一个maven项目后,我想检查一下未使用的属性并删除它们。
我不想采取的一种方法是一个一个地删除它们,然后看到构建失败。另一种方法是使用自定义脚本计算整个代码库中的出现次数(以确保过滤器和资源的属性不会被错误地视为未使用)。在我这样做之前,我想确保我没有重新发明***。
对于 here 解释的依赖项,有一种方法可以做到这一点。 我错过的房产有类似的东西吗?还是更好的方法?
谢谢
我使用的是 maven 3.0.3
【问题讨论】:
【参考方案1】:这有点复杂,但这里有一个 bash 脚本,它将解析 pom.xml 中的 properties 元素,检查 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;您的里程可能会有所不同。
【讨论】:
【参考方案2】:不幸的是,没有比手动操作更好的方法...
【讨论】:
【参考方案3】:如果您使用 IntelliJ,您可以只搜索该属性的用法。只需将光标放在标签上,然后右键单击 -> 查找用法(在我的情况下,键盘快捷键:Alt+F7)。
还没有找到更好的方法。
【讨论】:
以上是关于如何在 pom 中查找未使用的属性的主要内容,如果未能解决你的问题,请参考以下文章