随着微服务架构思想的普及,不少公司或者独立开发人都倾向于将本身的项目模块化;这样极大的方便 了开发以及运维成本。当模块化后,工程中所依赖的第三方包就须要单独存放到一个公共的lib库,避免依赖的重复。spring
以spring cloud工程为例apache
每一个独立的模块pom文件中,加入maven插件maven-jar-plugin
和maven-dependency-plugin
架构
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <version>3.1.2</version> <configuration> <archive> <manifest> <mainClass>com.jason.HelloApplication</mainClass> <addClasspath>true</addClasspath> <classpathPrefix>lib/</classpathPrefix> </manifest> </archive> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-dependency-plugin</artifactId> <version>3.1.2</version> <executions> <execution> <id>copy-dependencies</id> <phase>package</phase> <goals> <goal>copy-dependencies</goal> </goals> <configuration> <outputDirectory>${project.build.directory}/lib</outputDirectory> </configuration> </execution> </executions> </plugin> </plugins> </build>
这样打出来的包就会将当前模块所依赖的第三方包放在lib文件夹下,不会将其打入到工程模块中,有效的减小了模块的体积。
固然,使用spring-boot-maven-plugin
替换掉maven-jar-plugin
也是能够的。运维