1.首先咱們須要在pom.xml中配置maven的assembly插件html
1 <build> 2 <plugins> 3 <plugin> 4 <groupId>org.apache.maven.plugins</groupId> 5 <artifactId>maven-jar-plugin</artifactId> 6 <version>2.3.1</version> 7 <configuration> 8 <archive> 9 <manifest> 10 <!--運行jar包時運行的主類,要求類全名--> 11 <mainClass>com.hafiz.Runner</mainClass> 12 <!-- 是否指定項目classpath下的依賴 --> 13 <addClasspath>true</addClasspath> 14 <!-- 指定依賴的時候聲明前綴 --> 15 <classpathPrefix>./</classpathPrefix> 16 </manifest> 17 </archive> 18 </configuration> 19 </plugin> 20 <plugin> 21 <groupId>org.apache.maven.plugins</groupId> 22 <artifactId>maven-assembly-plugin</artifactId> 23 <executions> 24 <execution><!-- 配置執行器 --> 25 <id>make-assembly</id> 26 <phase>package</phase><!-- 綁定到package生命週期階段上 --> 27 <goals> 28 <goal>single</goal><!-- 只運行一次 --> 29 </goals> 30 <configuration> 31 <finalName>${project.name}</finalName> 32 <descriptor>src/main/assembly/assembly.xml</descriptor><!--配置描述文件路徑--> 33 </configuration> 34 </execution> 35 </executions> 36 </plugin> 37 </plugins> 38 </build>
2.接着咱們在src/main/assembly文件中配置assembly.xml文件java
<assembly> <id></id> <formats> <format>tar.gz</format><!--打包的文件格式,也能夠有:war zip --> </formats> <!--tar.gz壓縮包下是否生成和項目名相同的根目錄 --> <includeBaseDirectory>true</includeBaseDirectory> <dependencySets> <dependencySet> <!--是否把本項目添加到依賴文件夾下 --> <useProjectArtifact>true</useProjectArtifact> <outputDirectory>lib</outputDirectory> <!--將scope爲runtime的依賴包打包 --> <scope>runtime</scope> </dependencySet> </dependencySets> <fileSets> <fileSet> <directory>src/main/bin</directory> <outputDirectory>/</outputDirectory> </fileSet> <!-- 能夠多個fileSet --> <!-- <fileSet> <directory>doc</directory> <outputDirectory>/doc</outputDirectory> <useDefaultExcludes>true</useDefaultExcludes> </fileSet> <fileSet> <directory>bin</directory> <outputDirectory>/bin</outputDirectory> <includes> <include>build.xml</include> <include>mvn_shutdown.sh</include> <include>mvn_start.sh</include> <include>shutdown.sh</include> <include>start.sh</include> </includes> <useDefaultExcludes>true</useDefaultExcludes> </fileSet> <fileSet> <directory>src/main/webapp</directory> <outputDirectory>/webapp</outputDirectory> <useDefaultExcludes>true</useDefaultExcludes> </fileSet> <fileSet> <directory>target/classes</directory> <excludes> <exclude>**/*.java</exclude> </excludes> <outputDirectory>/webapp/WEB-INF/classes</outputDirectory> <useDefaultExcludes>true</useDefaultExcludes> </fileSet> <fileSet> <directory>logs</directory> <outputDirectory>/logs</outputDirectory> <excludes> <exclude>**/*.*</exclude> </excludes> <useDefaultExcludes>true</useDefaultExcludes> </fileSet> --> </fileSets> </assembly>
其中,生成的lib文件夾下放該項目的全部依賴以及該服務jar包,src/main/bin文件夾下咱們通常放start.sh和stop.sh兩個腳本文件用來開啓和關閉該服務,打包後直接放到根目錄下。生成的tar.gz文件的名字爲:maven-assembly-plugin插件中配置的finalName-assembly.xml配置的id(若assembly中沒有指定id,則只有前半部分). web
Prod:指的是在maven配置文件中的環境 apache