Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Maven: unpack zip artifact to a SPECIFIC folder name

I am trying to download tomcat zip artifact and unpack it int a folder named tomcat. What i get is tomcat/apache-tomcat-7.0.19/ How can I get rid of the annoying intermediate directory?

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-dependency-plugin</artifactId>
<version>2.4</version>
<executions>
    <execution>
        <id>unpack-tomcat</id>
        <phase>process-sources</phase>
        <goals>
            <goal>unpack</goal>
        </goals>
        <configuration>
            <artifactItems>
                <artifactItem>
                    <groupId>org.apache</groupId>
                    <artifactId>tomcat</artifactId>
                    <version>7.0.19-win64</version>
                    <type>zip</type>
                    <overWrite>false</overWrite>
                    <outputDirectory>tomcat</outputDirectory>
                    <excludes>webapps/**</excludes>
                </artifactItem>
            </artifactItems>                            
        </configuration>
    </execution>
</executions>
</plugin>
like image 466
archmisha Avatar asked Jan 19 '12 17:01

archmisha


2 Answers

Maybe there is more "mavenish" way for achieving my proposal :) yet using maven ant plugin could be a workaround for your situation :

<plugin>
    <artifactId>maven-antrun-plugin</artifactId>
        <version>1.7</version>
                <executions>
                    <execution>
                        <phase>package</phase>
                        <configuration>
                            <target>
                                <move file   = "tomcat/apache-tomcat-7.0.19/*"
                                      tofile = "tomcat" />
                            </target>
                        </configuration>
                        <goals>
                            <goal>run</goal>
                        </goals>
                    </execution>
                    <execution>
                        <phase>package</phase>
                        <configuration>
                            <target>
                                <delete dir = "tomcat/apache-tomcat-7.0.19"/>
                            </target>
                        </configuration>
                        <goals>
                            <goal>run</goal>
                        </goals>
                    </execution>
                </executions>
</plugin>
like image 62
Shmil The Cat Avatar answered Nov 17 '22 03:11

Shmil The Cat


maven unpack with flat path

http://pulkitsinghal.blogspot.com/2011/04/jetspeed-finally-unpack-plugin-with.html:

There is absolutely no way (known to me as of this blog post writing) to get this maven plugin to spit out a flat structure.

So a good alternative is to use the jetspeed-unpack-maven-plugin which allows the users to specify <flat>true</flat> as part of the configuration in order to obtain the desired file without the burden of having the relative path from the root of the artifact included as well.

Docs state that this plugin is also able to unzip arbitrary relative path inside zipped maven artifact to specific destination folder.

like image 23
Vadzim Avatar answered Nov 17 '22 03:11

Vadzim