2

我有一个 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 为我创建目录吗?

4

1 回答 1

2

我们使用全局“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>
于 2010-11-24T06:22:25.053 回答