Java 创建maven父项目的最佳实践
我开发了一个多模块项目,它是一种java web框架。 其中一个子模块是我为框架用户提供的父pom。此父级配置插件及其依赖项。 我的问题是,这个父pom必须引用其版本为${project.version}的同级模块,并且由于maven项目继承,${project.version}不是我想要的 举例来说,我的框架项目结构如下所示:Java 创建maven父项目的最佳实践,java,maven,Java,Maven,我开发了一个多模块项目,它是一种java web框架。 其中一个子模块是我为框架用户提供的父pom。此父级配置插件及其依赖项。 我的问题是,这个父pom必须引用其版本为${project.version}的同级模块,并且由于maven项目继承,${project.version}不是我想要的 举例来说,我的框架项目结构如下所示: my-framework/ |_pom.xml |_parent/ |_pom.xml |_server/ |_pom.xml |_ui/ |_pom.xm
my-framework/
|_pom.xml
|_parent/
|_pom.xml
|_server/
|_pom.xml
|_ui/
|_pom.xml
<project
....
<!-- General information -->
<modelVersion>4.0.0</modelVersion>
<artifactId>my-framework-parent</artifactId>
<packaging>pom</packaging>
<parent>
<groupId>my.framework</groupId>
<artifactId>my-framework</artifactId>
<version>1.0.0-SNAPSHOT</version>
</parent>
<properties>
<my.framework.version>${project.version}</my.framework.version>
</properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>my.framework</groupId>
<artifactId>my-framework-server</artifactId>
<version>${my.framework.version}</version>
</dependency>
<dependency>
<groupId>my.framework</groupId>
<artifactId>my-framework-ui</artifactId>
<version>${my.framework.version}</version>
</dependency>
</dependencyManagement>
...
</project>
我的父母pom看起来像:
my-framework/
|_pom.xml
|_parent/
|_pom.xml
|_server/
|_pom.xml
|_ui/
|_pom.xml
<project
....
<!-- General information -->
<modelVersion>4.0.0</modelVersion>
<artifactId>my-framework-parent</artifactId>
<packaging>pom</packaging>
<parent>
<groupId>my.framework</groupId>
<artifactId>my-framework</artifactId>
<version>1.0.0-SNAPSHOT</version>
</parent>
<properties>
<my.framework.version>${project.version}</my.framework.version>
</properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>my.framework</groupId>
<artifactId>my-framework-server</artifactId>
<version>${my.framework.version}</version>
</dependency>
<dependency>
<groupId>my.framework</groupId>
<artifactId>my-framework-ui</artifactId>
<version>${my.framework.version}</version>
</dependency>
</dependencyManagement>
...
</project>
我终于找到了一个解决方案,多亏了。
但是我不得不发布一个pull请求来支持pluginManagement部分。
因此,解决方案是在发布之前,通过这个插件修改我的父pom。因此,我可以设置我想要的版本,而不是使用${project.version}。不确定我是否理解您的意思:您希望能够在版本1.0.0-SNAPSHOT
中设置我的框架,在版本1.0.1-SNAPSHOT
中设置我的框架父对象,我的框架服务器在1.0.2-SNAPSHOT
中,我的框架用户界面在1.0.3-SNAPSHOT
版本中?我个人认为这是一个坏主意,迟早会给您带来麻烦。不,我希望我的框架父级1.0.0-SNAPSHOT引用我的框架服务器1.0.0-SNAPSHOT和我的框架ui 1.0.0-SNAPSHOT。它们都是同一个多模块项目my framework的子模块。我的目标是,我的用户只需继承我的框架父项就可以获得正确的依赖项。嗯……我也不理解你的问题……基于你的问题,我假设与@hotzst相同……maven resources plugin/maven install plugin的描述听起来不对……但最好的是你能给出一个完整的示例(可能只有两个孩子和您的父母pom以及您想要分发的父母pom)…您不需要为自定义版本字符串定义属性,您可以使用project.version
,如果不指定其他版本,该属性将传播到子模块。您只需在依赖项管理中定义它。如果我使用${project.version},则继承我的框架父项的用户项目将没有正确的依赖项。实际上,maven将在用户项目的上下文中解析${project.version}。因此,如果用户的项目版本为4.0.0,maven将尝试加载我的框架服务器4.0.0,而不是1.0.0-SNAPSHOT。