从网上看过许多打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包(配置文件内置外置的打法)相关推荐

  1. 在Eclipse中使用Maven构建Spring项目

    最新版的Spring需要使用Maven构建,本文讲述怎么在Eclipse构建Maven项目,以配置Spring项目为例. maven简单介绍 maven是构建工具,也是构建管理工具.ant只是构建工具 ...

  2. Spring入门(四):使用Maven管理Spring项目

    让我们先回顾下本系列的前3篇博客: Spring入门(一):创建Spring项目 Spring入门(二):自动化装配bean Spring入门(三):通过JavaConfig装配bean 1.为什么要 ...

  3. SpringBoot+Maven 多模块项目的构建、运行、打包实战

    https://www.jb51.net/article/140772.htm?proxy=1 这篇文章主要介绍了SpringBoot+Maven 多模块项目的构建.运行.打包实战,小编觉得挺不错的, ...

  4. Maven生成可以直接运行的jar包的多种方式

    Maven可以使用mvn package指令对项目进行打包,如果使用Java -jar xxx.jar执行运行jar文件,会出现"no main manifest attribute, in ...

  5. Maven编译打包成可运行的Jar包

    2019独角兽企业重金招聘Python工程师标准>>> 刚接触Maven项目,以前都是普通的Java Project,少了啥就往lib文件夹下面加依赖的Jar包.工作中使用到Mave ...

  6. springboot 项目将本地引用打进jar包

    2019独角兽企业重金招聘Python工程师标准>>> 项目里引用了一个本地jar包,该jar不在maven仓库,也不是maven结构的,引用如下: <!--DingTalk- ...

  7. web静态资源访问规则||webjars的访问配置——webjars是maven库里面对css js image打的一个jar包

    Html css js image  txt   web项目中 放在 Webapp 在springboot项目中  静态资源放置的位置 Springboot默认的静态资源目录 (1)在src/main ...

  8. Maven依赖的Scope去除部署不需要的jar 包(打包)

    2019独角兽企业重金招聘Python工程师标准>>> Maven依赖的Scope去除部署不需要的jar 包(打包) 博客分类: java maven <dependency& ...

  9. maven 加入第三方库_maven 手动添加第三方的jar包

    maven项目手动引入第三方jar包项目打包 项目有时候需要依赖第三方jar包,一般会去maven仓库寻找坐标,但有时候maven仓库并没有提供,我们需要手动下载jar包并导入项目. maven库中并 ...

  10. SpringBoot项目开发(十):引用本地jar包与打包本地jar

    标题可能有点绕口,在实际开发中,有时所引用的jar架包无法在 maven 中央仓库里找到,那么j就要引用本地jar包,然而在项目开发完成后,需要打包部署时,引用的本地jar包没有打包进去部署包,就会导 ...

最新文章

  1. 蚂蚁移动开发平台 mPaaS 3.0 智能化 + 生态化
  2. python学精通要多久-精通python要多久
  3. devStack安装OpenStack Ocata版本 (Linux Bridge+VLAN)
  4. 阿里大数据神预测 胜率仅5.9%中国却1:0胜韩国
  5. srt编辑的文件在linux显示乱码,解决看本地视频srt字幕乱码问题教程-srt文件
  6. 技术解读丨分布式缓存数据库Redis大KEY问题定位及优化建议
  7. python脚本 远程连接后 输出 日志 或换行输出
  8. 解决问题--java.lang.ClassNotFoundException -- redis抛出
  9. 056 日志的正则式方式加载
  10. webstorm设置中文界面
  11. 求取scores最近邻的方法之二开始新的实践Chorus
  12. 如何写出如散文般的代码――《代码整洁之道》读书笔记(Ch1-Ch3)
  13. 10 大白帽黑客专用的 Linux 操作系统
  14. 星界边境文本自动翻译机(高级版)使用说明
  15. u盘打不开,提示需要格式化怎么办?
  16. shell用户输入数字加法操作
  17. Matlab——图形绘制——三维立体图形 剔透玲珑球 动态图——彗星状轨迹图
  18. 计算机屏幕偏振光原理,隐形却很重要 PC屏幕的那层膜
  19. Apple Silicon M1 MacBook Air上手详细评测M1的强大!
  20. 数据治理与数据安全研读开篇

热门文章

  1. 如何为 Mac 添加新语言?
  2. 如何在Mac上强制退出应用
  3. HDU 2665 Kth number(主席树静态区间第K大)题解
  4. CodeMix使用的语言和框架(一):JavaScript
  5. window wlan 相关服务
  6. 四川电信在广元市建大数据中心
  7. Linux下java进程CPU占用率高分析方法
  8. 《Java遗传算法编程》—— 1.8 参数
  9. Codeforces Round #229 (Div. 2) 解题报告
  10. 水晶報表之Datetime TO shortDate