我正在使用 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并将其解压缩,然后重命名文件并再次压缩它。 感谢
答案 0 :(得分:11)
您可以使用
<outputFileNameMapping>...</outputFileNameMapping>
设置此程序集中包含的所有依赖项的映射模式使用
默认值:
${artifact.artifactId}-${artifact.version}${dashClassifier?}.${artifact.extension}.
答案 1 :(得分:2)
我遇到同样的问题,我需要使用unpack重命名一些文件,作为解决方案,我们可以使用两个maven-assembly-plugin执行。
在第一次执行期间,我们将使用格式fileSets
而不是存档格式之一,并准备文件内容,因此将包含所有需要文件的文件夹。
在第二次执行期间,我们将使用先前执行的文件夹作为files
中files.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的痛苦,这个插件做了锡上的说法:
(可在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
目标将移动目标/