赞
踩
系统中使用maven构建项目的时候,依赖另一个工程项目,在进行构建的时候需要将另一个工程的zip包解压到本地目录,然后复制到lib目录下面,步骤如下:
1、添加zip包的依赖,需要指定type类型为zip,默认为jar文件
- <dependency>
- <groupId>com.github.codegerm</groupId>
- <artifactId>hangout-dist</artifactId>
- <version>${hangout.version}</version>
- <type>zip</type>
- <classifier>release-bin</classifier>
- </dependency>
2、使用maven-dependency-plugin插件在copy dependency包的时候,去掉我们的zip包
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-dependency-plugin</artifactId>
- <executions>
- <execution>
- <id>copy-dependencies</id>
- <phase>prepare-package</phase>
- <goals>
- <goal>copy-dependencies</goal>
- </goals>
- <configuration>
- <outputDirectory>${project.build.directory}/lib</outputDirectory>
- <overWriteReleases>false</overWriteReleases>
- <overWriteSnapshots>false</overWriteSnapshots>
- <overWriteIfNewer>true</overWriteIfNewer>
- <excludeArtifactIds>hangout-dist</excludeArtifactIds>
- </configuration>
- </execution>
- </executions>
- </plugin>
3、使用maven-dependency-plugin插件解压zip文件到指定目录
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-dependency-plugin</artifactId>
- <executions>
- <execution>
- <id>unpack</id>
- <phase>prepare-package</phase>
- <goals>
- <goal>unpack</goal>
- </goals>
- <configuration>
- <artifactItems>
- <artifactItem>
- <groupId>com.github.codegerm</groupId>
- <artifactId>hangout-dist</artifactId>
- <version>${hangout.version}</version>
- <type>zip</type>
- <classifier>release-bin</classifier>
- <outputDirectory>${project.build.directory}/hangout-dist-${hangout.version}-release-bin</outputDirectory>
- </artifactItem>
- </artifactItems>
- </configuration>
- </execution>
- </executions>
- </plugin>
4、使用maven-antrun-plugin插件复制解压后的目录文件中的jar包到工程lib目录下面
- <plugin>
- <artifactId>maven-antrun-plugin</artifactId>
- <executions>
- <execution>
- <id>create-staging-area</id>
- <phase>prepare-package</phase>
- <goals>
- <goal>run</goal>
- </goals>
- <configuration>
- <tasks>
- <copy todir="${project.build.directory}/lib">
- <fileset dir="${project.build.directory}/hangout-dist-${hangout.version}-release-bin/modules" />
- <fileset dir="${project.build.directory}/hangout-dist-${hangout.version}-release-bin/libs">
- <exclude name="commons-collections-3.2.1.jar"/>
- </fileset>
- </copy>
- </tasks>
- </configuration>
- </execution>
- </executions>
- </plugin>
利用上面的maven脚本和插件,就能轻松的实现我们的需求!
如果我们想通过maven将工程中指定的目录打成jar包,则我们需要使用到assembly.xml,在maven-assembly-plugin插件中指定assembly.xml文件:
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-assembly-plugin</artifactId>
- <version>2.4</version>
- <!-- The configuration of the plugin -->
- <configuration>
- <finalName>${project.name}-${project.version}</finalName>
- <outputDirectory>${project.build.directory}/release/</outputDirectory>
- <!-- Specifies the configuration file of the assembly plugin -->
- <descriptors>
- <descriptor>src/main/assembly/assembly.xml</descriptor>
- </descriptors>
- </configuration>
- <executions>
- <execution>
- <id>make-assembly</id> <!-- this is used for inheritance merges -->
- <phase>package</phase> <!-- bind to the packaging phase -->
- <goals>
- <goal>single</goal>
- </goals>
- </execution>
- </executions>
- </plugin>
在指定的目录下面创建assembly.xml文件,然后添加我们需要压缩为zip的目录和文件
- <assembly>
- <id>bin</id>
- <!-- Generates a zip package containing the needed files -->
- <formats>
- <format>zip</format>
- </formats>
-
- <!-- Adds dependencies to zip package under lib directory -->
- <!-- Project artifact is not copied under library directory since it is added to the root directory of the zip package. -->
- <fileSets>
- <fileSet>
- <directory>${project.basedir}/target</directory>
- <outputDirectory>/target</outputDirectory>
- <includes>
- <include>lib/**</include>
- <include>conf/**</include>
- <include>bin/**</include>
- <include>registry/**</include>
- <include>nativelibs/**</include>
- <include>*</include>
- </includes>
- </fileSet>
- </fileSets>
- </assembly>
编译构建maven,我们就可以将工程中特定的文件或者目录创建为一个zip包了!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。