我如何正确配置maven多模块项目

时间:2017-07-20 16:18:12

标签: java spring eclipse maven spring-boot

我试图像这样配置我的多模块maven项目:

父项目

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

我的&#34;网络&#34;模块对我的核心有一个依赖关系&#34;项目和我的核心项目到我的&#34; dao&#34;项目

例如,我的网页包含:

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

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

enter image description here

例如,joda-time在我的网站中。

当我尝试解压缩我的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>

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

1 个答案:

答案 0 :(得分: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.

最终,您的网络战争文件将“传递”获得核心&amp;道和&amp;所有的依赖。看看这是否有帮助。

---更新:

我刚创建了一个带核心模块和示例的示例项目我的GIT中心的网络模块。

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

我希望这就是你要找的东西。