【问题标题】:How can i correctly configure maven multimodule project如何正确配置 Maven 多模块项目
【发布时间】:2017-12-26 11:23:22
【问题描述】:

我正在尝试像这样配置我的多模块 maven 项目:

父项目

  • 网络
  • 核心
<modules>
    <module>../dao</module>
    <module>../core</module>
    <module>../web</module>
</modules>

我的“网络”模块对我的“核心”项目有一个依赖关系,而我的核心项目对我的“dao”项目有一个依赖项。

例如,我的 web pom 包含:

<dependency>
    <groupId>com.groupid</groupId>
    <artifactId>core</artifactId>
    <version>${project.version}</version>
    <classifier>jar-with-dependencies</classifier>
</dependency>

当我构建我的父项目时,所有构建工作都很好,但是有一个非常奇怪的依赖副本。事实上,我的父项目包含所有子依赖项

例如,joda-time 在我的 web pom 中。

当我尝试解压缩我的 web.war 时,它包含我的 core-jar-with-depency.jar 和所有依赖项。

<build>
    <plugins>
        <plugin>
            <artifactId>maven-assembly-plugin</artifactId>
            <configuration>
                <descriptorRefs>
                    <descriptorRef>jar-with-dependencies</descriptorRef>
                </descriptorRefs>
                <skipAssembly>false</skipAssembly>
            </configuration>
            <executions>
                <execution>
                    <id>make-assembly</id>
                    <phase>package</phase>
                    <goals>
                        <goal>single</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

如何配置我的父项目以禁用依赖项包含?

【问题讨论】:

  • 显然这就是它的工作方式。

标签: java spring eclipse maven spring-boot


【解决方案1】:

使用分类器 jar-with-dependencies 的任何具体原因?看你的需要,我想你可以做到这一点---

dao --> module with packaging jar
core --> module with packaging jar & dependency of dao without any classifier.
web --> module with packagingc war & dependency of core without any classifier.

最终,您的网络战争文件将“传递”获取核心、dao 及其所有依赖项。看看这是否有帮助。

--- 更新:

我刚刚在我的 GIT 中心创建了一个包含核心模块和 Web 模块的示例项目。

https://github.com/Ravikharatmal/MyGitRepo/tree/master/MultiModuleMavenProject

Web 依赖于 Core。 Core 依赖于第三方库 commons-lang。当我执行“mvn install”时,您可以看到最终的 web.war 文件具有 core.jar 和 commons-lang.jar,即 core.jar 的传递依赖。

https://github.com/Ravikharatmal/MyGitRepo/tree/master/MultiModuleMavenProject/web/target/web-0.0.1-SNAPSHOT/WEB-INF/lib

我希望这就是你要找的。​​p>

【讨论】:

  • 我创建了“jar-with-dependency”来将所有模块及其依赖项打包到特定文件中,并将它们像黑盒一样包含在网络中。实际上我有 web.war 女巫包含所有依赖项目。
  • 据我所知,即使没有 jar-with-dependency,一个带有 war 打包的项目也会将所有的传递依赖打包到 war 文件中,即如果你像上面那样做模块,那么你的 web.war将拥有 core.jar、dao、jar 以及 dao.jar 和 core.jar 所需的所有其他依赖项。
  • 感谢您的回答。我很惊讶地看到,除了具有依赖关系的 jar 之外,父级还下载了 jar。这似乎是一个正常的操作。
  • 很高兴我能帮上忙。如果这有帮助,请接受答案。
猜你喜欢
  • 2020-11-01
  • 2017-09-21
  • 1970-01-01
  • 2016-04-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-25
  • 1970-01-01
相关资源
最近更新 更多