Je veux charger un fichier de propriétés différent basé sur une variable. Fondamentalement, si vous faites une construction de développement utilisez ce fichier de propriétés, si vous faites une construction de test, utilisez cet autre fichier de propriétés, et si vous faites une construction de production, utilisez un troisième fichier de propriétés.Existe-t-il un moyen de charger dynamiquement un fichier de propriétés dans NAnt?
Répondre
Étape 1: Définir une propriété dans votre script NAnt pour suivre l'environnement que vous construisez pour (local, test, production, etc.)
<property name="environment" value="local" />
Étape 2: Si vous ne possédez pas déjà une cible de configuration ou d'initialisation que toutes les cibles dépendent, puis créer une cible de configuration, et assurez-vous que vos autres objectifs dépendent.
<target name="config">
<!-- configuration logic goes here -->
</target>
<target name="buildmyproject" depends="config">
<!-- this target builds your project, but runs the config target first -->
</target>
Étape 3: Mettre à jour votre cible de configuration pour tirer dans un fichier de propriétés appropriées en fonction de la propriété de l'environnement.
<target name="config">
<property name="configFile" value="${environment}.config.xml" />
<if test="${file::exists(configFile)}">
<echo message="Loading ${configFile}..." />
<include buildfile="${configFile}" />
</if>
<if test="${not file::exists(configFile) and environment != 'local'}">
<fail message="Configuration file '${configFile}' could not be found." />
</if>
</target>
Remarque, je tiens à permettre aux membres de l'équipe de définir leurs propres fichiers local.config.xml qui ne reçoivent pas un défenseur du contrôle des sources. Cela fournit un endroit agréable pour stocker des chaînes de connexion locales ou d'autres paramètres d'environnement local.
Étape 4: Définissez la propriété de l'environnement lorsque vous invoquez NAnt, par exemple:
- Nant -D: environnement = dev
- Nant -D: environnement = test
- Nant -D: environnement = production
La façon dont j'ai fait ce genre de chose est d'inclure des fichiers de construction séparés en fonction du type de construction en utilisant le nant task. Une alternative possible pourrait être d'utiliser le iniread task in nantcontrib.
Vous pouvez utiliser la tâche include
pour inclure un autre fichier de construction (contenant vos propriétés) dans le fichier de construction principal. L'attribut if
de la tâche include
peut tester contre une variable pour déterminer si le fichier de construction doit être inclus:
<include buildfile="devPropertyFile.build" if="${buildEnvironment == 'DEV'}"/>
<include buildfile="testPropertyFile.build" if="${buildEnvironment == 'TEST'}"/>
<include buildfile="prodPropertyFile.build" if="${buildEnvironment == 'PROD'}"/>
J'ai eu un problème similaire que la réponse de scott.caligan partiellement résolu, mais je voulais que les gens soient en mesure de définir l'environnement et de charger le un propriétés ppropriate fichier simplement en spécifiant une cible comme ceci:
- Nant dev
- Nant Test
- stade nante
Vous pouvez le faire en ajoutant une cible qui définit la variable d'environnement. Par exemple:
<target name="dev">
<property name="environment" value="dev"/>
<call target="importProperties" cascade="false"/>
</target>
<target name="test">
<property name="environment" value="test"/>
<call target="importProperties" cascade="false"/>
</target>
<target name="stage">
<property name="environment" value="stage"/>
<call target="importProperties" cascade="false"/>
</target>
<target name="importProperties">
<property name="propertiesFile" value="properties.${environment}.build"/>
<if test="${file::exists(propertiesFile)}">
<include buildfile="${propertiesFile}"/>
</if>
<if test="${not file::exists(propertiesFile)}">
<fail message="Properties file ${propertiesFile} could not be found."/>
</if>
</target>
- 1. Comment charger un fichier de propriétés dans Google App Engine?
- 2. Existe-t-il un moyen pour un fichier JavaScript de charger un autre fichier dans AIR?
- 3. Charger des classes Java basées sur un chemin de classe dans un fichier de propriétés
- 4. Existe-t-il un moyen de charger un fichier de classe à assembler en cours d'exécution?
- 5. Charger les propriétés avant un test
- 6. Comment charger dynamiquement une image dans un rapport?
- 7. Lecture des valeurs du fichier de propriétés via NANT
- 8. Charger dynamiquement un fichier de classe avec un paquetage non par défaut et sans dossier imbriqué
- 9. Nant: l'expansion des propriétés dans une chaîne
- 10. JQuery pour charger dynamiquement le fichier Javascript
- 11. charger le son dynamiquement dans as2 ayant un problème
- 12. Charger dynamiquement des polices dans Flex/AS3
- 13. Existe-t-il un moyen de charger un fichier Crystal Report 9.0 à partir d'un flux?
- 14. Installation de nant avec un script batch
- 15. Un moyen simple de détecter les clés de propriétés inutilisées?
- 16. Comment enregistrer la sortie du journal NAnt dans un fichier?
- 17. Charger dynamiquement le code-behind d'un fichier xaml externe?
- 18. Y at-il un moyen de remplacer un texte dans un fichier PDF avec itextsharp?
- 19. Comment charger un fichier dans un hachage Perl?
- 20. Comment lire un fichier de propriétés externe dans Maven
- 21. Existe-t-il un moyen plus rapide de charger mysqldumps?
- 22. Comment définir dynamiquement quelles propriétés sont liées à un DataGridView?
- 23. Comment charger dynamiquement un Movieclip dans Flash CS4 et partager des informations avec un framework?
- 24. Meilleur moyen de télécharger un fichier binaire?
- 25. Utilisation de sed pour générer dynamiquement un nom de fichier
- 26. Fichier de propriétés dans Eclipse
- 27. Meilleure façon de définir dynamiquement un chemin de fichier Appender
- 28. Charger dynamiquement dll dans le luminaire fitnesse
- 29. Charger dynamiquement un rapport de ressources incorporées à l'aide de Microsoft.Reporting.WinForms
- 30. "Charger" un fichier depuis le shell django
Votre ligne échoue pour moi avec le message: "Tâche non autorisée dans les cibles, doit être au niveau du projet." –
vakman