如何在pom中查找未使用的属性

时间:2012-09-14 08:12:18

标签: java maven maven-3 maven-plugin

继承maven项目后,我想检查未使用的属性并将其删除。

我不想采取的一种方法是逐个删除它们,看看构建失败。另一种方法是使用自定义脚本计算整个代码库中的出现次数(以确保过滤器和资源的属性不会被错误地视为未使用)。在我这样做之前,我想确保我不会重新发明轮子。

对于解释为here的依赖关系,有一种方法可以做到这一点  我错过了哪些属性类似的东西?还是更好的方式?

谢谢

我正在使用maven 3.0.3

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)。

尚未找到更好的方法。