通过Maven-assembly插件创建zip文件时重命名文件

时间:2013-05-14 11:51:07

标签: maven maven-assembly-plugin

我正在使用 maven-assembly 插件创建压缩,如何在使用相同的插件进行压缩时重命名某些文件?

更新

这是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>

我正在获取该jar并将其解压缩,然后重命名文件并再次压缩它。 感谢

3 个答案:

答案 0 :(得分:11)

您可以使用

 <outputFileNameMapping>...</outputFileNameMapping>

设置此程序集中包含的所有依赖项的映射模式使用

默认值:

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

答案 1 :(得分:2)

我遇到同样的问题,我需要使用unpack重命名一些文件,作为解决方案,我们可以使用两个maven-assembly-plugin执行。

在第一次执行期间,我们将使用格式fileSets而不是存档格式之一,并准备文件内容,因此将包含所有需要文件的文件夹。

在第二次执行期间,我们将使用先前执行的文件夹作为filesfiles.file.destName的来源,我们将能够使用zip重命名任何文件,并作为第二次执行的格式可以使用public function registerbatch(){ for ($i = 0; $i < count($this->input->post('surname','firstname','age','school','course','email')); $i++) { $this->form_validation->set_rules("surname[$i]", "surname[$i]", "required"); $this->form_validation->set_rules("firstname[$i]", "firstname[$i]", "required"); $this->form_validation->set_rules("age[$i]", "Age[$i]", "required"); $this->form_validation->set_rules("school[$i]", "School[$i]", "required"); $this->form_validation->set_rules("course[$i]", "Course[$i]", "required"); $this->form_validation->set_rules("email[$i]", "Email[$i]", "required"); } if ($this->form_validation->run() == TRUE) { $reg_dat = array( 'surname' => $this->input->post('surname'), 'name' => $this->input->post('firstname'), 'age' => $this->input->post('age'), 'school' => $this->input->post('school'), 'course' => ($this->input->post('course')), 'email' => ($this->input->post('email')), ); $this->user_model->add_user($reg_dat); $this->load->view('user/home_view'); } else { $this->load->view('user/batch_register'); } 之类的存档格式来创建最终存档。

答案 2 :(得分: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目标将移动目标/

中的文件