最近在学习使用spring-boot
我构建好项目后 pom.xml如下
....
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.3.8.RELEASE</version>
</parent>
....
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.4</version>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<classpathPrefix>lib/</classpathPrefix>
<mainClass>com.xx.Application</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
</plugins>
当使用了spring-boot的parent后,plugin这样配置,在使用mvn package
后能够自动打包出一个jar,并能用java -jar xx.jar
运行。
然后有个新需求,这个时候我这个项目需要归并为另外一个项目的子模块,根据官方文档吧pom.xml改成如下
....
<parent>
<groupId>com.xx</groupId>
<artifactId>platform</artifactId>
<version>1.0-SNAPSHOT</version>
</parent>
....
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>${spring.boot.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
....
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.4</version>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<classpathPrefix>lib/</classpathPrefix>
<mainClass>com.xx.Application</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
</plugins>
就是parent变动了下,其他依赖和插件都没变。此时我使用mvn package打出的jar包只有几百KB,也就是依赖的jar包没有被自动引入。同时,jar包里面也没有orgspringframeworkbootloader
这层目录了。
现在该怎么处理才能打出对的jar包?
造化弄人,看到直接可以使用spring-boot-maven-plugin
来打包,所以直接修改下spring-boot-maven-plugin
的配置,改成如下,运行mvn package
OK
写的有点乱 请见谅!
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<!-- 指定该Main Class为全局的唯一入口 -->
<mainClass>com.xx.Application</mainClass>
<layout>ZIP</layout>
</configuration>
<executions>
<execution>
<goals>
<goal>repackage</goal><!--可以把依赖的包都打包到生成的Jar包中-->
</goals>
</execution>
</executions>
</plugin>
用Gradle吧,天然支持多模块打包。只需一个简单的配置:
a项目的build.gradle文件:
这样子配置一下,打包就是一个jar包了。