我有一个 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 为我创建目录吗?
最佳答案
我们使用全局“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>
关于java - 在 Maven 构建期间需要一个好的 "home"目录用于 web-app,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4263967/