2013-05-14 81 views
6

创建zip文件我使用行家组装插件创建ZIP,我怎么能重命名一些文件,而使用相同的插件荏苒?重命名文件,同时通过Maven的组装插件

更新:

这是POM

<profile> 
     <id>D1</id> 
     <activation> 
      <property> 
       <name>D1</name> 
       <value>true</value> 
      </property> 
     </activation> 
     <build> 
      <plugins>    
       <plugin> 
        <groupId>org.apache.maven.plugins</groupId> 
        <artifactId>maven-assembly-plugin</artifactId> 
        <version>2.2.2</version> 
        <executions> 
         <execution> 
          <phase>package</phase> 
          <goals> 
           <goal>single</goal> 
          </goals> 
          <configuration> 
           <descriptors> 
            <descriptor>assembly/online-distribution.D1.xml</descriptor> 
           </descriptors> 
           <appendAssemblyId>false</appendAssemblyId> 
          </configuration> 
         </execution> 
        </executions> 
       </plugin> 
      </plugins> 
     </build> 
    </profile> 

轮廓这是Assembly.xml

<?xml version="1.0" encoding="UTF-8" ?> 
<assembly 
xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly- 
    plugin/assembly/1.1.2 http://maven.apache.org/xsd/assembly-1.1.2.xsd"> 
<formats> 
    <format>tar.gz</format> 
</formats> 
<id>online</id> 
<includeBaseDirectory>false</includeBaseDirectory> 
    <dependencySet> 
     <outputDirectory>resources</outputDirectory> 
     <unpack>true</unpack> 
     <includes> 
      <include>${project.groupId}:core-config:jar</include> 
     </includes> 
     <unpackOptions> 
      <includes> 
      <include>coresrv/env-config.D1.properties</include> 
      </includes> 
     </unpackOptions> 
    </dependencySet> 
    <files> 
    <file> 
     <source>${project.groupId}/core-config.jar/coresrv/env-config.D1.properties</source> 
     <outputDirectory>/</outputDirectory> 
     <destName>env-config.properties</destName> 
    </file> 
</files> 
</assembly> 

我得到那个罐子和拆包,然后重命名文件并再次压缩。 感谢

+0

你能显示你正在使用的pom文件和描述符吗? – khmarbaise 2013-05-14 16:18:23

+0

嗨,感谢您的回复。我已更新。 – 2013-05-15 04:59:44

+0

你确定你的描述符是正确的,导致它看起来不正确(dependencySet)没有依赖关系集。你没有警告?此外,为什么不使用最新版本的maven-assembly-plugin(2.4)。 – khmarbaise 2013-05-15 09:04:09

回答

9

您可以使用

<outputFileNameMapping>...</outputFileNameMapping> 

其中规定对所有依赖映射模式包括在此组件使用

默认值:

${artifact.artifactId}-${artifact.version}${dashClassifier?}.${artifact.extension}. 
+0

也适用于dependencySet元素,如果只有一些依赖关系应该重命名。 – 2013-08-23 11:30:19

2

我面临着同样的问题,我需要使用解压缩来重命名一些文件,并且作为解决方案,我们可以使用两次执行maven-assembly-plugin。

在首次执行期间,我们将使用格式dir而不是归档格式之一,并将准备文件内容,并且结果将包含具有所有必需文件的文件夹。

在第二次执行,我们将在fileSets使用文件夹从以前的执行源与files,我们将不得不重新命名使用files.file.destName任何文件的能力,以及作为第二执行格式,我们可以使用归档格式一样zip创建最终归档。

1

回答后人的旧帖子...下一次我问谷歌,并发送到这里。

重命名曾经是Maven的痛苦,这个插件所做的是在锡说:

copy-rename-maven-plugin

(在Maven central可用)

使用方便:

 <plugin> 
      <groupId>com.coderplus.maven.plugins</groupId> 
      <artifactId>copy-rename-maven-plugin</artifactId> 
      <version>1.0.1</version> 
      <executions> 
       <execution> 
        <id>copy-properties-file</id> 
        <phase>prepare-package</phase> 
        <goals> 
         <goal>copy</goal> 
        </goals> 
        <configuration> 
         <sourceFile>source.props</sourceFile> 
         <destinationFile>destination.properties</destinationFile> 
        </configuration> 
       </execution> 
      </executions> 
     </plugin> 

注意:rename目标会将文件移动到目标位置/