使用maven给spring项目打可直接运行的jar包(配置文件内置外置的打法)
从网上看过许多打jar包的例子,大多是将配置文件打进jar包的。经过本人一番研究,终于搞清楚了怎样将jar包的配置文件外置。
废话不说,直接上spring的pom.xml的配置文件。
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.hdwang</groupId><artifactId>test</artifactId><version>0.0.1-SNAPSHOT</version><properties><spring.version>4.0.9.RELEASE</spring.version></properties><dependencies><!-- 通用包 --><dependency><groupId>org.apache.commons</groupId><artifactId>commons-lang3</artifactId><version>3.4</version></dependency><dependency><groupId>commons-io</groupId><artifactId>commons-io</artifactId><version>2.4</version></dependency><!-- poi类库 --><dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>3.13</version></dependency><dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>3.13</version></dependency><!-- mysql驱动包 --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.18</version></dependency><!-- spring包 --><dependency><groupId>org.springframework</groupId><artifactId>spring-aop</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-beans</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-context-support</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-core</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-expression</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-jdbc</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-orm</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-test</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-tx</artifactId><version>${spring.version}</version></dependency><!-- mybatis包 --><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.3.0</version></dependency><dependency><groupId>org.mybatis</groupId><artifactId>mybatis-spring</artifactId><version>1.2.3</version></dependency><!-- dbcp --><dependency><groupId>commons-dbcp</groupId><artifactId>commons-dbcp</artifactId><version>1.2.2</version></dependency><dependency><groupId>commons-pool</groupId><artifactId>commons-pool</artifactId><version>1.6</version></dependency><!-- 拼音 --><dependency><groupId>com.belerweb</groupId><artifactId>pinyin4j</artifactId><version>2.5.0</version></dependency></dependencies><build><finalName>generateImportCarSql</finalName><sourceDirectory>src/main/java</sourceDirectory><resources><!-- 控制资源文件的拷贝 --><resource><directory>src/main/resources</directory><includes><include>**/*.properties</include><include>**/*.xml</include><include>**/*.tld</include></includes><!--<filtering>false</filtering>--><!-- 配置文件外置(在打包时取消注释)资源文件拷贝到编译输出路径target的子文件夹config目录下,最终结构如下:target...config...spring...mapper...env...lib...generateImportCarSql.jar--><!--<targetPath>${project.build.directory}/config</targetPath>--></resource></resources><plugins><!-- 设置编译版本 --><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>3.1</version><configuration><source>1.7</source><target>1.7</target><encoding>UTF-8</encoding></configuration></plugin><!-- 打包jar文件时,配置manifest文件,加入lib包的jar依赖 --><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-jar-plugin</artifactId><configuration><archive><!-- 清单文件 --><manifest><mainClass>com.hdwang.Application</mainClass><addClasspath>true</addClasspath><classpathPrefix>lib/</classpathPrefix></manifest><!-- 给清单文件添加键值对(配置文件外置) --><manifestEntries><Class-Path>config/</Class-Path></manifestEntries></archive><classesDirectory></classesDirectory></configuration></plugin><!-- 拷贝依赖的jar包到lib目录 --><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-dependency-plugin</artifactId><executions><execution><id>copy</id><phase>package</phase><goals><goal>copy-dependencies</goal></goals><configuration><outputDirectory>${project.build.directory}/lib</outputDirectory></configuration></execution></executions></plugin><!-- 解决资源文件的编码问题 --><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-resources-plugin</artifactId><version>2.5</version><configuration><encoding>UTF-8</encoding></configuration></plugin><!-- 打包source文件为jar文件 --><plugin><artifactId>maven-source-plugin</artifactId><version>2.1</version><configuration><attach>true</attach><encoding>UTF-8</encoding></configuration><executions><execution><phase>compile</phase><goals><goal>jar</goal></goals></execution></executions></plugin></plugins></build></project>
使用配置文件外置打包时,注意取消targetPath配置节的注释(使用IDE开发时,运行项目报错需要注释掉,注意配置文件输出目录不能是classes,否则会将配置文件打进jar包),最终生成的目录结构如下(运行所需文件及文件夹):
maven打包命令:mvn package
运行命令: java -jar generateImportCarSql.jar
注意:本项目是spring普通项目,非spring web项目,配置文件由spring加载,spring配置文件路径采用classpath写法,下面展示各种spring路径配置实例:
1.java代码启动spring项目路径写法
2.spring配置文件引用另一个spring配置文件
3.spring配置文件中placeHolder路径填写
4.spring集成mybatis时mybatis配置文件路径填写
由于以上各种路径的配置均采用相对于classpath路径的写法。故在项目打包后和项目运行时均可以运行,关键在于classpath路径的设定。
附上jar包清单文件的内容,注意class-path的路径可以配置多个文件夹,多个jar包,之间用空格隔开,注意文件夹一定要在结尾加上/,例如:classpath为当前目录写 ./ 为当前目前下级config文件夹则为 ./config/ 或者config/
掌握了class-path路径的配置,你就可以随意放置你引用的第三方jar包和资源文件了。
转载于:https://www.cnblogs.com/hdwang/p/5418747.html
使用maven给spring项目打可直接运行的jar包(配置文件内置外置的打法)相关推荐
- 在Eclipse中使用Maven构建Spring项目
最新版的Spring需要使用Maven构建,本文讲述怎么在Eclipse构建Maven项目,以配置Spring项目为例. maven简单介绍 maven是构建工具,也是构建管理工具.ant只是构建工具 ...
- Spring入门(四):使用Maven管理Spring项目
让我们先回顾下本系列的前3篇博客: Spring入门(一):创建Spring项目 Spring入门(二):自动化装配bean Spring入门(三):通过JavaConfig装配bean 1.为什么要 ...
- SpringBoot+Maven 多模块项目的构建、运行、打包实战
https://www.jb51.net/article/140772.htm?proxy=1 这篇文章主要介绍了SpringBoot+Maven 多模块项目的构建.运行.打包实战,小编觉得挺不错的, ...
- Maven生成可以直接运行的jar包的多种方式
Maven可以使用mvn package指令对项目进行打包,如果使用Java -jar xxx.jar执行运行jar文件,会出现"no main manifest attribute, in ...
- Maven编译打包成可运行的Jar包
2019独角兽企业重金招聘Python工程师标准>>> 刚接触Maven项目,以前都是普通的Java Project,少了啥就往lib文件夹下面加依赖的Jar包.工作中使用到Mave ...
- springboot 项目将本地引用打进jar包
2019独角兽企业重金招聘Python工程师标准>>> 项目里引用了一个本地jar包,该jar不在maven仓库,也不是maven结构的,引用如下: <!--DingTalk- ...
- web静态资源访问规则||webjars的访问配置——webjars是maven库里面对css js image打的一个jar包
Html css js image txt web项目中 放在 Webapp 在springboot项目中 静态资源放置的位置 Springboot默认的静态资源目录 (1)在src/main ...
- Maven依赖的Scope去除部署不需要的jar 包(打包)
2019独角兽企业重金招聘Python工程师标准>>> Maven依赖的Scope去除部署不需要的jar 包(打包) 博客分类: java maven <dependency& ...
- maven 加入第三方库_maven 手动添加第三方的jar包
maven项目手动引入第三方jar包项目打包 项目有时候需要依赖第三方jar包,一般会去maven仓库寻找坐标,但有时候maven仓库并没有提供,我们需要手动下载jar包并导入项目. maven库中并 ...
- SpringBoot项目开发(十):引用本地jar包与打包本地jar
标题可能有点绕口,在实际开发中,有时所引用的jar架包无法在 maven 中央仓库里找到,那么j就要引用本地jar包,然而在项目开发完成后,需要打包部署时,引用的本地jar包没有打包进去部署包,就会导 ...
最新文章
- 蚂蚁移动开发平台 mPaaS 3.0 智能化 + 生态化
- python学精通要多久-精通python要多久
- devStack安装OpenStack Ocata版本 (Linux Bridge+VLAN)
- 阿里大数据神预测 胜率仅5.9%中国却1:0胜韩国
- srt编辑的文件在linux显示乱码,解决看本地视频srt字幕乱码问题教程-srt文件
- 技术解读丨分布式缓存数据库Redis大KEY问题定位及优化建议
- python脚本 远程连接后 输出 日志 或换行输出
- 解决问题--java.lang.ClassNotFoundException -- redis抛出
- 056 日志的正则式方式加载
- webstorm设置中文界面
- 求取scores最近邻的方法之二开始新的实践Chorus
- 如何写出如散文般的代码――《代码整洁之道》读书笔记(Ch1-Ch3)
- 10 大白帽黑客专用的 Linux 操作系统
- 星界边境文本自动翻译机(高级版)使用说明
- u盘打不开,提示需要格式化怎么办?
- shell用户输入数字加法操作
- Matlab——图形绘制——三维立体图形 剔透玲珑球 动态图——彗星状轨迹图
- 计算机屏幕偏振光原理,隐形却很重要 PC屏幕的那层膜
- Apple Silicon M1 MacBook Air上手详细评测M1的强大!
- 数据治理与数据安全研读开篇