Comment puis-je dans une page jsp obtenir de projet maven numéro de version?
Je suis en train de travailler sur une application web java, géré par maven2. De temps à autre, nous avons fait quelques changements, et qui veulent faire de nouvelles versions, bien sûr, avec le nouveau numéro de version. Dans la page d'accueil (jsp), il y a du texte comme
<b>version:</b> 2.3.3...
Est-il possible, chaque fois que je fais une nouvelle version, je ne changer la <version/>
dans pom.xml et le numéro de version dans les jsp peuvent être automatiquement rempli par cette maven ${projet.version}?
J'ai essayé de maven profil, toutefois, il ne semble pas fonctionner.
des idées?
Merci.
- btw, j'ai utilisé les ressources de filtrage et de profil maven pour d'autres fichiers de configuration, par exemple ceux du printemps xmls, ils sont au travail. mais pour les jsp, n'a pas fonctionné.
Vous devez vous connecter pour publier un commentaire.
C'est peut-être stupide, mais je préfère utiliser un
.properties
fichier, comme dans cet exemple au lieu de filtrer directement les JSP.Vous pouvez utiliser projet de filtrage pour traiter les JSP qu'il est copié à l'emplacement cible. Si le JSP est spécifié avec
${project.version}
, et le dossier qui le contient est spécifié comme un filtre à l'emplacement de la valeur doit être substitué dans la JSP comme il est emballé.Par exemple, en ajoutant ceci à votre POM permet le filtrage pour la src/main/resources:
Mise à jour: pour la guerre de l'emballage, vous devrez peut-être configurer la guerre plugin pour faire son filtrage. Voir la
Filtering
la section de la guerre du plugin la documentation pour plus de détails et d'exemples.Essentiellement, le processus est le même, mais il est défini ci-dessous la guerre plugin, donc, si vous voulez avoir quelque chose comme ceci:
- Il alors que ce post a été créé, mais j'espère que cela peut aider. Elle permettra d'obtenir des propriétés générées à partir de Maven :
Malheureusement, il ya certains inconvénients :
Ce qui concerne.
Je voulais faire la même chose mais je n'étais pas satisfait avec les solutions existantes, y compris à l'aide de l'Maven approche de filtrage, ce qui est ok, mais je suis en train d'essayer de s'éloigner de la modification du code existant fichiers pendant le processus de génération j'ai donc jugé que l'approche, mais c'est une approche raisonnable.
La façon dont je obtenir mon projet Maven version dans mon fichier JSP est basée sur une approche similaire à celle de ici sauf que je n'ai pas de créer un Version.java fichier, au lieu de cela j'ai juste Maven écrire la version d'un fichier de propriétés, telles que la "version.propriétés", comme ceci:
version.propriétés:
et ont Maven mettre sur le chemin de la classe, par exemple, dans src/main/resources comme ceci:
Aussi, si vous utilisez le Framework Spring 3.x+ vous pouvez ajouter la configuration suivante pour charger des propriétés dans la version.propriétés si elle existe, sinon, il suffit de montrer "v0.0" ou quoi que ce soit:
Et enfin, dans votre /WEB-INF/vues/home.jsp que vous pouvez avoir quelque chose comme:
Et ce serait bien le rendu:
REMARQUE: Si vous n'utilisez pas le JavaConfig classes pour configurer le Framework Spring, alors vous pouvez faire la même chose avec le Printemps de configuration XML.
Utiliser le
maven-replacer-plugin
Inclure le plugin dans votre pom.xml comme ceci:
Maintenant n'importe où dans le fichier spécifié qui a le jeton
$BUILD_NUMBER$
le jeton seront remplacés.J'utilise ce plugin,
http://code.google.com/p/maven-substitute-plugin/
Vous pouvez faire quelque chose comme ça en Java,
et il est trivial de passer cette valeur à JSP.
Parent pom.xml:
Filtrage des ressources (espaces sont remplacés par des pom-valeurs de propriété ici)
De haricot et de la propriété de l'espace réservé dans la config webContext.xml:
Votre bean ressemble à ceci puis
Et voici votre JSP extrait de:
Je tendais le .jsp la valeur de
qui pourrait ressembler à
1.0.0-SNAPSHOT
par exemple.Si vous êtes juste d'entrer les valeurs null, vous devrez peut-être ajouter le classpath pour le Manifeste de l'
war
avecpour le chargeur de classe pour le ramasser.
Dans http://mojo.codehaus.org/jspc/jspc-maven-plugin/usage.html
Il déclare ceci:
Non-GUERRE Projets
Vous pouvez également utiliser ce plugin avec des non-guerre projets, par exemple pour valider les Jsp. Ils seront compilés, mais ne sont pas inclus dans la version finale de l'artefact, et pas de web.xml fichier sera généré ou modifiés.
Si vous voulez juste de valider et de compiler votre Jsp sans réellement y compris le code généré dans votre guerre de projet, vous pouvez également utiliser ensemble le includeInProject paramètre à false.
Vous pouvez l'utiliser dans votre fichier JSP (modèle.jsp dans mon exemple)
Puis dans votre pom.xml de votre projet, vous devez activer le filtrage:
Et vous obtenez votre page JSP avec la variable de version remplacée.
Il existe de nombreuses façons de transmettre des valeurs (tel que discuté dans les commentaires). Une autre approche (qui a ses propres avantages et inconvénients) est d'ajouter le paramètre(s) pour le manifeste de votre POM fichier:
et puis d'ouvrir et de lire le manifeste pour définir un singleton bean lors de la configuration ou de l'importer directement dans la page JSP avec:
Un avantage est que cette information est également présente dans le manifeste que facile de trouver de la documentation. Un inconvénient est la nécessité d'ouvrir et de lire le fichier manifest.