Peringatan menggunakan proyek.orang tua.versi seperti versi modul di Maven 3

Di maven multi-modul proyek-proyek di mana saya ingin masing-masing modul untuk selalu menjaga versi yang sama sebagai orang tua, saya've biasanya melakukan sesuatu seperti berikut dalam modul's pom.xml:

  <parent>
    <groupId>com.groupId</groupId>
    <artifactId>parentArtifactId</artifactId>
    <version>1.1-SNAPSHOT</version>
  </parent>

  <groupId>com.groupId</groupId>
  <artifactId>artifactId</artifactId>
  <packaging>jar</packaging>
  <version>${project.parent.version}</version>
  <name>name</name>

Sejak saya mulai menggunakan maven 3.0-alpha-5, saya mendapatkan peringatan berikut untuk melakukannya.

[WARNING] 
[WARNING] Some problems were encountered while building the effective model for com.groupid.artifactId:name:jar:1.1-SNAPSHOT
[WARNING] 'version' contains an expression but should be a constant. @ com.groupid.artifactId:name::${project.parent.version}, /Users/whaley/path/to/project/child/pom.xml
[WARNING] 
[WARNING] It is highly recommended to fix these problems because they threaten the stability of your build.
[WARNING] 
[WARNING] For this reason, future Maven versions might no longer support building such malformed projects.
[WARNING]

I'm penasaran ingin tahu apa masalah sebenarnya dengan mengikat modul's versi untuk orang tua versi ini, jika ada? Atau ini kasus umum peringatan ketika ekspresi apapun, terlepas dari apakah itu's proyek.orang tua.versi ini digunakan untuk versi elemen.

Larutan

I'm penasaran ingin tahu apa masalah sebenarnya dengan mengikat modul's versi untuk orang tua versi ini, jika ada? Atau ini kasus umum peringatan ketika ekspresi apapun, terlepas dari apakah itu's proyek.orang tua.versi ini digunakan untuk versi elemen.

Nah, itu akan menjadi mudah untuk menguji. Karena saya penasaran, saya hanya melakukannya untuk anda gunakan berikut pom:


  4.0.0

    parent
    com.mycompany
    1.0-SNAPSHOT

  com.mycompany
  module
  ${myversion}
  module
  http://maven.apache.org

    1.0-SNAPSHOT

  ...

Dan maven memang mengeluh:

[WARNING] 'version' contains an expression but should be a constant. @ com.mycompany:module:${myversion}, /home/pascal/Projects/maven-maven3-testcase/module/pom.xml

Jujur, saya berpikir bahwa maven adalah di sini, itu doesn't membuat banyak akal untuk menggunakan properti untuk <versi> elemen (setidaknya tidak untuk proyek.versi) dan's baik untuk memiliki maven mengeluh tentang hal itu.

Dan jika anda ingin menggunakan induk pom versi dalam sub-modul, hanya menghapus <versi> tag dari anak pom, mereka akan mewarisi versi dari orang tua. Apa yang sedang anda lakukan adalah tidak perlu.

Komentar (12)