Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/375.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/6.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模块和父模块的输出_Java_Maven_Multi Module - Fatal编程技术网

Java 组合maven模块和父模块的输出

Java 组合maven模块和父模块的输出,java,maven,multi-module,Java,Maven,Multi Module,我的项目由maven模块和父模块组成。每个模块都有自己的xml资源。 我想将每个模块的输出目录更改为父模块的目录。所有资源和类文件都将转到父模块的输出目录。 我将每个子模块的outputdirectory更改为父模块的输出目录,如下所示: <build> <outputDirectory>../target/classes</outputDirectory> </build> ../target/classes 问题是: 当我使

我的项目由maven模块和父模块组成。每个模块都有自己的xml资源。 我想将每个模块的输出目录更改为父模块的目录。所有资源和类文件都将转到父模块的输出目录。 我将每个子模块的outputdirectory更改为父模块的输出目录,如下所示:

<build>
       <outputDirectory>../target/classes</outputDirectory>
</build>

../target/classes
问题是:

  • 当我使用eclipse clean清理父模块时,它不会将子模块的输出复制到父模块的输出目录,因为我无法通过eclipse项目属性将子模块的输出文件夹更改为父模块的输出文件夹
  • 当我安装mvn clean时,它会将最后一个构建子模块的输出复制到目标目录,因为mvn clean是为每个子模块执行的,它会清理以前构建的模块的输出
  • 我想为所有模块创建一个jar,这可能吗
  • 如何组合父模块和子模块的所有输出

  • 请不要这样做,这完全违反了每一条规则。 它也不起作用,因为模块是一个接一个地处理的

    使用不同模块的原因是为了清楚地将它们分开。混合输出文件夹会破坏这一目标

    • 将模块分开
    • 创建一个单独的模块,使用maven assembly插件或maven shade插件将所有其他模块收集到单个目标jar中
    而且,再一次:


    Maven项目应该永远不要在项目文件夹外写东西

    正如你所说,我使用了maven汇编插件,它似乎解决了我的问题。我将所有模块收集到一个目标jar中。本教程帮助了我:我的问题是我有用于父模块和子模块的资源。当我右键单击并执行子模块(作为应用程序运行)时,它看不到父模块的资源。当我将它们收集到一个罐子中时,我也收集资源,这没有问题。但我不想总是执行jar,因为它更容易右键单击并作为应用程序运行您的父项目不应该有资源。父项目是没有内容的POM项目。这可以解释你的问题。我有共同的资源,我把它们放在父模块中。我应该如何解决这个问题?将您的资源放在一个单独的模块中,让其他模块依赖它。