Daha önce Maven proje sürümünün komut satırından nasıl değiştirileceğine dair bir soru yayınladım ve bu da beni yeni bir soruna götürdü .
Daha önce, sürümün komut satırından (bash) grep ve ayrıştırması kolay bir özellik olarak saklandığından sürüm numarasını alabildim. Şimdi pom.xml öğesi bunun için kullanıldığına göre, tüm bağımlılıklar ve belki de bazıları da bunu kullandığından artık benzersiz değil. Ben xml veya bazı çok bağlam-bilinçli sed komut ayrıştırmak için harici araçlar olmadan bir bash betiği ile mevcut sürüm numarasını almak için bir yol olduğunu düşünüyorum .
Benim düşüncemdeki en temiz çözüm Maven'in bu sürüm bilgilerini dağıtması olacaktır. Farklı özellikleri almak için özel bir maven eklentisi yazmayı düşünüyordum ama önce burada soracağımı düşündüm.
Peki, ${project.version}
komut satırının değerini almanın kolay bir yolu var mı? Şimdiden teşekkürler.
Çözüm
Yardım için teşekkürler. Ben cd
dizine manuel olarak vardı ama bu kolayca yapılabilir. Benim bash senaryomda var
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 } }'`
Bu da bana ilerleyebileceğim güncel sürümü veriyor. Selamlamak daha kolay olabilir, ancak olabildiğince sağlam olmasını istediğimi düşündüm, bu yüzden bir sayı ile başlayan ilk satırdan memnunum ve bunu bir sürüm numarası olarak ele almaya çalışıyorum.
# 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/"
}
Ve bunu sadece arayarak kullanıyorum
new_version=$(advance_version $version)
Umarım bu birine yardımcı olur.
grep -e '^[[:digit:]]'