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

pzfprimi  于 2022-10-26  发布在  Maven
关注(0)|答案(4)|浏览(333)

在继承Maven项目之后,我想检查未使用的属性并将其删除。
我不想采取的一种方式是一个接一个地删除它们,然后看到构建失败。另一种方法是使用定制脚本计算整个代码库中的出现次数(以确保筛选器和资源的属性不会被错误地视为未使用)。在我这样做之前,我想确保我不是在重新发明轮子。
对于here解释的依赖项,有一种方法可以做到这一点。
对于我错过的房产,是否有类似的东西?还是更好的方式?
谢谢
我使用的是Maven 3.0.3

pcrecxhr

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上运行;你的里程数可能会有所不同。

cu6pst1q

cu6pst1q2#

不幸的是,除了手动完成之外,没有更好的方法。

ia2d9nvy

ia2d9nvy3#

如果你使用的是IntelliJ,你可以只搜索房产的用途。只需将光标放在标签上,然后右击->查找用法(在我的例子中,键盘快捷键:Alt+F7)。
还没有找到更好的办法。

lmvvr0a8

lmvvr0a84#

依赖关系_清洁器https://github.com/junaidbs/dependency_cleaner
该JAR将帮助识别不需要的依赖项,然后将其从POM中移除。
它将自动删除依赖项并运行,然后检查是否需要依赖项
这是比手工操作更好的方法

相关问题