搜索
简帛阁>技术文章>springboot第三方jar包外部引用

springboot第三方jar包外部引用

一开始的时候,使用maven打包springboot,我都是将打好的包lib里面的jar全部删除。然后单独复制一份lib文件,然后运行的时候使用

java  -Djava.ext.dirs=D:\lib test

这样很简单,又很方便。但是后面项目集成shiro之后,就不行了。简单的把lib里面删除,运行的时候就会报错
java.security.NoSuchAlgorithmException: AES KeyGenerator not available
百度了很多都是什么jdk的问题,其实我知道,这不是我要的答案,无意间发现一篇文章
https://blog.csdn.net/xrq0508/article/details/80050119
打开了新大门。我的pom.xml关键配置如下

<plugin>
                <groupId>org.apache.maven.plugins</groupId>
                maven-jar-plugin</artifactId>
                <configuration>
                    <archive>
                        <manifest>
                            <!-- 指定 Spring Boot 启动类,实际测试中必须 -->
                            <mainClass>com.hch.fifa.FifaApplication</mainClass>
                            <!-- 将所有第三方 jar 添加到项目 jar 的 MANIFEST.MF 文件中,这样运行 jar 时依赖包才能被加载 -->
                            <addClasspath>true</addClasspath>
                            <!-- 指定复制第三方 jar 的目标目录为 target/lib/-->
                            <classpathPrefix>./lib/</classpathPrefix>
                        </manifest>
                    </archive>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <!-- repackage 时排除掉 第三方依赖 jar 文件,我们的可运行 Spring Boot 的 jar 文件瞬间变小 ^_^ -->
                <executions>
                    <execution>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <includes>
                        <include>
                            <groupId>nothing</groupId>
                            <artifactId>nothing</artifactId>
                        </include>
                    </includes>
                </configuration>
            </plugin>

这样运行的时候直接打命令

java test

就可以了
顺便提一句,配置文件也可以放到jar包外面,参考如下
https://www.cnblogs.com/matd/p/11130906.html
关键说明如下
Spring程序会按优先级从下面这些路径来加载application.properties配置文件
1、当前目录下的/config目录
2、当前目录
3、classpath里的/config目录
4、classpath 跟目录
因此,要外置配置文件就很简单了,在jar所在目录新建config文件夹,然后放入配置文件,或者直接放在配置文件在jar目录

然后再放上我的application.yml

spring:
  profiles:
    active: dev

srping:
  thymeleaf:
    prefix: classpath:/templates/
mybatis:
  typeAliasesPackage: com.hch.xconnect.entity
  mapperLocations: classpath:/mapper/*.xml

---

#开发配置
spring:
  profiles: dev
  datasource:
    url: jdbc:mysql://localhost:3306/fifa?useSSL=false
    username: root
    password: 123456
    driver-class-name: com.mysql.jdbc.Driver
    type: com.alibaba.druid.pool.DruidDataSource
    initialSize: 5
    minIdle: 5
    maxActive: 20
    maxWait: 60000
    timeBetweenEvictionRunsMillis: 60000
    minEvictableIdleTimeMillis: 300000
    validationQuery: SELECT 1 FROM DUAL
    testWhileIdle: true
    testOnBorrow: false
    testOnReturn: false
    poolPreparedStatements: true
  thymeleaf:
    encoding: UTF-8
    mode: HTML
    servlet:
      content-type: text/html
    cache: false
  servlet:
    multipart:
      max-file-size: 100MB 
      max-request-size: 5000MB

server:
  port: 61193
properties:
  uplaodFilePath: /usr/local/upload/
  version: 1.0
  staticResourcesPath: /Users/workspaces/fifa/src/main/resources/static/
---

#生产
spring:
  profiles: pro
  datasource:
    url: jdbc:mysql://localhost:63306/fifa?useSSL=false
    username: root
    password: Zz.123.123
    driver-class-name: com.mysql.jdbc.Driver
    type: com.alibaba.druid.pool.DruidDataSource
    initialSize: 5
    minIdle: 5
    maxActive: 20
    maxWait: 60000
    timeBetweenEvictionRunsMillis: 60000
    minEvictableIdleTimeMillis: 300000
    validationQuery: SELECT 1 FROM DUAL
    testWhileIdle: true
    testOnBorrow: false
    testOnReturn: false
    poolPreparedStatements: true
    encoding: UTF-8
    mode: HTML
    servlet:
      content-type: text/html
    cache: true
  servlet:
    multipart:
      max-file-size: 100MB 
      max-request-size: 5000MB 
server:
  port: 61193
properties:
  uplaodFilePath: /usr/local/upload/
  version: 1.0
  staticResourcesPath: /usr/local/fifa/static/

配置那个active: dev或者pro就可以指定不同配置

1在左侧项目里新建一个lib文件夹,把第三jar复制进去。2修改pomxml,dependencies配置节增加,plugins配置节做修改。dependencies配置节增加:<depe
添加jar至根目录下lib文件夹,在classpath文件内添加jar路径。注意:新添加的jar路径在“src”和“bin”之间,否则无法识别jar路径。这应该是vscode当前版本的bug,后续
公司现在用的是springboot+maven,想要把一些老的项目都改成这种框架。但是一些老的项目中有好多第三jar或者是自己的jar,maven库上没有。最初的解决方案是一个个的deploy
公司现在用的是springboot+maven,想要把一些老的项目都改成这种框架。但是一些老的项目中有好多第三jar或者是自己的jar,maven库上没有。最初的解决方案是一个个的deploy
我用的是Eclipse打包,但在CMD窗口执行的时候报“ActiveMQjar中没有主清单属性”错误。在网上搜了下,这个与MANIFESTMF文件有关,该文件没有定义MAIN方法所在类的路径,利用好压
我用的是Eclipse打包,但在CMD窗口执行的时候报“ActiveMQjar中没有主清单属性”错误。在网上搜了下,这个与MANIFESTMF文件有关,该文件没有定义MAIN方法所在类的路径,利用好压
外部jar引用方式很多,目前用的是pomxml,dependence引用,方法如下<dependency><groupId>comtibco</groupId>
一,为什么要集成外部jar?不是所有的第三方库都会上传到mvnrepository,这时我们如果想集成它的第三库,则需要直接在项目中集成它们的jar,在操作上还是很简单的,这里用luosima
在AndroidStudio项目中引用第三jar的方法:步骤:1、在buildgradle文件中添加如下代码:备注:要添加在Android作用域下sourceSets{main{jniLibss
在AndroidStudio项目中引用第三jar的方法:步骤:1、在buildgradle文件中添加如下代码:备注:要添加在Android作用域下sourceSets{main{jniLibss