Tengo la misma pregunta para Maven que alguien había sobre las Hormigas (¿Cómo puedo obtener el nombre de la última carpeta en mi basedir camino de Hormiga?).

¿Cómo se puede obtener el último directorio en el nombre de la variable ${project.basedir}?

Por ejemplo, si mi pom.xml está en:

/home/me/project/pom.xml

Entonces ${project.basedir} = /home/me/proyecto/

Quiero el nombre de directorio ‘proyecto’.

Gracias!

InformationsquelleAutor Naijaba | 2012-03-24

1 Comentario

  1. 12

    Uso: ${project.file.parentFile.name}

    Cómo resolverlo:

    La ${project} en realidad se resuelve en un MavenProject objeto. Desde allí, usted puede utilizar las propiedades del bean para obtener el valor que usted necesita. En este caso:

    • utilizar el file de la propiedad (a través de getFile())
    • utilizar el parentFile propiedad en java.io.Archivo (a través de getParentFile())
    • utilizar el name propiedad del Archivo para obtener el nombre de sin información de ruta de acceso (a través de getName())

    (edit: después de comentario)

    No es una buena idea usar las propiedades para el artefacto de IDs. El ${project.file.parentFile.name} la propiedad no puede ser resuelto cuando se utiliza como parte de artifactId, sin embargo, algunas propiedades de hacer el trabajo (project.groupId para el artifactId parece que funciona).

    Sin embargo, esto no es recomendable. De hecho, si usted utiliza cualquier propiedad para el artefacto ID en lugar de una constante, vas a obtener un aviso cuando la construcción de su proyecto:

    [WARNING] Some problems were encountered while building the effective model for <your groupID>:<your artifactID>:jar:1.0-SNAPSHOT
    [WARNING] 'artifactId' contains an expression but should be a constant. @ <your groupID>:<your artifact ID>:1.0-SNAPSHOT, <basedir>/pom.xml, line 5, column 14
    [WARNING] 
    [WARNING] It is highly recommended to fix these problems because they threaten the stability of your build.
    [WARNING] 
    [WARNING] For this reason, future Maven versions might no longer support building such malformed projects.
    • Hola, Por alguna razón esto no funciona como el artifactId. Lo que estoy tratando de hacer es poner mi artifactId para el nombre de la carpeta de la pom.xml el archivo está en. Es interesante porque ${project.basedir} se reemplaza con la ruta de acceso completa a la carpeta que contiene el pom.xml pero ${project.archivo} no se reemplaza y se toma para ser el artifactId literalmente. E. g.: <artifactId>${project.basedir}</artifactId> resultados: artifactId = /ruta/al/proyecto/ Considerando: <artifactId>${project.archivo}</artifactId> resultados y error porque artifactId se establece en: artifactId = ${project.archivo}
    • de hecho, probado en el artifactId y fracasó, pero funciona cuando lo he usado en una opción de configuración de un plugin. A pesar de que podría no ser una buena idea usar un patrón en el artifactId, como si alguien comprueba su proyecto a un directorio diferente nombre artifactId va a terminar siendo diferentes. Normalmente es una buena idea para pegarse a las cadenas simples para artifactId.
    • Super ! Gracias por que. He estado tratando de encontrar una buena manera de nomenclatura de versiones diferentes del mismo proyecto basado en el directorio que he comprobado, así que puedo cargar todo en un solo espacio de trabajo de Eclipse. Resulta que esto funcionó a la perfección: ${project.archivo.parentFile.parentFile.nombre}. Gracias !
    • ……y luego he leído todos los comentarios ….. oh, bueno.
    • Si alguien se preocupa, me hizo llegar este a trabajar por eliminar el plugin de eclipse projectNameTemplate etiqueta completamente y la adición de una propiedad simple en el nivel de proyecto: eclipse.projectNameTemplate>${project.file.parentFile.parentFile.name}-[artifactId]</eclipse.projectNameTemplate>
    • Para cualquier persona que visite este viejo respuesta: parece que Maven 3 no apoyo esto, pero requiere pomFile en lugar de file, así ${project.pomFile.parentFile.name}, y también permite que el simple ${project.projectDirectory.name}. Encontrado a través de maven.apache.org/ref/3.5.2/maven-model/apidocs/org/apache/maven/….

Dejar respuesta

Please enter your comment!
Please enter your name here