java - 在 Maven 构建期间需要一个好的 "home"目录用于 web-app

标签 java build-process build-automation maven temporary-directory

我有一个 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/

相关文章:

Java:如何将图像转换为字节[]

java - 按钮仅在第二次触摸后起作用

java - Spring 执行器可以与非 Web Spring Boot 应用程序一起使用吗?

ios - Phonegap 构建错误 : no iPhone Developer/Distribution identity found on your certificate

linux - 如何访问 Hudson 的 "console output"?

java - jsf 应用程序中的 OAuth 回调

java - 我在 IntelliJ IDEA 中使用 Artifacts 有什么用?

build-process - 何时使用构建工具?

git - CMake 外部项目 : how to specify relative path to the root CMakeLists. txt?

java - 将 Spock 与 Jenkins、Sonar 集成的最佳实践