2011-01-11 19 views
12

Tengo un problema en común y probablemente existan innumerables formas de resolverlo. Estoy buscando una solución elegante y simple para este escenario típico:¿Cómo establecer propiedades Ant basadas en variables en Eclipse?

Tengo un proyecto en Eclipse con un archivo de compilación Ant (build.xml) el archivo de compilación utiliza un archivo de propiedad (build.properties). En ese archivo de propiedades, quiero establecer una propiedad que apunta al directorio raíz del proyecto Eclipse tales como:

project.root = /path/to/eclipse/workspace/projectName 

o preferiblemente:

project.root = ${path.to.eclipse.workspace}/projectName 

¿Cómo se hace esto de una manera tal que:

  1. funciona en diferentes máquinas con diferentes rutas de acceso a la raíz del proyecto (es decir, en un ambiente de equipo)
  2. permite que el archivo build.xml hormiga para ser exe ejecutado dentro del eclipse
  3. Permite que se ejecute el archivo ant build.xml fuera del eclipse (es decir, desde la línea de comandos)
  4. permite que el archivo build.properties que existe en un directorio que no sea la raíz del proyecto
+0

Incluso me conformaría con una solución parcial que responde a las preocupaciones elegantemente # 1 y # 2. Los números 3 y 4 son mucho más difíciles. – gMale

Respuesta

7

creo que lo que estoy buscando es añadir lo siguiente al archivo build.properties:

project.root = ${basedir} 

alternativamente, que sólo puede utilizar la propiedadbasedir siempre que se necesite project.root .

Ocurrió que estaba mirando el source code for ivy.properties y vi que se estaba utilizando la propiedad basada en. Acabo de probar y verificar que esta propiedad funciona en máquinas diferentes, tanto desde el interior del eclipse y desde la línea de comandos, así como al hacer una llamada a la hormiga desde un directorio diferente, como:

ant -f /path/to/eclipse/workspace/projectName/build.xml 

Cuando llego a un minuto, Verificará que esto también funcione al importar el archivo de propiedad en diferentes ubicaciones (como dentro de src/main/resources/config/ivy/ivysettings.xml).

+0

Gracias, me ayudaron a mí también. –

8

Ver Ventana -> Preferencias -> Ant -> ejecutar -> Propiedades para definir las propiedades de encargo de hormigas que debe estar disponible para cualquier script ant invocado desde Eclipse. Simplemente establece la misma propiedad de forma manual al invocar el script desde la línea de comandos.

Su archivo build.properties puede existir donde lo desee. Use las instalaciones normales de Ant para importarlo a su secuencia de comandos.

+0

Gracias por tomarse el tiempo para responder. Lamentablemente, su respuesta no aborda directamente ninguno de los problemas anteriores porque 1) las propiedades de tiempo de ejecución de ant no contienen una entrada para la ruta raíz del proyecto. Supongo que puedo agregar $ {workspace_loc} o algo similar a la lista de propiedades, pero esto no funcionaría fuera de eclipse. 2) establecer una propiedad manualmente cuando invocar el script desde la línea de comando no se adapta bien a un entorno de equipo. 3) Por último, cuando se importa el archivo de propiedades, las rutas relativas pueden cambiar, por lo que se requieren rutas absolutas, lo que es un problema. – gMale

3

Para mi proyecto archieve.

ProjectName <dir> 
|_ ant <dir> 
    |_ ant.xml 

su caso puede simplemente cambiar el archivo XML hormiga, la <project default="main" basedir="../"/>

Entonces puede obtener la raíz del proyecto mediante la variable de

por ejemplo,<echo message= "Project Root: ${basedir}" />

3

si necesita más de las cosas triviales basedir =
Ant4Eclipse - un grupo de tareas de hormigas para acceder a las configuraciones del eclipse desde el interior de la hormiga -
puede ayudarle. Sólo tiene que usar como está o grep el código y recoger las partes pertinentes ..

+0

Gracias, investigaré esto. Suena útil. – gMale

1

Puede establecer eclipsar propiedades relativas para su generación Ant desde Eclipse

Ir a sus propiedades adyuvantes ANT y en la sección argumentos puede establecer propiedades -D utilizando la siguiente

-Dworkspace="${workspace_loc}" -Dproject_dir="${project_loc}" 

(aquí workspace_loc y project_loc son variables de eclipse). Estas propiedades se pueden acceder en el script de generación Ant como propiedades regulares, por ejemplo:

<echo message="${workspace}" /> 
<echo message="${project_dir}" /> 

reference screenshot

Cuestiones relacionadas