2013-12-23 40 views
9

我有一個項目,在編譯/構建/彙編過程完成後,我需要重命名Maven Assembly Plugin生成的最終輸出文件。Maven在一切完成後重命名文件

Maven Assembly Plugin正根據項目名稱生成最終的.zip文件,我需要將其完全重命名爲final-version.oxt。我試圖用maven-antrun-plugin來重命名它,正如其他類似的問題所指出的,但沒有運氣(我以前從未使用過Maven或Ant,所以也許我錯過了一些東西)。

這是項目pom.xml<build>部分。重命名部分似乎完全被忽略,因爲我的home文件夾中沒有生成文件。

<build> 
    <plugins> 

     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-assembly-plugin</artifactId> 
      <version>2.4</version> 
      <executions> 
       <execution> 
        <id>assembly</id> 
        <phase>package</phase> 
        <goals> 
         <goal>attached</goal> 
        </goals> 
        <configuration> 
         <archive> 
          <manifestFile>src/main/resources/META-INF/MANIFEST.MF</manifestFile> 
         </archive> 
         <descriptors> 
          <descriptor>src/main/assembly/ooo-jar.xml</descriptor> 
          <descriptor>src/main/assembly/ooo.xml</descriptor> 
         </descriptors> 
        </configuration> 
       </execution> 
      </executions> 
     </plugin> 

     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-antrun-plugin</artifactId> 
      <executions> 
       <execution> 
        <phase>deploy</phase> 

        <configuration> 
         <tasks> 
          <copy file="${project.build.directory}/target/libreofficeplugin-ooo.zip" 
          tofile="/home/brunofinger/final-version.oxt" /> 
         </tasks> 
        </configuration> 
       </execution> 
      </executions> 
     </plugin> 

    </plugins> 
</build> 

回答

9

一些修改,使工作,可能是phase是錯誤的,但使用<phase>install</phase>似乎使其工作:

<plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-antrun-plugin</artifactId> 
      <version>1.7</version> 
      <executions> 
       <execution> 
        <phase>install</phase> 

        <configuration> 
         <target> 
          <copy file="${project.build.directory}/libreofficeplugin-ooo.zip" tofile="${project.build.directory}/final-version.oxt" /> 
         </target> 
        </configuration> 
        <goals> 
         <goal>run</goal> 
        </goals> 
       </execution> 
      </executions> 
     </plugin> 
-1

您不需要使用antrun重命名輸出文件。只需使用程序集插件的標籤finalName來重命名輸出文件即可。

<?xml version="1.0" encoding="UTF-8"?> 
<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-assembly-plugin</artifactId> 
    <version>2.4</version> 
    <executions> 
     <execution> 
     <id>assembly</id> 
     <phase>package</phase> 
     <goals> 
      <goal>attached</goal> 
     </goals> 
     <configuration> 
      <archive> 
       <manifestFile>src/main/resources/META-INF/MANIFEST.MF</manifestFile> 
      </archive> 
      <descriptors> 
       <descriptor>src/main/assembly/ooo-jar.xml</descriptor> 
       <descriptor>src/main/assembly/ooo.xml</descriptor> 
      </descriptors> 
      <finalName>final-version.oxt</finalName> 
     </configuration> 
     </execution> 
    </executions> 
</plugin> 
+1

它沒有工作,它仍然附加'.zip'擴展名到文件末尾,生成一個名爲'final-version.oxt.zip'的文件。我需要擺脫'.zip'。 –

+1

你說得對。 finalName僅重命名文件的名稱,而不是擴展名。 –

+0

maven-assembly-plugin 3.0.0中的'finalName'配置元素不再存在。 – Barett

6

這個問題是近一個歲,但萬一別人是面臨類似的問題,這裏是一個替代解決方案。

如果您正在尋找這樣做更mavenish的方式,你可以使用

<plugin> 
    <groupId>com.coderplus.maven.plugins</groupId> 
    <artifactId>copy-rename-maven-plugin</artifactId> 
    <version>1.0.1</version> 
    <executions> 
     <execution> 
     <id>rename-file</id> 
     <phase>install</phase> 
     <goals> 
      <goal>rename</goal> 
     </goals> 
     <configuration> 
      <sourceFile>${project.build.outputDirectory}/libreofficeplugin-ooo.zip</sourceFile> 
      <destinationFile>${project.build.outputDirectory}/final-version.oxt</destinationFile> 
     </configuration> 
     </execution> 
    </executions> 
    </plugin> 

,並在情況下,你要複製的,而不是重命名,使用copy目標,而不是rename目標。