2015-12-07 67 views
0

我們的組織有一個爲rpms命名的約定。通常,rpm的基名比Maven項目短。還有一個關於如何命名發佈的約定。所以我們想要一個名字,如 ${shortname}-${project.version}-${release}.noarch.rpmrpm-maven-plugin如何控制rpm存儲在m2存儲庫中的名稱?

我想用rpm-maven-plugin而不是老的nmake技術構建這樣的rpms。

這很容易使用插件的參數來完成。目標目錄中生成的rpm具有所需的名稱。

然而,當mvn install安裝此轉成Maven倉庫,它堅持將其存儲在「Maven的路」:我想用,最初創建的名稱存儲在標準Maven倉庫目錄轉速${project.artifactId}-${project.version}.rpm

包上。

我該如何做到這一點?

更新: 我嘗試使用maven-install-plugin(安裝文件目標)並沒有得到我以後的結果。但這部分是因爲我沒有正確調用它。它沒有被調用。如果您定義了安裝文件目標,則必須將其明確綁定到安裝階段。這樣做,即將<phase>install</phase>添加到配置中,至少會調用我想要的安裝的執行,但它仍然不允許我根據需要命名rpm。

回答

0

據卡爾·海因茨·Marbaise,對Apache Maven項目的提交者,what I am trying to do is impossible, and should not be attempted.

不過,我需要我需要什麼,並找到了一個妥協,讓我大多認爲。我唯一需要犧牲的是假設存儲庫RPM必須與項目的其餘部分一起存放在同一個存儲庫目錄中。這是一個非常小的犧牲。一旦我這樣做了,我就可以將我想要的rpm存儲在Maven倉庫的一個目錄中,並用短名稱命名。

<plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-install-plugin</artifactId> 
     <version>2.5.2</version> 
     <executions> 
       <execution> 
         <id>install-rpm</id> 
         <goals> 
           <goal>install-file</goal> 
         </goals> 
         <phase>install</phase> 
         <configuration> 
           <file>${project.build.directory}/rpm/${rpm.name}/RPMS/noarch/${rpm.name}-${project.version}-${rpm.release}.noarch.rpm</file> 
           <groupId>${project.groupId}.rpms</groupId> 
           <artifactId>${rpm.name}</artifactId> 
           <version>${project.version}-${rpm.release}</version> 
           <classifier>noarch</classifier> 
           <packaging>rpm</packaging> 
         </configuration> 
       </execution> 
     </executions> 
</plugin> 

使用的${project.groupId}.rpms,而不僅僅是一個${project.groupId}允許的groupId建這種方式生活的倉庫,這是在我們的情況非常有用的主分支之外的所有進去。

使用版本${project.version}-${rpm.release}而不僅僅是${project.version}允許將版本合併到名稱中。

而且noarch分類器也可以將它歸入名稱中。