【问题标题】:Maven: classes folder generated in multi-module maven project is emptyMaven:多模块maven项目中生成的classes文件夹为空
【发布时间】:2018-08-23 23:52:42
【问题描述】:

我的 maven 项目中有 3 个模块,每个模块都会生成一个 jar 文件。 然后我有一个第四个模块,可以从这些罐子中产生战争

这是我的 POM,它是所有模块的父级

<modules>
    <module>A</module>
    <module>B</module>
    <module>C</module>
    <module>DWAR</module>

 </modules>

在 DWAR 的 pom 中,我已经指定了对所有三个模块 A、B、C 的依赖关系

 <dependency>
            <groupId>yyyy</groupId>
            <artifactId>A</artifactId>
            <version>0.0.1-SNAPSHOT</version>
</dependency>

。 .等等。

我的war构建成功,war的lib文件夹包含了所有的jar,但是classes文件夹是空的。 但是在每个模块中,A、B、C 类文件夹中都填充了已编译的类。 我错过了什么?

【问题讨论】:

  • WAR 模块中有类吗?
  • @khmarbaise,不,war 模块中没有 .java 文件,它是一个空模块,仅用于将其他子模块 jar 收集到战争中。这是个问题吗?
  • 你为什么想要一个空的类文件夹?
  • 我提到这个 SO 问题是为了让多个模块之间发生战争stackoverflow.com/questions/14467325/…

标签: java maven build


【解决方案1】:

您描述的是预期的行为:您的战争包含三个罐子。战争本身没有java源文件,所以它的classes文件夹是空的。

构建战争并不会解开包含的罐子,而是将它们作为一个整体添加到战争中。

【讨论】:

  • 在将这场战争部署到一些应用服务器(如 tomcat)时。类加载将首先尝试从“类”文件夹,然后从 WEB-INF/lib *.jars。所以我认为功能不会受到影响。但无论如何,我希望将单个 jar 的类复制到类文件夹中。有什么办法吗?
  • 为什么不直接把源码放到war模块中呢?
  • 但这会破坏拥有多个模块的目的,每个模块都有自己的源代码。
  • 为什么要拥有不同的模块?您是否使用了这个多模块项目之外的一个或多个模块?所有只在战争中使用的职业都应该是战争的一部分。
  • 是的,每个模块都是由不同的团队开发的,很少有可能在这个项目之外作为单独的依赖项使用。
猜你喜欢
  • 2022-10-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-06
  • 1970-01-01
  • 1970-01-01
  • 2011-02-01
  • 1970-01-01
相关资源
最近更新 更多