Précédente, j'ai lancé une question sur comment changer de projet Maven vesion de ligne de commande qui me conduisent à une nouvelle question.
Auparavant, j'ai été en mesure d'obtenir le numéro de version depuis la version a été stocké dans une propriété qui a été facile de grep et de l'analyser à partir de la ligne de commande (bash). Maintenant que l'pom.xml l'élément est utilisé pour cela, il n'est plus unique, car toutes les dépendances et peut-être quelques autres, trop de les utiliser. Je pense qu'il n'y a aucun moyen d'obtenir le numéro de la version actuelle avec un script bash sans outils externes pour le traitement xml ou certains très sensible au contexte sed commande.
Le plus propre solution, à mon opinnion serait Maven main de cette version information. Je pensais écrire un personnalisé plugin maven pour la récupération des propriétés différentes, mais j'ai pensé que je voudrais vous demander d'abord ici.
Donc, est-il un moyen facile pour obtenir la valeur de ${project.version}
de la ligne de commande? Merci à l'avance.
Solution
Je vous remercie pour l'aide. Je devais cd
pour le répertoire à la main, mais qui peut être fait facilement. Dans mon script bash que j'ai
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 } }'`
Ce qui me donne la version actuelle que je peux ensuite l'avance. Grepping peut-être plus simple mais j'ai pensé que je voudrais aussi robuste que possible, donc je suis satisfait de la première ligne qui commence par un numéro et essayer de gérer cela comme un numéro de version.
# 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/"
}
Et je l'utiliser en appelant simplement
new_version=$(advance_version $version)
Espérons que cela aide quelqu'un.