Comment puis-je permettre une Fourmi fichier de propriétés pour remplacer la valeur définie dans un autre?
J'ai une fourmi fichier qui effectue les opérations suivantes:
<property file="project.properties" description="Project configuration properties"/>
<property file="build-defaults.properties" description="default build configuration."/>
<property file="build.properties" description="local build configuration overrides"/>
Je veux avoir les valeurs par défaut défini dans les paramètres par défaut.propriétés (ce qui est vérifié dans à SCM), mais de permettre aux développeurs de remplacer des valeurs dans une construction locale.propriétés afin qu'ils puissent travailler avec des chemins locaux.
Le problème est, il ne semble pas être le travail; j'ai mis cela en place, a créé un remplacement dans la construction.propriétés, mais la valeur de mon chemin reste l'un dans l'accumulation de valeurs par défaut.les propriétés. Comment puis-je y arriver?
Vous devez vous connecter pour publier un commentaire.
Le problème initial avec votre jeu est que vous avez
build.properties
etbuild-defaults.properties
inversée.Propriétés Ant sont fixés une fois, puis ne peut jamais être remplacé. C'est pourquoi toute propriété sur la ligne de commande via un
-Dproperty=value
aura toujours la priorité sur tout ce que vous avez défini dans le fichier; la propriété est définie et alors, rien ne peut le remplacer.Donc, la façon dont vous voulez que cette mise en place est:
De cette façon:
Fait propriétés ant peut être surchargée. Voir la documentation de la propriété de la tâche:
L'une des tâches qui sont en mesure de remplacer la valeur de la propriété est
script
. Aussi toute tâche personnalisée peut utiliser cette porte dérobée. D'autres propositions sont en question Ant loadfile propriété de remplacement. C'est contre l'esprit de l'ant et généralement inutile. Mais c'est bon à savoir ça, parce que j'ai juste eu un problème inverse: pourquoi la valeur de la propriété a changé bien que il est immuable.Voici un exemple de cible qui utilise tâche de script pour modifier la valeur d'une propriété. Il montre les méthodes de base pour travailler avec des propriétés. Toutes les méthodes sont décrites dans Ant Api qui n'est pas disponible en ligne. Vous devez télécharger le Ant Manuel. Dans son
api
répertoire, il existe de la documentation de l'api.Comment configurer facilement le
script
tâche? Rendant la tâche de script en cours d'exécution avecbeanshell
langue est un peu difficile et non-trivial, mais c'est expliqué dans cette réponse. Cependant, comme Rebse noté, en utilisantjavascript
langue est pris en charge hors de la boîte dans le jdk 6.javascript
suggestion. Il fonctionne comme un charme! J'ai édité ma réponse à inclure. Pour les autres langues, même si ils ont juste besoin d'un pot, le lien est toujours utile.<loadproperties ...
remplace les entrées en double définie à l'intérieur du fichier par défaut :-/ ... stackoverflow.com/questions/5358525/...Ant de propriété ne peuvent pas être remplacés, sauf si l'aide de la macro et de plug-in javascript pour le faire:
Étape 1: définir une fonction de macro pour remplacer la propriété
Étape 2: utilisation de la macro dans la fourmi xml