이전에는 Maven 프로젝트 vesion을 명령 줄에서 변경 하여 새로운 문제를 일으키는 방법에 대한 질문을했습니다 .
이전에는 버전이 명령 줄 (bash)에서 grep하고 구문 분석하기 쉬운 속성으로 저장되었으므로 버전 번호를 얻을 수있었습니다. 이제 pom.xml 요소가 사용되었으므로 모든 종속성 및 다른 일부도 이것을 사용하기 때문에 더 이상 고유하지 않습니다. XML을 구문 분석하기위한 외부 도구 또는 컨텍스트 인식 sed 명령이 없는 bash 스크립트로 현재 버전 번호를 얻는 방법이 없다고 생각 합니다.
내 의견에서 가장 깨끗한 해결책은 Maven 이이 버전 정보를 전달하는 것입니다. 다른 속성을 검색하기 위해 사용자 지정 maven 플러그인을 작성하려고 생각했지만 여기에 먼저 물어볼 것이라고 생각했습니다.
따라서 ${project.version}
명령 줄에 값을 얻는 쉬운 방법이 있습니까? 미리 감사드립니다.
해결책
도와 줘서 고마워. 나는 cd
수동으로 디렉토리에 가야 했지만 쉽게 할 수 있습니다. 내 bash 스크립트에는
version=`cd $project_loc && mvn org.apache.maven.plugins:maven-help-plugin:2.1.1:evaluate -Dexpression=project.version | sed -n -e '/^\[.*\]/ !{ /^[0-9]/ { p; q } }'`
나에게 앞으로 나아갈 수있는 현재 버전을 제공합니다. Grepping은 더 간단 할 수 있지만 가능한 한 견고하다고 생각하므로 숫자로 시작하는 첫 번째 줄에 만족하고 이것을 버전 번호로 처리하려고합니다.
# Advances the last number of the given version string by one.
function advance_version () {
local v=$1
# Get the last number. First remove any suffixes (such as '-SNAPSHOT').
local cleaned=`echo $v | sed -e 's/[^0-9][^0-9]*$//'`
local last_num=`echo $cleaned | sed -e 's/[0-9]*\.//g'`
local next_num=$(($last_num+1))
# Finally replace the last number in version string with the new one.
echo $v | sed -e "s/[0-9][0-9]*\([^0-9]*\)$/$next_num/"
}
그리고 나는 이것을 단순히 전화해서 사용합니다.
new_version=$(advance_version $version)
이것이 누군가를 돕기를 바랍니다.
grep -e '^[[:digit:]]'