Получение имени последней папки из maven $ {project.basedir} - PullRequest
4 голосов
/ 24 марта 2012

У меня к Maven тот же вопрос, что и у кого-то об Ant ( Как я могу получить имя последней папки в моем пути basedir в Ant? ).

Как выполучить только последнее имя каталога из переменной $ {project.basedir}?

Например, если мой pom.xml находится в:

/ home / me / project / pom.xml

Тогда $ {project.basedir} = / home / me / project /

Я хочу только имя каталога 'project'.

Спасибо!

1 Ответ

11 голосов
/ 24 марта 2012

Использование: ${project.file.parentFile.name}

Как это сделать:

${project} фактически разрешается в MavenProject объект. Оттуда вы можете просто использовать свойства bean-компонента, чтобы получить необходимое вам значение. В этом случае:

  • использовать свойство file (через getFile () )
  • использовать свойство parentFile в java.io.File (через getParentFile () )
  • используйте свойство name файла, чтобы получить только имя без информации о пути (через getName () )

(редактировать: после комментария)

Не рекомендуется использовать свойства для идентификаторов артефактов. Свойство ${project.file.parentFile.name} не может быть разрешено при использовании его как части artifactId, однако некоторые свойства работают (project.groupId для artifactId, похоже, работает).

Однако это не рекомендуется. Фактически, если вы используете какое-либо свойство для идентификатора артефакта вместо константы, вы получите предупреждение при создании проекта:

[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.
...