java - 如何使 Maven 构建从常量中获取版本

标签 java maven

我有一个多模块项目。我引入了一个属性app.version,我在 pom.xml 中使用它来代替版本:在版本标记和模块部分的依赖项中。

我在Hudson环境中使用maven 3.1.1。

${app.version}替换写入值(1.6.0-SNAPSHOT)后,真正没有错误的构建顺序就消失了。

是什么导致了这个问题?

我一开始就收到此类警告,会影响吗?

[WARNING] Some problems were encountered while building the effective model     for com.mycompany.project:project-module:jar:2.4.0
[WARNING] 'version' contains an expression but should be a constant. @ com.mycompany.project:project-module:${app.version}, /var/lib/hudson/jobs/myJob TRUNK Maven/workspace/project-module/pom.xml, line 20, column 11

我需要解析太多的 pom.xml:s,所以层次结构如下,我给出:

main_pom
  |
   --- modules
  |      |
  |       --- all other modules
   --- test        |
                     module A
                   |   |
                   |    module B
                     module C

我让 hudson 从 main_pom 开始。它最后处理 main_pom。为什么? 现在,它从所有其他模块部分中的随机一个开始,构建其他模块,然后是模块、测试和 main_pom。为什么这个疯狂的命令?

失败发生在模块 A 中。它首先构建模块 A,而不是模块 B。

正确的顺序是从 main_pom -> 模块 B -> 模块 A 等开始,但它直接从模块 A 开始。

编辑:

我的 pom.xml 具有以下结构:

 <parent>
    <groupId>com.mycompany.project</groupId>
    <artifactId>modules or parent_pom</artifactId>
    <version>${app.version}</version>
    <relativePath>../modules or parent_pom</relativePath>
 </parent>

<dependency>
    <groupId>com.mycompany.project</groupId>
    <artifactId>some other module</artifactId>
    <version>${app.version}</version>
</dependency>

最佳答案

Maven 3.2.1 或更高版本是 required在主程序中干净地使用变量 <version> pom 文件的坐标。

关于java - 如何使 Maven 构建从常量中获取版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40907845/

相关文章:

java - Spring Cloud Data Flow @EnableBinding 注解会破坏构造函数注入(inject)

java - 如何在 REST API 中将驼峰式大小写转换为带下划线的小写?

java - Struts 2中的ActionContext对于当前请求来说是唯一的吗?

java - 解决 Eclipse 警告 "isn' t 参数化的正确方法是什么?

maven - 访问 maven-release-plugin 的发布版本

java - Maven Eclipse Java 错误类型的层次结构...不一致

java - maven 程序集插件的 Gradle 模拟

maven - 对本地 Maven 项目的依赖?

java - 无法将依赖项添加到转换为 maven 的 Spring 项目

java - 将java se转换为Spring MVC容易吗?我应该这样做吗?