6.1 项目打包

Blade本身没有特殊的打包服务,但是因为项目是Maven结构所以结合maven中的打包插件就可以完成了。
怎么做呢?

加入打包插件

  1. <plugin>
  2. <artifactId>maven-assembly-plugin</artifactId>
  3. <configuration>
  4. <appendAssemblyId>false</appendAssemblyId>
  5. <descriptors>
  6. <descriptor>package.xml</descriptor>
  7. </descriptors>
  8. <outputDirectory>${project.build.directory}/dist/</outputDirectory>
  9. </configuration>
  10. <executions>
  11. <execution>
  12. <id>make-assembly</id>
  13. <phase>package</phase>
  14. <goals>
  15. <goal>single</goal>
  16. </goals>
  17. </execution>
  18. </executions>
  19. </plugin>
  20. <plugin>
  21. <groupId>org.apache.maven.plugins</groupId>
  22. <artifactId>maven-jar-plugin</artifactId>
  23. <version>2.4</version>
  24. <configuration>
  25. <archive>
  26. <manifest>
  27. <mainClass>com.bladejava.firstapp.Application</mainClass>
  28. <classpathPrefix>lib/</classpathPrefix>
  29. <addClasspath>true</addClasspath>
  30. </manifest>
  31. <manifestEntries>
  32. <!-- 在Class-Path下添加配置文件的路径 -->
  33. <Class-Path>resources/</Class-Path>
  34. </manifestEntries>
  35. </archive>
  36. </configuration>
  37. </plugin>

不用怕,我来解释一下上面两个插件。

Assembly插件不仅支持创建二进制归档文件,也支持创建源码归档文件,能帮你构建一个完整的发布包。
目前Assembly插件支持如下格式的归档文件:

  • zip
  • tar.gz
  • tar.bz2
  • jar
  • dir
  • war

maven-jar-plugin 帮你生成一个可执行的jar,mainClass 指定启动的主类。

此时还缺少一个配置文件 package.xml,在 pom.xml 同目录下创建一个 XML 文件

  1. <assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2"
  2. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  3. xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2 http://maven.apache.org/xsd/assembly-1.1.2.xsd">
  4. <id>customAssembly</id>
  5. <formats>
  6. <format>dir</format>
  7. </formats>
  8. <includeBaseDirectory>false</includeBaseDirectory>
  9. <fileSets>
  10. <fileSet>
  11. <directory>src/main/resources/</directory>
  12. <outputDirectory>/resources</outputDirectory>
  13. </fileSet>
  14. </fileSets>
  15. <dependencySets>
  16. <dependencySet>
  17. <outputDirectory>/lib</outputDirectory>
  18. <scope>runtime</scope>
  19. <excludes>
  20. <exclude>${project.groupId}:${project.artifactId}</exclude>
  21. </excludes>
  22. </dependencySet>
  23. <dependencySet>
  24. <outputDirectory>/</outputDirectory>
  25. <includes>
  26. <include>${project.groupId}:${project.artifactId}</include>
  27. </includes>
  28. </dependencySet>
  29. </dependencySets>
  30. </assembly>

这里我将发布包打成一个目录了,将所有依赖都打在 lib 包下面。现在已经大功告成了,怎么使用呢?

  1. mvn clean package

这样就可以打包了,和以前没有什么不同,打包完成后在 target/dist 目录中就是生成好的发布目录,
进入该目录执行:

  1. java -jar xxxx.jar

即可启动。

更多资料