我有一个 Java Web 应用程序,它使用 JNDI 来确定其“主”目录,其中各种配置文件和日志记录发生在该目录中。在 Maven 构建期间,我们在 settings.xml 中的属性中设置主目录位置。在 Maven 资源过滤构建期间,该属性又被放入 Jetty/Tomcat JNDI 文件中。一切都很好。
然而,这种设置要求一台机器上一次只能发生一个 Maven 构建,这很快就会成为我们的 Hudson CI 服务器的一个问题。它还要求用户在构建之前创建此目录,这有助于破坏构建的可移植性。理想情况下,我可以通过在父 POM 中定义一个变量来使用父 POM 项目的“目标”目录作为“主”目录:
<webapp-home>${project.basedir}/target<webapp-home>
但这不起作用,因为每个 Maven 模块都重新定义webapp-home
为不同的东西。我不知道为什么。如果我能解决那个问题,我就准备好了。
否则,我可以将什么用作一个好的临时“主”或“工作”目录,它是构建所独有的,并且在构建中的所有 Maven 模块中都是不变的?额外的问题是:如果目录不存在,我可以让 Maven 为我创建目录吗?