.net - property - leer datos de un properties java
¿Hay alguna forma de cargar dinámicamente un archivo de propiedades en NAnt? (4)
La forma en que he hecho este tipo de cosas es incluir archivos de compilación separados dependiendo del tipo de compilación usando la tarea nant . Una posible alternativa podría ser utilizar la tarea iniread en nantcontrib .
Quiero cargar un archivo de propiedades diferente basado en una variable.
Básicamente, si se realiza una compilación de desarrollo, utilice este archivo de propiedades; si se está realizando una compilación de prueba, utilice este otro archivo de propiedades y, si se está realizando una compilación de producción, utilice un tercer archivo de propiedades.
Puede usar la tarea include
para incluir otro archivo de compilación (que contenga sus propiedades) dentro del archivo de compilación principal. El atributo if
de la tarea include
puede probarse contra una variable para determinar si el archivo de compilación debe incluirse:
<include buildfile="devPropertyFile.build" if="${buildEnvironment == ''DEV''}"/>
<include buildfile="testPropertyFile.build" if="${buildEnvironment == ''TEST''}"/>
<include buildfile="prodPropertyFile.build" if="${buildEnvironment == ''PROD''}"/>
Paso 1 : defina una propiedad en su script NAnt para rastrear el entorno para el que está construyendo (local, prueba, producción, etc.).
<property name="environment" value="local" />
Paso 2 : si aún no cuenta con un objetivo de configuración o inicialización del que dependan todos los destinos, cree un destino de configuración y asegúrese de que sus otros objetivos dependan de él.
<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>
Paso 3 : Actualice su objetivo de configuración para obtener un archivo de propiedades apropiado en función de la propiedad del entorno.
<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>
Tenga en cuenta que me gusta permitir que los miembros del equipo definan sus propios archivos local.config.xml que no se comprometan con el control de origen. Esto proporciona un buen lugar para almacenar cadenas de conexión locales u otras configuraciones de entorno local.
Paso 4 : configure la propiedad del entorno cuando invoque NAnt, por ejemplo:
- nant -D: environment = dev
- nant -D: environment = test
- nant -D: environment = producción
Tuve un problema similar que la respuesta de scott.caligan fue parcialmente resuelto, sin embargo, quería que las personas pudieran configurar el entorno y cargar el archivo de propiedades apropiado simplemente especificando un objetivo como ese:
- nant dev
- prueba nant
- etapa nant
Puede hacer esto agregando un objetivo que establece la variable de entorno. Por ejemplo:
<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>