注:本文介绍的mysql版本是5.x ,如果mysql升级到8 有几个地方需要改动
https://blog.youkuaiyun.com/a704397849/article/details/108396563
之前分享一篇 springboot mybatis 多数据源 Druid连接池,demo源码 https://blog.youkuaiyun.com/a704397849/article/details/94416778
但那只是在idea运行,没有maven打包jar运行。现在介绍在上篇的基础上增加 打包jar 运行,最后附源码
pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<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.example</groupId>
<artifactId>mybatis_demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>mybatis_package_demo</name>
<description>mybatis_package_demo</description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.4.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
<!-- 阿里json -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.1.41</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.4</version>
</dependency>
<!-- druid-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.0.26</version>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.1</version>
</dependency>
<!-- Mybatis -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.6</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.38</version>
</dependency>
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>4.1.6</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<!--版本-->
<version>1.4.2.RELEASE</version>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
<configuration>
<mainClass>com.example.mybatis_demo.MybatisDemoApplication</mainClass>
<layout>JAR</layout>
<includeSystemScope>true</includeSystemScope>
</configuration>
</plugin>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>UTF-8</encoding>
<!--<compilerArguments>-->
<!--<extdirs>libs</extdirs>-->
<!--</compilerArguments>-->
</configuration>
</plugin>
</plugins>
<resources>
<!-- 打包时将jsp文件拷贝到META-INF目录下-->
<resource>
<!-- 指定resources插件处理哪个目录下的资源文件 -->
<directory>src/main/webapp</directory>
<!--注意此次必须要放在此目录下才能被访问到-->
<targetPath>META-INF/resources</targetPath>
<includes>
<include>**/**</include>
</includes>
</resource>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/**</include>
</includes>
<filtering>false</filtering>
</resource>
<resource>
<directory>src/main/java</directory>
<excludes>
<exclude>**/*.java</exclude>
</excludes>
</resource>
</resources>
</build>
</project>
打包jar后运行
在idea中 打开项目的命令行终端
输入清除打包命令 mvn clean package
打包完毕
如果没有设置输出目录的话,打包生成的jar包默认会生成在项目根目录下的target目录,cd target 进入生成的jar包目录
运行:java -jar mybatis_package_demo-0.0.1-SNAPSHOT.jar
E:\workspace_idea\mybatis_demo\target>java -jar mybatis_package_demo-0.0.1-SNAPSHOT.jar
. ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v2.0.4.RELEASE)
2019-07-06 15:21:52.074 INFO 73272 --- [ main] c.e.mybatis_demo.MybatisDemoApplication : Starting MybatisDemoApplication v0.0.1-SNAPSHOT on jujumao-456437486 with PID 73272 (E:\workspace_i
dea\mybatis_demo\target\mybatis_demo-0.0.1-SNAPSHOT.jar started by Administrator in E:\workspace_idea\mybatis_demo\target)
2019-07-06 15:21:52.077 INFO 73272 --- [ main] c.e.mybatis_demo.MybatisDemoApplication : No active profile set, falling back to default profiles: default
2019-07-06 15:21:52.160 INFO 73272 --- [ main] ConfigServletWebServerApplicationContext : Refreshing org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplication
Context@68f7aae2: startup date [Sat Jul 06 15:21:52 CST 2019]; root of context hierarchy
2019-07-06 15:21:52.671 WARN 73272 --- [ main] o.m.s.mapper.ClassPathMapperScanner : Skipping MapperFactoryBean with name 'accountMapper' and 'com.example.mybatis_demo.mapper.dbtest.Ac
countMapper' mapperInterface. Bean already defined with the same name!
2019-07-06 15:21:52.671 WARN 73272 --- [ main] o.m.s.mapper.ClassPathMapperScanner : Skipping MapperFactoryBean with name 'musicMapper' and 'com.example.mybatis_demo.mapper.dbtest2.Mus
icMapper' mapperInterface. Bean already defined with the same name!
2019-07-06 15:21:52.672 WARN 73272 --- [ main] o.m.s.mapper.ClassPathMapperScanner : No MyBatis mapper was found in '[com.example.mybatis_demo.mapper]' package. Please check your confi
guration.
2019-07-06 15:21:53.188 INFO 73272 --- [ main] trationDelegate$BeanPostProcessorChecker : Bean 'org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration' of type [
org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration$$EnhancerBySpringCGLIB$$fcbdc7a5] is not eligible for getting processed by all BeanPostProcessors (for example: not e
ligible for auto-proxying)
2019-07-06 15:21:53.679 INFO 73272 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port(s): 8083 (http)
2019-07-06 15:21:53.701 INFO 73272 --- [ main] o.apache.catalina.core.StandardService : Starting service [Tomcat]
2019-07-06 15:21:53.701 INFO 73272 --- [ main] org.apache.catalina.core.StandardEngine : Starting Servlet Engine: Apache Tomcat/8.5.32
2019-07-06 15:21:53.710 INFO 73272 --- [ost-startStop-1] o.a.catalina.core.AprLifecycleListener : The APR based Apache Tomcat Native library which allows optimal performance in production environme
nts was not found on the java.library.path: [C:\Program Files\Java\jdk1.8.0_201\bin;C:\Windows\Sun\Java\bin;C:\Windows\system32;C:\Windows;E:\w我的资料\软件\apache-maven-3.5.0-bin\apache-maven-3.5.0\b
in;C:\Program Files\Java\jdk1.8.0_201\bin;C:\Program Files\Java\jdk1.8.0_201\lib\dt.jar;C:\Program Files\Java\jdk1.8.0_201\jre\bin;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\Sy
stem32\WindowsPowerShell\v1.0\;C:\Program Files\IDM Computer Solutions\UltraCompare;C:\Program Files\Microsoft SQL Server\110\Tools\Binn\;C:\Program Files\nodejs\;%ZOOKEEPER_HOME%\bin;C:\Users\Adminis
trator\AppData\Local\Programs\Fiddler;C:\Users\Administrator\AppData\Roaming\npm;.]
2019-07-06 15:21:54.255 INFO 73272 --- [ost-startStop-1] org.apache.jasper.servlet.TldScanner : At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger f
or a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time.
2019-07-06 15:21:54.401 INFO 73272 --- [ost-startStop-1] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext
2019-07-06 15:21:54.419 INFO 73272 --- [ost-startStop-1] o.s.web.context.ContextLoader : Root WebApplicationContext: initialization completed in 2261 ms
2019-07-06 15:21:54.518 INFO 73272 --- [ost-startStop-1] o.s.b.w.servlet.ServletRegistrationBean : Servlet dispatcherServlet mapped to [/]
2019-07-06 15:21:54.525 INFO 73272 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean : Mapping filter: 'characterEncodingFilter' to: [/*]
2019-07-06 15:21:54.527 INFO 73272 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean : Mapping filter: 'hiddenHttpMethodFilter' to: [/*]
2019-07-06 15:21:54.527 INFO 73272 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean : Mapping filter: 'httpPutFormContentFilter' to: [/*]
2019-07-06 15:21:54.528 INFO 73272 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean : Mapping filter: 'requestContextFilter' to: [/*]
log4j:WARN No appenders could be found for logger (com.alibaba.druid.pool.DruidDataSource).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
2019-07-06 15:21:56.121 INFO 73272 --- [ main] j.LocalContainerEntityManagerFactoryBean : Building JPA container EntityManagerFactory for persistence unit 'default'
2019-07-06 15:21:56.137 INFO 73272 --- [ main] o.hibernate.jpa.internal.util.LogHelper : HHH000204: Processing PersistenceUnitInfo [
name: default
...]
2019-07-06 15:21:56.231 INFO 73272 --- [ main] org.hibernate.Version : HHH000412: Hibernate Core {5.2.17.Final}
2019-07-06 15:21:56.232 INFO 73272 --- [ main] org.hibernate.cfg.Environment : HHH000206: hibernate.properties not found
2019-07-06 15:21:56.275 INFO 73272 --- [ main] o.hibernate.annotations.common.Version : HCANN000001: Hibernate Commons Annotations {5.0.1.Final}
2019-07-06 15:21:56.506 INFO 73272 --- [ main] org.hibernate.dialect.Dialect : HHH000400: Using dialect: org.hibernate.dialect.MySQL5Dialect
2019-07-06 15:21:56.791 INFO 73272 --- [ main] j.LocalContainerEntityManagerFactoryBean : Initialized JPA EntityManagerFactory for persistence unit 'default'
2019-07-06 15:21:57.002 INFO 73272 --- [ main] o.s.w.s.handler.SimpleUrlHandlerMapping : Mapped URL path [/**/favicon.ico] onto handler of type [class org.springframework.web.servlet.resou
rce.ResourceHttpRequestHandler]
2019-07-06 15:21:57.227 INFO 73272 --- [ main] s.w.s.m.m.a.RequestMappingHandlerAdapter : Looking for @ControllerAdvice: org.springframework.boot.web.servlet.context.AnnotationConfigServlet
WebServerApplicationContext@68f7aae2: startup date [Sat Jul 06 15:21:52 CST 2019]; root of context hierarchy
2019-07-06 15:21:57.283 WARN 73272 --- [ main] aWebConfiguration$JpaWebMvcConfiguration : spring.jpa.open-in-view is enabled by default. Therefore, database queries may be performed during
view rendering. Explicitly configure spring.jpa.open-in-view to disable this warning
2019-07-06 15:21:58.308 INFO 73272 --- [ main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/accounts]}" onto public java.lang.String com.example.mybatis_demo.controller.TestControl
ler.getAccounts()
2019-07-06 15:21:58.309 INFO 73272 --- [ main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/music]}" onto public java.lang.String com.example.mybatis_demo.controller.TestController
.getMusicNames()
2019-07-06 15:21:58.312 INFO 73272 --- [ main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/error]}" onto public org.springframework.http.ResponseEntity<java.util.Map<java.lang.Str
ing, java.lang.Object>> org.springframework.boot.autoconfigure.web.servlet.error.BasicErrorController.error(javax.servlet.http.HttpServletRequest)
2019-07-06 15:21:58.313 INFO 73272 --- [ main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/error],produces=[text/html]}" onto public org.springframework.web.servlet.ModelAndView o
rg.springframework.boot.autoconfigure.web.servlet.error.BasicErrorController.errorHtml(javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse)
2019-07-06 15:21:58.338 INFO 73272 --- [ main] o.s.w.s.handler.SimpleUrlHandlerMapping : Mapped URL path [/webjars/**] onto handler of type [class org.springframework.web.servlet.resource.
ResourceHttpRequestHandler]
2019-07-06 15:21:58.339 INFO 73272 --- [ main] o.s.w.s.handler.SimpleUrlHandlerMapping : Mapped URL path [/**] onto handler of type [class org.springframework.web.servlet.resource.Resource
HttpRequestHandler]
2019-07-06 15:21:58.578 INFO 73272 --- [ main] o.s.j.e.a.AnnotationMBeanExporter : Registering beans for JMX exposure on startup
2019-07-06 15:21:58.580 INFO 73272 --- [ main] o.s.j.e.a.AnnotationMBeanExporter : Bean with name 'dbtest2DataSource' has been autodetected for JMX exposure
2019-07-06 15:21:58.580 INFO 73272 --- [ main] o.s.j.e.a.AnnotationMBeanExporter : Bean with name 'dbtestDataSource' has been autodetected for JMX exposure
2019-07-06 15:21:58.584 INFO 73272 --- [ main] o.s.j.e.a.AnnotationMBeanExporter : Located MBean 'dbtestDataSource': registering with JMX server as MBean [com.alibaba.druid.pool:name
=dbtestDataSource,type=DruidDataSource]
2019-07-06 15:21:58.585 INFO 73272 --- [ main] o.s.j.e.a.AnnotationMBeanExporter : Located MBean 'dbtest2DataSource': registering with JMX server as MBean [com.alibaba.druid.pool:nam
e=dbtest2DataSource,type=DruidDataSource]
2019-07-06 15:21:58.633 INFO 73272 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8083 (http) with context path ''
2019-07-06 15:21:58.639 INFO 73272 --- [ main] c.e.mybatis_demo.MybatisDemoApplication : Started MybatisDemoApplication in 6.948 seconds (JVM running for 7.39)
测试,浏览器输入 http://127.0.0.1:8083/music
注:这里是在本地运行jar包,也可以上传到服务上运行,当然java命令直接运行也太简陋了,我之前有分享过一个jar运行脚本有兴趣的可以看看
https://blog.youkuaiyun.com/a704397849/article/details/88369846
源码
链接:https://pan.baidu.com/s/1k2G9x1zk8IE45zHf_nNtGA
提取码:5pbu
注:sql文件在上篇里面有介绍和下载地址。
初次打包springboot jar运行会遇到多少坑我就不想提了,希望能帮助到还不能成功打包springboot项目jar包运行的同学。当然这里只是介绍了一个可以正常打包jar的demo,更多的打包过程需要深入。