使用Maven仅打包指定models文件夹内容生成project-models.jar的方法咨询
实现方案
下面提供两种常用实现方式,你可以根据自己的项目维护需求选择:
方案一:不调整现有结构,通过插件自定义打包规则
适合临时打包、不想改动现有项目结构的场景,操作步骤如下:
- 在你项目的
pom.xml中添加如下配置:
<build> <plugins> <!-- 配置编译器仅编译models目录下的Java源码,覆盖默认的src/main/java编译目录 --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.10.1</version> <configuration> <compileSourceRoots> <compileSourceRoot>src/main/models</compileSourceRoot> </compileSourceRoots> </configuration> </plugin> <!-- 配置生成的jar包名称 --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <version>3.2.2</version> <configuration> <finalName>project-models</finalName> </configuration> </plugin> </plugins> </build>
- 执行打包命令:
mvn clean package,执行完成后在target目录下就会生成project-models.jar - 如果需要部署到私服,先在
pom.xml中配置好distributionManagement的私服地址,再执行mvn deploy即可完成部署。
补充说明:如果你的
models目录下存放的不是Java源码,而是资源文件,直接用resources配置指定目录即可:<build> <resources> <resource> <directory>src/main/models</directory> <includes> <include>**/*</include> </includes> </resource> <!-- 如果不需要打包原resources目录的内容,删除下面的默认配置即可 --> <resource> <directory>src/main/resources</directory> </resource> </resources> </build>
方案二:拆分独立子模块(推荐长期维护场景使用)
如果models是多个项目共用的公共代码,更推荐调整为多模块项目结构,将models拆分为独立的子模块,天然支持单独打包、部署,和业务代码完全解耦,维护成本更低:
- 调整后的项目结构示例:
project(父工程,packaging属性设为pom) -- project-models(子模块,独立打包成project-models.jar) -- src -- main -- java -- project-main(原业务代码子模块,依赖project-models即可调用模型类) -- src -- main -- java -- resources
只需要在父工程的pom.xml中添加子模块声明,子模块单独配置自己的打包、部署规则即可。
内容的提问来源于stack exchange,提问作者Said Savci
相关产品推荐
相关产品推荐

