Sto*_*oud 4 java maven-2 maven
背景:我的大部分 Java 项目都有很多样板配置,我最终将这些配置写入我的 POM。(例如 sourceEncoding 总是 UTF-8,组织细节永远不会改变)。为了避免复制粘贴配置块,我创建了自己的标准“父”POM,我可以为我的每个项目扩展。
我也有许多在我从事的每个 Java 项目中使用的工具(例如 checkstyle、PMD 等),因此我已将每个工具的插件添加到我的标准父 pom 中。
PMD(和其他一些工具)有一个有趣的问题——它们需要一组配置文件才能正确运行。由于 Maven 更喜欢使用“每个模块一个可部署资源”的概念,因此我创建了以下(简化的)结构:
<My Template>
|--- Config Files
\--- Parent Pom
Run Code Online (Sandbox Code Playgroud)
到现在为止还挺好....
要求: “父 Pom”和“配置文件”总是一起构建和部署 - 即“父 Pom”版本 1.2.3 只能与“配置文件”版本 1.2.3 一起使用,所以当我在“父 POM”我需要执行以下操作:
<dependency>
<groupId>org.my-org</groupId>
<artifactId>config-files</artifactId>
<version>${project.version}</version>
<type>zip</type>
<scope>test</scope>
</dependency>
Run Code Online (Sandbox Code Playgroud)
问题:当我开始我的应用程序(假设版本 0.0.1)时,我使用“Parent Pom”作为我的父母。Maven 将计算项目的有效 POM,${project.version} 将被解释为 0.0.1(应用程序版本)而不是 1.2.3(父 POM 版本)。Maven 然后无法找到配置文件。
问题:我如何告诉 Maven “给我 POM xxx 的版本”?
我真正不需要做的是创建与 ${project.version} 同步的其他属性,因为我可以保证当我们为发布而修改 POM 时我们会忘记更新它!
您可以做一些事情。
您可以使用${project.parent.version}代替${project.version}.
但可能更好的方法是在您的父 pom 中定义pluginManagement和/或dependencyManagement使用适当的版本和配置。在您的子项目中,您只需在dependencies或build/plugins没有具体版本或配置规范中“使用”“托管”版本/配置。
例如,请参阅在org.sonatype.oss:oss-parent开源项目中广泛使用的POM。
| 归档时间: |
|
| 查看次数: |
6865 次 |
| 最近记录: |