1. 修改pom.xml
<build> <resources> <!--资源过滤*.properties到target/classes下--> <resource> <includes> <include>**/*.properties</include> <include>log4j.xml</include> </includes> <directory>src/main/resources</directory> <filtering>true</filtering> </resource> <!--复制除 *.properties 到target/classes/下,不做资源过滤--> <resource> <excludes> <exclude>**/*.properties</exclude> </excludes> <directory>src/main/resources</directory> <filtering>false</filtering> </resource> <!--复制除 *.properties 到target/classes/assembly-conf下,不做资源过滤--> <resource> <excludes> <exclude>**/*.properties</exclude> </excludes> <directory>src/main/resources</directory> <filtering>false</filtering> <targetPath>assembly-conf</targetPath> </resource> <!--资源过滤*.properties,log4j.xml到assembly-conf,最终由assembly插件复制到conf目录下--> <resource> <includes> <include>**/*.properties</include> <include>log4j.xml</include> </includes> <directory>src/main/resources</directory> <filtering>true</filtering> <targetPath>assembly-conf</targetPath> </resource> </resources> <plugins> <!--package时打出可执行的tar.gz--> <plugin> <artifactId>maven-assembly-plugin</artifactId> <configuration> <descriptor>src/main/assembly/assembly.xml</descriptor> </configuration> <executions> <execution> <id>make-assembly</id> <phase>package</phase> <goals> <goal>single</goal> </goals> </execution> </executions> </plugin> </plugins> </build>
2、src/main/assembly/assembly.xml
<assembly> <id>assembly</id> <formats> <format>dir</format><!-- 2012-8-23 update --> <format>zip</format> </formats> <includeBaseDirectory>false</includeBaseDirectory> <!--2012-8-23 modify true to false--> <fileSets> <fileSet> <directory>src/main/assembly/bin</directory> <outputDirectory>bin</outputDirectory> <fileMode>0755</fileMode> </fileSet> <fileSet> <directory>target/classes/assembly-conf</directory> <outputDirectory>conf</outputDirectory> <fileMode>0644</fileMode> </fileSet> </fileSets> <dependencySets> <dependencySet> <outputDirectory>lib</outputDirectory> <useProjectArtifact>true</useProjectArtifact> <scope>runtime</scope> </dependencySet> </dependencySets> </assembly>
简单解释一下:
1) format
format=zip设置打包的最终文件格式为zip.
支持的其他格式还有gz,tar,tar.gz,tar.bz2。
2) fileset
<fileSet>
<directory>src/main/bin</directory>
<outputDirectory>/</outputDirectory>
</fileSet>
将src/main/bin目录下的文件打包到根目录(/)下.
<fileSet>
<directory>src/main/config</directory>
<outputDirectory>config</outputDirectory>
</fileSet>
将src/main/config目录下的文件打包到config下.
3) dependencySets
<dependencySet>
<outputDirectory>lib</outputDirectory>
<scope>runtime</scope>
</dependencySet>
将scope为runtime的依赖包打包到lib目录下。
详细的语法不介绍了,请参考官方指南,有非常详尽的说明:Assembly Descriptor Format reference
其他相关
<build> <plugins> <plugin> <artifactId>maven-compiler-plugin</artifactId> <version>3.1</version> <configuration> <source>1.6</source> <target>1.6</target> <encoding>utf-8</encoding> </configuration> <dependencies> <dependency> <groupId>org.codehaus.plexus</groupId> <artifactId>plexus-compiler-javac</artifactId> <version>1.8.1</version> </dependency> </dependencies> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>2.16</version> <configuration> <skipTests>true</skipTests> </configuration> </plugin> <plugin> <artifactId>maven-resources-plugin</artifactId> <version>2.2</version> <configuration> <encoding>utf-8</encoding> </configuration> </plugin> </plugins> </build>