Java 从具有外部数据库连接的spring项目构建jar文件

Java 从具有外部数据库连接的spring项目构建jar文件,java,mysql,spring,spring-boot,jdbc,Java,Mysql,Spring,Spring Boot,Jdbc,我正在尝试将我的Spring boot项目构建为JAR文件。在我的项目中,我使用了一个本地MySQL数据库来存储我的数据,但现在我的项目已经完成并准备在Linux服务器上启动,但是当我从application.properties更改MySQL连接信息时,maven无法打包该项目,我遇到了这个错误 The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received

我正在尝试将我的Spring boot项目构建为JAR文件。在我的项目中,我使用了一个本地MySQL数据库来存储我的数据,但现在我的项目已经完成并准备在Linux服务器上启动,但是当我从application.properties更改MySQL连接信息时,maven无法打包该项目,我遇到了这个错误

The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.
    at org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:81) ~[spring-jdbc-5.1.3.RELEASE.jar:5.1.3.RELEASE]
    at org.springframework.jdbc.support.JdbcUtils.extractDatabaseMetaData(JdbcUtils.java:319) ~[spring-jdbc-5.1.3.RELEASE.jar:5.1.3.RELEASE]
    ... 88 common frames omitted
Caused by: com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failure

The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.
    at com.mysql.cj.jdbc.exceptions.SQLError.createCommunicationsException(SQLError.java:174) ~[mysql-connector-java-8.0.13.jar:8.0.13]
    at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:64) ~[mysql-connector-java-8.0.13.jar:8.0.13]
    at com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:835) ~[mysql-connector-java-8.0.13.jar:8.0.13]
    at com.mysql.cj.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:455) ~[mysql-connector-java-8.0.13.jar:8.0.13]
    at com.mysql.cj.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:240) ~[mysql-connector-java-8.0.13.jar:8.0.13]
    at com.mysql.cj.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:207) ~[mysql-connector-java-8.0.13.jar:8.0.13]
    at com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:136) ~[HikariCP-3.2.0.jar:na]
    at com.zaxxer.hikari.pool.PoolBase.newConnection(PoolBase.java:369) ~[HikariCP-3.2.0.jar:na]
    at com.zaxxer.hikari.pool.PoolBase.newPoolEntry(PoolBase.java:198) ~[HikariCP-3.2.0.jar:na]
    at com.zaxxer.hikari.pool.HikariPool.createPoolEntry(HikariPool.java:467) ~[HikariCP-3.2.0.jar:na]
    at com.zaxxer.hikari.pool.HikariPool.checkFailFast(HikariPool.java:541) ~[HikariCP-3.2.0.jar:na]
    at com.zaxxer.hikari.pool.HikariPool.<init>(HikariPool.java:115) ~[HikariCP-3.2.0.jar:na]
    at com.zaxxer.hikari.HikariDataSource.getConnection(HikariDataSource.java:112) ~[HikariCP-3.2.0.jar:na]
    at org.springframework.jdbc.datasource.DataSourceUtils.fetchConnection(DataSourceUtils.java:151) ~[spring-jdbc-5.1.3.RELEASE.jar:5.1.3.RELEASE]
    at org.springframework.jdbc.datasource.DataSourceUtils.doGetConnection(DataSourceUtils.java:115) ~[spring-jdbc-5.1.3.RELEASE.jar:5.1.3.RELEASE]
    at org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:78) ~[spring-jdbc-5.1.3.RELEASE.jar:5.1.3.RELEASE]
    ... 89 common frames omitted
Caused by: com.mysql.cj.exceptions.CJCommunicationsException: Communications link failure
成功发送到服务器的最后一个数据包是0毫秒前的。驱动程序尚未从服务器收到任何数据包。
在org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:81)~[spring-jdbc-5.1.3.RELEASE.jar:5.1.3.RELEASE]
在org.springframework.jdbc.support.JdbcUtils.extractDatabaseMetaData(JdbcUtils.java:319)~[spring-jdbc-5.1.3.RELEASE.jar:5.1.3.RELEASE]
... 省略了88个公共框架
原因:com.mysql.cj.jdbc.exceptions.CommunicationsException:通信链路故障
成功发送到服务器的最后一个数据包是0毫秒前的。驱动程序尚未从服务器收到任何数据包。
在com.mysql.cj.jdbc.exceptions.SQLError.createCommunicationsException(SQLError.java:174)~[mysql-connector-java-8.0.13.jar:8.0.13]
在com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:64)~[mysql-connector-java-8.0.13.jar:8.0.13]
在com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:835)~[mysql-connector-java-8.0.13.jar:8.0.13]
在com.mysql.cj.jdbc.ConnectionImpl.(ConnectionImpl.java:455)~[mysql-connector-java-8.0.13.jar:8.0.13]
在com.mysql.cj.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:240)~[mysql-connector-java-8.0.13.jar:8.0.13]
在com.mysql.cj.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:207)~[mysql-connector-java-8.0.13.jar:8.0.13]
在com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:136)~[HikariCP-3.2.0.jar:na]
在com.zaxxer.hikari.pool.PoolBase.newConnection(PoolBase.java:369)~[HikariCP-3.2.0.jar:na]
在com.zaxxer.hikari.pool.PoolBase.newPoolEntry(PoolBase.java:198)~[HikariCP-3.2.0.jar:na]
在com.zaxxer.hikari.pool.HikariPool.createPoolEntry(HikariPool.java:467)~[HikariCP-3.2.0.jar:na]
在com.zaxxer.hikari.pool.HikariPool.checkFailFast(HikariPool.java:541)~[HikariCP-3.2.0.jar:na]
在com.zaxxer.hikari.pool.HikariPool.(HikariPool.java:115)~[HikariCP-3.2.0.jar:na]
在com.zaxxer.hikari.HikariDataSource.getConnection(HikariDataSource.java:112)~[HikariCP-3.2.0.jar:na]
在org.springframework.jdbc.datasource.DataSourceUtils.fetchConnection(DataSourceUtils.java:151)~[spring-jdbc-5.1.3.RELEASE.jar:5.1.3.RELEASE]
在org.springframework.jdbc.datasource.DataSourceUtils.doGetConnection(DataSourceUtils.java:115)~[spring-jdbc-5.1.3.RELEASE.jar:5.1.3.RELEASE]
在org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:78)~[spring-jdbc-5.1.3.RELEASE.jar:5.1.3.RELEASE]
... 89省略公共框架
原因:com.mysql.cj.exceptions.CJCommunicationsException:通信链路故障
这是我的maven pom.xml:

<?xml version="1.0" encoding="UTF-8"?>

http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0

<groupId>test</groupId>
<artifactId>TransApplication</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>

<name>test</name>
<description>test</description>

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.1.1.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>
    <start-class>com.trans.co.TransApplication.TransApplication</start-class>
</properties>

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-rest</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-devtools</artifactId>
        <scope>runtime</scope>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>com.google.code.gson</groupId>
        <artifactId>gson</artifactId>
    </dependency>
    <dependency>
        <groupId>org.apache.httpcomponents</groupId>
        <artifactId>httpclient</artifactId>
    </dependency>


<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
</dependency>

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>

    <dependency>
        <groupId>com.squareup.retrofit2</groupId>
        <artifactId>retrofit</artifactId>
        <version>2.3.0</version>
    </dependency>


    <dependency>
        <groupId>com.squareup.okhttp3</groupId>
        <artifactId>logging-interceptor</artifactId>
        <version>3.12.0</version>
    </dependency>
    <dependency>
        <groupId>com.squareup.retrofit2</groupId>
        <artifactId>converter-gson</artifactId>
        <version>2.3.0</version>
    </dependency>
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <version>1.16.22</version>
    </dependency>
</dependencies>

<build>

    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-shade-plugin</artifactId>
            <executions>
                <execution>
                    <phase>package</phase>
                    <goals>
                        <goal>shade</goal>
                    </goals>
                    <configuration>
                        <transformers>
                            <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                                <mainClass>package.Main</mainClass>
                            </transformer>
                        </transformers>
                    </configuration>
                </execution>
            </executions>
        </plugin>

        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <configuration>
                <executable>true</executable>
            </configuration>
        </plugin>
    </plugins>
</build>
测试
跨应用
0.0.1-快照
罐子
测试
测试
org.springframework.boot
spring启动程序父级
2.1.1.1发布
UTF-8
UTF-8
1.8
com.trans.co.TransApplication.TransApplication
org.springframework.boot
弹簧启动启动器数据rest
org.springframework.boot
SpringBootStarterWeb
org.springframework.boot
弹簧靴开发工具
运行时
org.springframework.boot
弹簧起动试验
测试
com.google.code.gson
格森
org.apache.httpcomponents
httpclient
mysql
mysql连接器java
org.springframework.boot
spring引导启动器数据jpa
com.squareup.2
改造
2.3.0
com.squareup.okhttp3
日志拦截器
3.12.0
com.squareup.2
转换器gson
2.3.0
org.projectlombok
龙目
1.16.22
org.apache.maven.plugins
maven阴影插件
包裹
阴凉处
包.主
org.springframework.boot
springbootmaven插件
真的

我唯一的问题是一个简单的更改我想根据您的描述更改服务器上的连接信息

专家们不能把这个项目打包

这表明Spring Boot Uber Jar没有打包,因为测试阶段在Maven生命周期中失败。一般来说,在部署到服务器之前应该打包/组装启动Jar,因此您不必担心测试失败

如果您是在一台服务器上构建它,以便从那里生成引导Jar工件,那么这表明您定义的数据源配置在该环境中不适用或不正确。您需要跳过需要本地数据源的测试,或者提供一个允许您的测试运行的数据源成功

Spring Boot提供了一个强大的配置管理系统,可以根据环境环境甚至按运行上下文进行调整。事实上,您已经在使用它,并且根据您正在更改
应用程序.properties
文件的描述设置为使用它