下面是Spring Boot基于Maven打包分离lib及resource的完整攻略:
1. Maven打包
Maven项目中使用Maven插件进行打包,将项目代码打包成可执行JAR文件。具体步骤如下:
- 在Maven项目的pom.xml文件中,配置插件
spring-boot-maven-plugin
,如下所示:
xml
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>${spring-boot.version}</version>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
在<build>
标签下添加<plugins>
标签,然后添加<plugin>
标签配置spring-boot-maven-plugin
插件。其中<version>
标签指定了版本号。
- 在终端中进入项目目录,执行Maven打包命令:
mvn package
执行此命令后,Maven会自动执行项目的编译、测试和打包。打包成功后,在项目的target
目录下会生成一个以.jar
结尾的可执行文件。
2. 分离Lib及Resource
默认情况下,Maven打包会将所有依赖的Jar包以及资源文件(如配置文件)都打包进去,这样会导致Jar包比较大。为了缩小Jar包的大小,可以将这些文件分别打包,然后在程序启动时读取。具体步骤如下:
-
在项目中创建一个新的文件夹,例如
lib
,用于存放依赖的Jar包和资源文件。 -
在
pom.xml
文件中的<build>
标签下,添加以下配置:
xml
<resources>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*</include>
</includes>
<excludes>
<exclude>static/**</exclude>
<exclude>templates/**</exclude>
</excludes>
</resource>
</resources>
这样配置之后,运行mvn package
命令时,Maven会将项目中src/main/resources
目录下的所有文件打成resources.jar
,并放到target
目录下。
- 在
pom.xml
文件中添加以下配置:
xml
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<includeSystemScope>true</includeSystemScope>
<requiresUnpack>
<dependency>
<groupId>com.xxx</groupId>
<artifactId>yyy</artifactId>
</dependency>
<!-- 其他的依赖 -->
</requiresUnpack>
</configuration>
</plugin>
</plugins>
在<plugins>
标签下添加<plugin>
标签,然后配置spring-boot-maven-plugin
插件。其中<includeSystemScope>true</includeSystemScope>
表示将系统范围的依赖(例如JDK)也打包在内。 <requiresUnpack>
标签下的<dependency>
表示需要解压的依赖,配置此选项后,Maven会将指定的依赖解压到/BOOT-INF/lib/
目录下。
- 可以使用以下代码读取Jar包中的资源文件:
```java
@Value("classpath:/config.properties")
private Resource resource;
InputStream inputStream = resource.getInputStream();
Properties properties = new Properties();
properties.load(inputStream);
```
示例
下面给出两个示例来进一步说明:
示例一:分离Jar包和配置文件
假设有一个Spring Boot项目需要依赖com.xxx:yyy
和com.aaa:bbb
两个Jar包,并且需要读取config.properties
配置文件。我们将com.xxx:yyy
和com.aaa:bbb
打成一个名为lib.jar
的Jar包,并将config.properties
打成一个名为resources.jar
的Jar包。具体步骤如下:
-
进入
com.xxx:yyy
和com.aaa:bbb
两个项目的根目录,执行命令:mvn package
-
在两个项目的
target
文件夹下分别找到生成的yyy-1.0-SNAPSHOT.jar
和bbb-1.0-SNAPSHOT.jar
。复制这两个Jar包并将它们放到一个新的文件夹lib
中。 -
在
src/main/resources
目录下创建config.properties
文件,进行配置。 -
在
pom.xml
中添加以下配置:
```xml
这样配置之后,运行mvn package
命令时,Maven会将项目中src/main/resources
目录下的所有文件打成resources.jar
,并放到target
目录下。同时,com.xxx:yyy
和com.aaa:bbb
两个Jar包会打成一个lib.jar
,并放到target
目录下。
- 在程序中读取配置文件:
```java
@Value("classpath:/config.properties")
private Resource resource;
InputStream inputStream = resource.getInputStream();
Properties properties = new Properties();
properties.load(inputStream);
```
- 运行程序,在项目根目录下执行以下命令:
java -cp target/myapp.jar -Dloader.path=lib -jar target/myapp.jar
这样会启动程序,并将依赖的Jar包路径设置为lib
文件夹。程序将会读取两个Jar包中的文件,并加载配置文件。
示例二:分离Jar包和静态文件
在示例一中,我们将依赖的Jar包和配置文件分离出去。对于静态文件(如CSS、JavaScript、图片等),我们同样可以采用类似的方式进行分离,以缩小Jar包大小。具体步骤如下:
-
在
src/main/resources
目录下创建static
文件夹,用于存放静态文件。 -
将需要分离出去的静态文件(如
style.css
文件)拷贝到static
文件夹中。 -
在
pom.xml
中添加以下配置:
```xml
注意到<resources>
标签下有两个<resource>
标签。第一个标签用于打包application.properties
等资源文件,第二个标签用于打包static
文件夹。static
文件夹中的文件会被打成一个名为static.jar
的文件,存放在target
文件夹下。
- 在程序中访问静态文件:
html
<link rel="stylesheet" type="text/css" href="classpath:/static/style.css" />
- 运行程序,并将
static.jar
文件的路径加入到程序的classpath中,例如:
sh
java -jar myapp.jar -Dloader.path=static.jar
这样程序就可以读取静态文件,同时实现了分离Jar包和静态文件的功能。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Springboot基于maven打包分离lib及resource - Python技术站