2012-10-09 56 views
1

我正在開發一個具有EJB模塊的項目。由於這個模塊沒有進入我們的Maven版本庫(Nexus),所以出現了一個問題,因爲它缺少版本號。我目前正試圖解決這個問題,但我似乎無法按照我想要的方式來解決問題。Maven和EJB3 - 控制客戶端的名稱

在EJB-項目的pom.xml:

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-ejb-plugin</artifactId> 
    <configuration> 
     <ejbVersion>3.0</ejbVersion> 
     <outputDirectory>${basedir}/target/classes </outputDirectory> 
     <jarName>MyProjectEJB</jarName> 
     <generateClient>true</generateClient> 
     <archive> 
     <manifest> 
      <addClasspath>true</addClasspath> 
     </manifest> 
     </archive> 
    </configuration> 
    </plugin> 

這是它原來的樣子。構建模塊產生兩個.jar文件:MyProjectEJB.jar和MyProjectEJB-client.jar。我試過下面添加版本編號:

<jarName>MyProjectEJB-${project.version}<jarName> 

現在,我得到的是這樣的:MyProjectEJB-4.1-SNAPSHOT.jar和MyProjectEJB-4.1-快照client.jar中。這幾乎是正確的,但我真的很希望版本號在客戶端也是最後一個(所以MyProjectEJB-client-4.1-SNAPSHOT)。

我該如何做到這一點?

回答

2

client在這種情況下是一個Maven分類器。

分類器允許區分從相同POM構建但內容不同的工件。這是一些可選的和任意的字符串,如果存在的話,會附加到版本號之後的工件名稱

如果您在名稱中移動它,則無法對其具有正確的依賴關係。

以下依存度將使用EJB:

<dependency> 
    <groupId>your.group</groupId> 
    <artifactId>MyProjectEJB</artifactId> 
    <version>1.0</version> 
</dependency> 

以下依存度將使用EJB客戶端:

<dependency> 
    <groupId>your.group</groupId> 
    <artifactId>MyProjectEJB</artifactId> 
    <version>1.0</version> 
    <classifier>client</classifier> 
</dependency> 
+0

但artifactId的是jar文件的名字不同,是不是可能只是控制生成的jar的名稱,並保持原始信息的原樣? – Tobb

+0

那麼在這種情況下,您並不控制客戶端庫的創建。 'maven-ejb-plugin'把客戶端分類器放在最後,對此你可以做很多事情。 – maba

+0

好吧,我會嘗試一個發佈版本,看看它是否會被添加到Nexus,這是最重要的事情。 – Tobb