Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在maven中将多个文件夹转换为多个同名的zip存档_Maven - Fatal编程技术网

如何在maven中将多个文件夹转换为多个同名的zip存档

如何在maven中将多个文件夹转换为多个同名的zip存档,maven,Maven,我想用Maven收集项目模块 我有一个目录结构。可将文件夹添加到以下目录: project-module | |-dir1 |-dir2 |-dir3 |-... |-dirN |-bin.xml |-pom.xml 我尝试了maven汇编插件 pom.xml <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId&

我想用Maven收集项目模块 我有一个目录结构。可将文件夹添加到以下目录:

project-module
 |
 |-dir1
 |-dir2
 |-dir3
 |-...
 |-dirN
 |-bin.xml
 |-pom.xml
我尝试了maven汇编插件

pom.xml

<plugins>
<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-assembly-plugin</artifactId>
    <configuration>
        <descriptors>
            <descriptor>bin.xml</descriptor>
        </descriptors>
    </configuration>
    <executions>
        <execution>
            <id>sql dir</id>
            <goals>
                <goal>single</goal>
            </goals>
            <phase>package</phase>
        </execution>
    </executions>
</plugin>
</plugins>
请帮助我。

可用于处理单个程序集描述符:

<plugin>
  <groupId>com.soebes.maven.plugins</groupId>
  <artifactId>iterator-maven-plugin</artifactId>
  <executions>
    <execution>
      <phase>package</phase>
      <goals>
        <goal>iterator</goal>
      </goals>
      <configuration>
        <items>
          <item>dir1</item>
          <item>dir2</item>
          <item>dir3</item>
        </items>
        <pluginExecutors>
          <pluginExecutor>
            <plugin>
              <groupId>org.apache.maven.plugins</groupId>
              <artifactId>maven-assembly-plugin</artifactId>
            </plugin>
            <goal>single</goal>
            <configuration>
              <descriptors>
                <descriptor>${project.basedir}/bin.xml</descriptor>
              </descriptors>
              <finalName>${item}</finalName>
              <appendAssemblyId>false</appendAssemblyId>
            </configuration>
          </pluginExecutor>
        </pluginExecutors>
      </configuration>
    </execution>
  </executions>
</plugin>
这将导致
target/dir1.zip

它也可以迭代
,而不是显式地列出
,尽管我没有看到一种方法可以限制为
dir*

(编辑开始)

例如,要迭代
parentDir
的(直接)子目录:

  <configuration>
    <folder>${project.basedir}/parentDir</folder>
    <pluginExecutors>
    ... as above ...

${project.basedir}/parentDir
... 如上所述。。。
然后,程序集描述符(
bin.xml
)可以引用类似于
${project.basedir}/parentDir/${item}
的内容,就像前面一样


如果在
${project.basedir}
上迭代,缺少过滤器仍然是一个问题-这也会压缩
目标
目录。

谢谢您的回答。假设我想迭代一个,我将如何在bin.xml文件中使用它?
<plugin>
  <groupId>com.soebes.maven.plugins</groupId>
  <artifactId>iterator-maven-plugin</artifactId>
  <executions>
    <execution>
      <phase>package</phase>
      <goals>
        <goal>iterator</goal>
      </goals>
      <configuration>
        <items>
          <item>dir1</item>
          <item>dir2</item>
          <item>dir3</item>
        </items>
        <pluginExecutors>
          <pluginExecutor>
            <plugin>
              <groupId>org.apache.maven.plugins</groupId>
              <artifactId>maven-assembly-plugin</artifactId>
            </plugin>
            <goal>single</goal>
            <configuration>
              <descriptors>
                <descriptor>${project.basedir}/bin.xml</descriptor>
              </descriptors>
              <finalName>${item}</finalName>
              <appendAssemblyId>false</appendAssemblyId>
            </configuration>
          </pluginExecutor>
        </pluginExecutors>
      </configuration>
    </execution>
  </executions>
</plugin>
<?xml version="1.0" encoding="UTF-8"?>
<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.3"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.3 http://maven.apache.org/xsd/assembly-1.1.3.xsd">
    <id>${item}</id>
    <formats>
        <format>zip</format>
    </formats>
    <includeBaseDirectory>false</includeBaseDirectory>
    <fileSets>
        <fileSet>
            <directory>${project.basedir}/${item}</directory>
            <outputDirectory>/</outputDirectory>
        </fileSet>
    </fileSets>
</assembly>
  <configuration>
    <folder>${project.basedir}/parentDir</folder>
    <pluginExecutors>
    ... as above ...