2012-06-01 35 views
2

我嘗試配置Maven的螞蟻插件內置神器複製到自定義位置得到實際的輸出文件名:如何從行家

<plugins> 
    <plugin> 
    <artifactId>maven-antrun-plugin</artifactId> 
    <executions> 
     <execution> 
     <phase>install</phase> 
     <goals> 
      <goal>run</goal> 
     </goals> 
     <configuration> 
      <tasks> 

      <copy verbose="true" 
       file="target/${project.build.finalName}.${project.packaging}" 
       tofile="${user.home}/tmp/test/${project.build.finalName}.${project.packaging}"/> 

      </tasks> 
     </configuration> 
     </execution> 
    </executions> 
    </plugin> 
</plugins> 

這工作得很好,只要包裝的一個標準的......但是如果項目的打包是「捆綁」(生成一個.jar),那麼$ {project.packaging}變量是「捆綁」,實際文件以「.jar」=複製失敗。

如何獲取放入輸出目錄的文件的「真實」名稱?

+0

什麼捆帕茨卡ging實現?我找不到任何關於谷歌的參考。 –

+0

包裝包與maven-bundle-plugin一起使用來創建可以部署在osgi容器中的jar文件(osgi-bundles)。 –

回答

2

沒有辦法可靠地做到這一點。例如,一個POM可能有幾個工件作爲結果(二進制JAR,源JAR,測試二進制JAR,測試源JAR)。哪一個是正確的複製?

可能的解決方案:

  1. 更換${project.packaging}jar。應該在大多數情況下工作。
  2. 使用文件集而不是硬編碼的文件名讓Ant根據模式找出名稱。
1

一種方法是創建一個名爲packaging-suffix或類似的東西的屬性。在所有項目中(如果有的話),您可以定義此屬性的值爲${project.packaging},但在捆綁項目中,您的值定義爲jar。然後,您在antrun插件congfiguration中引用該屬性。

根據您的項目設置的方式,這可能或可能不是一個好的解決方案。

即:

<properties> 
    <packaging-suffix>${project.packaging}</packaging-suffix> 
</properties> 

使用VS

<properties> 
    <packaging-suffix>jar</packaging-suffix> 
</properties> 

然後

<copy verbose="true" 
    file="target/${project.build.finalName}.${packaging-suffix}" 
    tofile="${user.home}/tmp/test/${project.build.finalName}.${packaging-suffix}"/> 
7

在螞蟻的build.xml:

${project.build.directory}/${project.artifactId}-${project.version}.jar