Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java “需要一个好的”;“家”;Maven构建期间web应用程序的目录_Java_Build Process_Build Automation_Maven_Temporary Directory - Fatal编程技术网

Java “需要一个好的”;“家”;Maven构建期间web应用程序的目录

Java “需要一个好的”;“家”;Maven构建期间web应用程序的目录,java,build-process,build-automation,maven,temporary-directory,Java,Build Process,Build Automation,Maven,Temporary Directory,我有一个JavaWeb应用程序,它使用JNDI来确定它的“主”目录,在那里发生各种配置文件和日志记录。在Maven构建期间,我们在settings.xml中的属性中设置主目录位置。在Maven构建资源筛选过程中,该属性又被放入Jetty/Tomcat JNDI文件中。一切都很好 然而,这种设置要求一台机器上一次只能进行一次Maven构建,这对于我们的Hudson CI服务器来说很快就会成为一个问题。它还要求用户在构建之前创建此目录,这有助于破坏构建的可移植性。理想情况下,我可以通过在父POM中定

我有一个JavaWeb应用程序,它使用JNDI来确定它的“主”目录,在那里发生各种配置文件和日志记录。在Maven构建期间,我们在settings.xml中的属性中设置主目录位置。在Maven构建资源筛选过程中,该属性又被放入Jetty/Tomcat JNDI文件中。一切都很好

然而,这种设置要求一台机器上一次只能进行一次Maven构建,这对于我们的Hudson CI服务器来说很快就会成为一个问题。它还要求用户在构建之前创建此目录,这有助于破坏构建的可移植性。理想情况下,我可以通过在父POM中定义一个变量,将父POM项目的“target”目录用作“home”目录:

${project.basedir}/target

但这不起作用,因为每个Maven模块都将
webapphome
重新定义为不同的东西。我不知道为什么。如果我能解决那个问题,我会准备好的

否则,我可以使用什么作为一个好的临时“home”或“working”目录,它是构建所特有的,并且在构建中的所有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>

${basedir}/。。
${root.dir}/out
${output.dir}/wars
...
maven战争插件
${output.wardir}/exploded/${project.artifactId}

是否在每个模块POM中定义
root.dir
属性?或者100%的模块比父pom低一级?我们有一个嵌套POM的目录。。。还是个好主意…@HDave-这些定义都在根pom中。然后我们有一个继承自它的servlet容器pom,以及继承它的实际servlet容器。它一路工作下去……这些继承的Maven项目都指向同一个目录?嗯……为什么对我不起作用?将重试…@HDave-是的,一个全局输出目录。