继承maven项目后,我想检查未使用的属性并将其删除。
我不想采取的一种方法是逐个删除它们,看看构建失败。另一种方法是使用自定义脚本计算整个代码库中的出现次数(以确保过滤器和资源的属性不会被错误地视为未使用)。在我这样做之前,我想确保我不会重新发明轮子。
对于解释为here的依赖关系,有一种方法可以做到这一点 我错过了哪些属性类似的东西?还是更好的方式?
谢谢
我正在使用maven 3.0.3
答案 0 :(得分:1)
不幸的是,没有更好的方法而不是手动操作......
答案 1 :(得分: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;你的milage可能会有所不同。
答案 2 :(得分:0)
如果您使用的是IntelliJ,则可以搜索该属性的用法。只需将光标放在标记中,然后右键单击 - &gt;查找用法(在我的情况下为键盘快捷键:Alt + F7)。
尚未找到更好的方法。