2010-01-29 52 views
19

Estoy aprendiendo maven sobre la marcha mientras trabajo en un proyecto con un gran conjunto de proyectos para construir.En Maven, ¿puedo especificar una ruta relativa arriba de mi proyecto actual?

Actualmente, una línea en la compilación principal utiliza una ruta absoluta para especificar un directorio que es parte del repositorio de subversión pero "arriba" de su directorio.

como en: "C:/trabajo/proyecto/eclipse" donde "proyecto" es el directorio registrado, y el pom.xml está en "C: /work/project/src/subproject/pom.xml "

Me gustaría hacer que esa línea sea una dirección relativa.

Intenté especificar "../../ Eclipse ....", puse que no parecía funcionar.

También podría deberse a que esa misma variable está siendo utilizada por el archivo pom de un subproyecto secundario.

¿Algún consejo (aparte de reescribir todo el lío, que aún no sé lo suficiente sobre maven)?

Respuesta

22

con Maven, las cosas son relativa al directorio que contiene el pom.xml (que está representado por la propiedad ${basedir} y se llama el directorio base) . Sin embargo, hay algunas situaciones en las que podría tener que especificar una ruta relativa:

  • si un pom <parent> no es directamente por encima de un determinado módulo utilizando un elemento <relativePath> (ver this example)
  • si los módulos no están anidados (es decir, si usa un diseño plano) usando una ruta relativa en los diversos elementos <module> (como en this example).

Dicho todo esto, no estoy seguro de entender cuál es exactamente tu situación o lo que estás describiendo.

Quizás debería mostrar las partes relevantes de su POM si esto es posible.

+2

Usted dice 'las cosas son relativas al directorio que contiene el pom.xml', pero ¿no debería ser' las cosas son relativas al directorio que contiene el pom.xml que se está construyendo' ?, porque por ejemplo (y tal vez yo ' m wrong) si utiliza en algún lugar de un módulo padre una variable como '$ {project.basedir}' y luego construye el módulo hijo, '$ {project.basedir}' se convierte en el directorio para el hijo, no para el padre, entonces ese uso variable no sería en realidad relativo al pom.xml del padre –

+0

¿Puedo pasar a '' una variable? Por ejemplo: ' $ {parentPath}' donde mi variable 'parentPath' se definió dentro de la etiqueta' properties' – PapaSmurf

10

Idealmente, el pom.xml debe estar en el mismo directorio que su directorio src. Por ejemplo, supongamos que ha comprobado su proyecto de svn en una carpeta C:/work/project, luego mantenga el pom.xml principal en C:/work/project. src también debería estar en C:/work/project.

Sus otros subproyectos deben estar en C:/work/subproject1, C:/work/subproject2 y así cada uno tiene su propio pom.xml. Luego, en el principal pom.xml puede hacer referencia a los otros proyectos en el

<modules>  
    <module>../subproject1<module> 
    <module>../subproject2<module> 
</modules> 
Cuestiones relacionadas