标签:pre lap 结构 and war包 允许 sdn not 实现
Spring Boot Maven Plugin插件提供spring boot在maven中的支持。允许你打包可运行的jar包或war包。
插件提供了几个maven目标和Spring Boot 应用一起工作。总的有:
repackage:创建一个自动可执行的jar或war文件。它可以替换常规的artifact,或者用一个单独的classifier附属在maven构建的生命周期中。
下面我们详细看下repackage这个目标。
用了重新打包应用程序,我们需要在pom.xml文件中加一个简单的引用到Spring Boot Maven Plugin插件中,代码如下:repaceage 最简单的结构
1 <build> 2 ... 3 <plugins> 4 ... 5 <plugin> 6 <groupId>org.springframework.boot</groupId> 7 <artifactId>spring-boot-maven-plugin</artifactId> 8 <version>1.5.7.RELEASE</version> 9 <executions> 10 <execution> 11 <goals> 12 <goal>repackage</goal> 13 </goals> 14 </execution> 15 </executions> 16 </plugin> 17 ... 18 </plugins> 19 ... 20 </build>
这个例子重新打包了一个jar包或war包,这个jar包或war包被构建于maven生命周期的package阶段,包括定义在工程中的任何依赖(包括scope为provided)。如果有一些依赖模块需要被排除掉,可以使用一个exclude的选项。
默认情况下,repackage和run这两个maven目标会包括定义在工程中的任何依赖。一些依赖被要求从可执行jar包中排除。下面有三种方式可以在包运行时排除依赖模块。
方式1::排除一个具体的maven 模块,通过唯一的groupId和artifactId组合来实现。(如果有必要,可以加入classifier来唯一确认。)
1 <project> 2 ... 3 <build> 4 ... 5 <plugins> 6 ... 7 <plugin> 8 <groupId>org.springframework.boot</groupId> 9 <artifactId>spring-boot-maven-plugin</artifactId> 10 <version>1.5.6.RELEASE</version> 11 <configuration> 12 <excludes> 13 <exclude> 14 <groupId>com.foo</groupId> 15 <artifactId>bar</artifactId> 16 </exclude> 17 </excludes> 18 </configuration> 19 ... 20 </plugin> 21 ... 22 </plugins> 23 ... 24 </build> 25 ... 26 </project>
方式2:排除和“指定的artifactId”相符的所有maven模块。
1 <project> 2 ... 3 <build> 4 ... 5 <plugins> 6 ... 7 <plugin> 8 <groupId>org.springframework.boot</groupId> 9 <artifactId>spring-boot-maven-plugin</artifactId> 10 <version>1.5.6.RELEASE</version> 11 <configuration> 12 <excludeArtifactIds>my-lib,another-lib</excludeArtifactIds> 13 </configuration> 14 ... 15 </plugin> 16 ... 17 </plugins> 18 ... 19 </build> 20 ... 21 </project>
方式3:排除属于“指定的groupId”的所有maven模块。
1 <project> 2 ... 3 <build> 4 ... 5 <plugins> 6 ... 7 <plugin> 8 <groupId>org.springframework.boot</groupId> 9 <artifactId>spring-boot-maven-plugin</artifactId> 10 <version>1.5.6.RELEASE</version> 11 <configuration> 12 <excludeGroupIds>com.foo</excludeGroupIds> 13 </configuration> 14 ... 15 </plugin> 16 ... 17 </plugins> 18 ... 19 </build> 20 ... 21 </project>
这个插件还可以重写项目的manifest (可运行jar包的MANIFEST.MF),特别是管理Main-Class和Start-Class启动类。如果默认的配置不能满足需求,我们可以在这里做配置。通过插件的layout属性可以确实地控制Main-Class。
1 <build> 2 ... 3 <plugins> 4 ... 5 <plugin> 6 <groupId>org.springframework.boot</groupId> 7 <artifactId>spring-boot-maven-plugin</artifactId> 8 <version>1.5.7.RELEASE</version> 9 <configuration> 10 <mainClass>${start-class}</mainClass> 11 <layout>ZIP</layout> 12 </configuration> 13 <executions> 14 <execution> 15 <goals> 16 <goal>repackage</goal> 17 </goals> 18 </execution> 19 </executions> 20 </plugin> 21 ... 22 </plugins> 23 ... 24 </build>
执行打包命令:mvn package spring-boot:repackage。注意:这里不能写成mvn spring-boot:repackage。否则会报Source must refer to an existing file异常。
layout属性默认根据archive type(jar or war)而定。总的有5中类型:
当自己写项目需要发布出去给别人依赖时,就只需要自己写的代码打包,依赖的包不能打进来。否则最后别人在用你提供的包时,就会出现重复包,导致最后打包时包会非常巨大。
在这个Spring Boot Maven Plugin这个插件下,我们只需要提供classifier即可实现这个功能。具体如下:
1 <project> 2 ... 3 <build> 4 ... 5 <plugins> 6 ... 7 <plugin> 8 <groupId>org.springframework.boot</groupId> 9 <artifactId>spring-boot-maven-plugin</artifactId> 10 <version>1.5.7.RELEASE</version> 11 <executions> 12 <execution> 13 <goals> 14 <goal>repackage</goal> 15 </goals> 16 <configuration> 17 <classifier>exec</classifier> 18 </configuration> 19 </execution> 20 </executions> 21 ... 22 </plugin> 23 ... 24 </plugins> 25 ... 26 </build> 27 ... 28 </project>
喜欢请关注我的博客--壮壮熊。
Spring Boot Maven Plugin -- repackage目标
标签:pre lap 结构 and war包 允许 sdn not 实现
原文地址:http://www.cnblogs.com/zhouqinxiong/p/repackage.html