Нужен хороший "домашний" каталог для веб-приложения во время сборки Maven - PullRequest
2 голосов
/ 24 ноября 2010

У меня есть веб-приложение на Java, которое использует JNDI для определения своего «домашнего» каталога, в котором находятся различные файлы конфигурации и ведение журналов. Во время сборки Maven мы устанавливаем местоположение домашнего каталога в свойстве, которое находится в файле settings.xml. Это свойство, в свою очередь, помещается в файл JNDI Jetty / Tomcat во время сборки с помощью фильтрации ресурсов Maven. Все отлично работает.

Однако для этой настройки требуется, чтобы за один раз на одной машине могла происходить только одна сборка Maven, что вскоре станет проблемой для нашего сервера Hudson CI. Также требуется, чтобы пользователи создавали этот каталог перед сборкой, что помогает нарушить переносимость сборки. В идеале я мог бы использовать «целевой» каталог родительского проекта POM в качестве «домашнего» каталога, определив переменную в родительском POM:

<webapp-home>${project.basedir}/target<webapp-home>

Но это не работает, потому что каждый модуль Maven переопределяет webapp-home на что-то другое. Понятия не имею почему. Если бы я мог решить эту проблему, я был бы готов.

В противном случае, что я могу использовать в качестве хорошего временного «домашнего» или «рабочего» каталога, который уникален для сборки и является постоянным для всех модулей Maven в сборке? И бонусный вопрос: могу ли я попросить Maven создать каталог для меня, если он не существует?

1 Ответ

2 голосов
/ 24 ноября 2010

Мы используем глобальный каталог «out» в качестве webapp-home с подпапками для каждого проекта

<properties>
  <root.dir>${basedir}/..</root.dir>
  <output.dir>${root.dir}/out</output.dir>
  <output.wardir>${output.dir}/wars</output.wardir>
</properties>
...
<plugin>
  <artifactId>maven-war-plugin</artifactId>
  <configuration>
    <webappDirectory>
      ${output.wardir}/exploded/${project.artifactId}
    </webappDirectory>
   </configuration>
</plugin>
...