Maven 如何从子项目引用父项目
我有一个这样的多模块项目:Maven 如何从子项目引用父项目,maven,Maven,我有一个这样的多模块项目: gwt应用程序 模型 webapp(取决于gwt应用程序和型号) 当我尝试在webapps中执行任何目标时,例如启动jetty,构建失败,因为maven找不到它的依赖项(我没有将模块安装到本地repo中)。是否有可能引用父pom,以便在子模块中运行任何目标时,其所有依赖项都将被编译(重新编译)?一个pom文件的示例非常好,但在多模块项目中,我总是在dependencyManagement标记中声明父pom中的依赖项: <dependencyManagemen
- gwt应用程序
- 模型
- webapp(取决于gwt应用程序和型号)
当我尝试在webapps中执行任何目标时,例如启动jetty,构建失败,因为maven找不到它的依赖项(我没有将模块安装到本地repo中)。是否有可能引用父pom,以便在子模块中运行任何目标时,其所有依赖项都将被编译(重新编译)?一个pom文件的示例非常好,但在多模块项目中,我总是在dependencyManagement标记中声明父pom中的依赖项:
<dependencyManagement>
<dependencies>
<dependency>
<groupId>group-a</groupId>
<artifactId>artifact-a</artifactId>
<version>1.0</version>
</dependency>
...
a组
人工制品
1
...
在模块pom中,我只需删除依赖项,而不使用版本:
<dependencies>
<dependency>
<groupId>group-a</groupId>
<artifactId>artifact-a</artifactId>
</dependency>
...
a组
人工制品
...
这样我们就可以确保每个模块使用相同的版本
需要记住的是,maven中的模块不会从父级继承依赖项。您必须声明模块本身中使用的依赖项
另一件事是,我认为,当您在IDE之外运行时(该IDE搜索工作区中的依赖项),您需要在本地repo中安装每个模块。如果您没有在父pom上执行,我认为maven不会在多模块项目中搜索未安装的依赖项。如果您使父pom具有常规设置,如
<plugins>
</plugins>
<dependencies>
</dependencies>
然后,这些组中的任何内容都会自动继承到子pom中。子pom只需要其中的父部分:
<parent>
</parent>
您甚至不需要以这种方式在子pom中声明相同的插件或依赖项。如果使用或在父pom中,或者希望覆盖父pom中的某些内容,则只需要在子pom中列出插件或依赖项。事实上,我刚刚度过了整个这周,我的构建现在运行得很好(小孩pom在父pom中有更多的东西,比如插件配置)
我问了一个可能对你有帮助的问题: