Creating a zip archive of the maven “target” directory

后端 未结 2 1799
北恋
北恋 2020-12-05 06:25

I wish to create a zip archive of my \"target\" directory (${project.build.directory). using the maven-assembly-plugin seems to me like overkill for such a simple task (and

相关标签:
2条回答
  • 2020-12-05 07:07

    If you don't have any "special" needs for the generated .zip file, you can use one of the pre-defined Maven Assembly descriptors. The pre-defined assembly descriptors make it easy to quickly and easily create specific assemblies without having to provide your own assembly descriptor. Suppose you wanted to use the bin pre-defined descriptor. Then in the plugins section of your POM's build section, you could just add the following.

    <plugin>
      <artifactId>maven-assembly-plugin</artifactId>
      <version>2.6</version>
      <configuration>
        <descriptorRefs>
          <descriptorRef>bin</descriptorRef>
        </descriptorRefs>
      </configuration>
    </plugin>
    

    Of course, as always with Maven, if you want to do something beyond the default configuration, you'll have to create your own configuration, and in this case, that means your own assembly descriptor.

    The list of pre-defined descriptors is documented here.

    0 讨论(0)
  • 2020-12-05 07:22

    If the bin predefined assembly descriptor doesn't suit your needs, then you have three options:

    1. Using the maven-assembly-plugin - The maven-zip-plugin never came out because the assembly plugin can do everything the zip plugin was doing, and more, see MNG-2243.
    2. Using the maven-antrun-plugin (and maybe the build-helper-plugin to attach the zip) - There is an example here (and this looks more verbose than the assembly plugin at the end).
    3. Writing your own plugin - why would you do this when you have the assembly plugin.

    Personally, I would just use the maven-assembly-plugin with the following zip.xml descriptor:

    <assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0 http://maven.apache.org/xsd/assembly-1.1.0.xsd">
      <id>bin</id>
      <baseDirectory>/</baseDirectory>
      <formats>
        <format>zip</format>
      </formats>
      <fileSets>
        <fileSet>
          <directory>${project.build.directory}</directory>
        </fileSet>
      </fileSets>
    </assembly>
    

    And in your POM:

    <plugin>
      <artifactId>maven-assembly-plugin</artifactId>
      <version>2.6</version>
      <configuration>
        <descriptors>
          <descriptor>src/main/assembly/zip.xml</descriptor>
        </descriptors>
      </configuration>
      <executions>
        <execution>
          <id>make-assembly</id> <!-- this is used for inheritance merges -->
          <phase>package</phase> <!-- append to the packaging phase. -->
          <goals>
            <goal>single</goal> <!-- goals == mojos -->
          </goals>
        </execution>
      </executions>
    </plugin>
    
    0 讨论(0)
提交回复
热议问题