À l'aide de maven pour la sortie du numéro de version d'un fichier texte
Je veux générer un fichier zip qui va mettre à jour une application avec maven. Le zip sera hébergé sur un serveur et je suis en utilisant l'assemblée plugin pour générer le zip. Cependant, je voudrais maven pour générer automatiquement un fichier texte qui stocke le numéro de la version actuelle à l'extérieur de la zip. Comment est-ce possible?
EDIT:
J'ai réussi a l'aide de l'maven Assembly Plugin et deux descripteurs de créer deux assemblys personnalisés. On a un répertoire unique but et il crée un dossier avec la mise à jour version.txt basé sur le filtrage. Puis une autre avec un seul objectif en fait des paquets le fichier zip. Cela semble être très inélégant et je suppose qu'il ne sera pas correctement mise à jour le repo maven avec l'ensemble du dossier mis à jour. Si il ya une meilleure façon de le faire, s'il vous plaît laissez-moi savoir.
Vous devez vous connecter pour publier un commentaire.
Sûr. Créer un fichier texte quelque part dans src/main/resources, appeler
version.txt
(ou autre)Contenu du fichier:
maintenant dans votre pom.xml, à l'intérieur de l'élément de construire, de mettre ce bloc:
après chaque génération, le fichier (que vous pouvez trouver dans target/classes) contient la version actuelle.
Maintenant, si vous souhaitez déplacer le fichier quelque part d'autre automatiquement, vous allez probablement avoir besoin d'exécuter une tâche ant par la maven-antrun-plugin.
Quelque chose comme ceci:
<targetPath>
.targetPath
. Il va à l'intérieur de laresource
élément.src/main/resources-filtered
, puis vous activez<filtering>
uniquement pour le répertoire pour éviter la<include>
/<exclude>
duplication.Utilisation standard
META-INF\MANIFEST.MF
(vous pouvez utiliser du code JavagetClass().getPackage().getImplementationVersion()
pour obtenir la version)Pour .la guerre l'utilisation de cette configuration:
Qui va ajouter manifeste lors de la construction, ou vous pouvez appeler
mvn war:manifest
Voir aussi Comment obtenir une version de package à l'exécution de Tomcat?
À quoi vous faites allusion est appelé le filtrage
Vous devez activer le filtrage sur une ressource particulière, et ensuite utiliser
${project.version}
qui sera remplacé dans le cadre de votre constructionVous pouvez également utiliser un script Groovy pour produire des informations de version de fichier. J'aime cette méthode plus parce que vous n'avez pas à exclure des trucs dans l'assembly-plugin du descripteur. Vous pouvez également utiliser cette méthode pour éventuellement inclure des choses uniquement disponible si vous générez à partir de Jenkins/Hudson (p. ex. vérifier oug BUILD_ID etc...).
De sorte que vous avez un fichier de génération de script groovy dans pom.xml comme ceci:
Et puis votre assemblée plugin plugin dans pom.xml qui ressemblerait à ceci:
Et enfin votre assemblée descripteur de dist-all.xml devrait ressembler à ceci:
dans Maven 3, Utilisation Sean répondre pour créer votre
version.txt
fichier, (le mien est montré ici, ainsi que la date de compilation et de profil actif):ajout de la propriété
profileID
pour chacun des profils, par exemple:Utiliser Maven copier-ressources pour copier le fichier à une plus facile à atteindre répertoire comme
${basedir}
ou${basedir}/target
:de sortie ressemble à ceci:
J'ai juste fait cela avec une tâche ant.
Pour un Printemps de Démarrage de l'application, suivez les accepté de répondre à partir de ci-dessus toutefois se substituer
avec
Voici le lien vers la documentation https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-1.3-Release-Notes#maven-resources-filtering
Une possibilité est de conserver toutes les propriétés du projet pour la construction des
.jar
à l'aide demaven-properties-plugin
.Ensuite, vous pouvez lire ces propriétés à l'aide de la norme (mais pas trop pratique) Les Propriétés Java API.
Être prudent avec cette approche car elle peut présenter une fuite de propriétés qui ne sont pas censé finir publié, également à partir de
settings.xml
.À ajouter à Sean de réponse, vous pouvez déplacer le fichier d'une version à l'emplacement du dossier dans le pot en utilisant le paramètre targetpath dans le cadre des ressources. Le code suivant crée un dossier appelé "ressources" dans le bocal et le fichier texte (version.nombre) est trouvé dans ce dossier.
Je préfère le écrivez-propriétés-fichier-maven-plugin, parce que je ne veux pas tous maven-projet-propriétés dans un fichier: