项目打包

使用Maven的assembly插件实现自定义打包

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