Java 环境变量中的数据库名称
我的问题如下,我有一个Spring引导应用程序,我使用Jooq for sql,我设置pom来生成表。数据库信息在环境变量中设置。 它在Intellij中运行良好,但当我生成.WAR并在客户端上上载应用程序时,它只在客户端数据库名称与创建jooq代码时pom.xml中的名称相同时才起作用。 表是完全相同的,唯一可以更改的是数据库名称,所以我在环境变量中查找名称信息。Java 环境变量中的数据库名称,java,spring,maven,spring-boot,jooq,Java,Spring,Maven,Spring Boot,Jooq,我的问题如下,我有一个Spring引导应用程序,我使用Jooq for sql,我设置pom来生成表。数据库信息在环境变量中设置。 它在Intellij中运行良好,但当我生成.WAR并在客户端上上载应用程序时,它只在客户端数据库名称与创建jooq代码时pom.xml中的名称相同时才起作用。 表是完全相同的,唯一可以更改的是数据库名称,所以我在环境变量中查找名称信息。 我的变量都是在属性中设置的,在调试过程中,我可以看到带有变量数据的连接对象 我的pom.xml如下所示: <?xml ver
我的变量都是在属性中设置的,在调试过程中,我可以看到带有变量数据的连接对象 我的pom.xml如下所示:
<?xml version="1.0" encoding="UTF-8"?>
http://maven.apache.org/xsd/maven-4.0.0.xsd">
4.0.0
<groupId>com.speedsoft</groupId>
<artifactId>bedelServer</artifactId>
<version>0.0.1-SNAPSHOT</version>
<!-- <packaging>jar</packaging>-->
<packaging>war</packaging>
<name>BWS</name>
<description>BWS</description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.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>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<java.version>1.8</java.version>
<quartz.version>2.2.1</quartz.version>
<jooq.version>3.9.1</jooq.version>
<logback.version>1.2.3</logback.version>
<logbackaccess.version>1.3.0-alpha4</logbackaccess.version>
<mysql.version>6.0.3</mysql.version>
<exec-maven-plugin>1.7</exec-maven-plugin>
<start-class>com.speedsoft.bws.BwsApplication</start-class>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz</artifactId>
<version>${quartz.version}</version>
</dependency>
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz-jobs</artifactId>
<version>${quartz.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-quartz</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${mysql.version}</version>
</dependency>
<dependency>
<groupId>org.jooq</groupId>
<artifactId>jooq</artifactId>
<version>${jooq.version}</version>
</dependency>
<dependency>
<groupId>org.jooq</groupId>
<artifactId>jooq-meta</artifactId>
<version>${jooq.version}</version>
</dependency>
<dependency>
<groupId>org.jooq</groupId>
<artifactId>jooq-codegen</artifactId>
<version>${jooq.version}</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>${logback.version}</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jul-to-slf4j</artifactId>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>log4j-over-slf4j</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-commons</artifactId>
<version>2.0.6.RELEASE</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-access</artifactId>
<version>${logbackaccess.version}</version>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5</version>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpmime</artifactId>
<version>4.3.1</version>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpcore</artifactId>
<version>4.4.9</version>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpcore</artifactId>
<version>4.0.1</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.jooq</groupId>
<artifactId>jooq-codegen-maven</artifactId>
<version>3.8.3</version>
<!-- The plugin should hook into the generate goal -->
<executions>
<execution>
<goals>
<goal>generate</goal>
</goals>
</execution>
</executions>
<dependencies/>
<configuration>
<jdbc>
<driver>${jdbc.driver}</driver>
<url>${jdbc.url}</url>
<user>${jdbc.user}</user>
<password>${jdbc.password}</password>
</jdbc>
<generator>
<database>
<inputSchema>bedel</inputSchema>
<name>org.jooq.util.mysql.MySQLDatabase</name>
</database>
<target>
<packageName>com.speedsoft.bws.jooq.model</packageName>
<directory>target/generated-sources/jooq</directory>
<encoding>UTF-8</encoding>
</target>
<generate>
<fluentSetters>false</fluentSetters>
<daos>false</daos>
</generate>
</generator>
</configuration>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.5.0</version>
<executions>
<execution>
<goals>
<goal>exec</goal>
</goals>
</execution>
</executions>
<configuration>
<systemProperties>
<systemProperty>
<key>jdbc.driver</key>
<value>${jdbc.driver}</value>
</systemProperty>
<systemProperty>
<key>jdbc.user</key>
<value>${jdbc.user}</value>
</systemProperty>
<systemProperty>
<key>jdbc.password</key>
<value>${jdbc.password}</value>
</systemProperty>
<systemProperty>
<key>jdbc.url</key>
<value>${jdbc.url}</value>
</systemProperty>
</systemProperties>
</configuration>
</plugin>
</plugins>
</build>
<profiles>
<profile>
<id>default</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<jdbc.user>root</jdbc.user>
<jdbc.password>%47**¨00</jdbc.password>
<jdbc.url>jdbc:mysql://localhost:3306/bedel?serverTimezone=UTC</jdbc.url>
<jdbc.driver>com.mysql.cj.jdbc.Driver</jdbc.driver>
</properties>
</profile>
</profiles>
com.speedsoft
贝德尔服务器
0.0.1-快照
战争
BWS
BWS
org.springframework.boot
spring启动程序父级
2.0.1.1发布
UTF-8
UTF-8
1.8
1.8
1.8
2.2.1
3.9.1
1.2.3
1.3.0-4
6.0.3
1.7
com.speedsoft.bws.bws应用程序
org.springframework.boot
SpringBootStarterWeb
org.springframework.boot
弹簧启动机tomcat
假如
org.springframework.boot
弹簧起动试验
测验
org.springframework.boot
弹簧启动机tomcat
编写
org.quartz-scheduler
石英
${quartz.version}
org.quartz-scheduler
石英工作
${quartz.version}
org.springframework.boot
弹簧靴起动器石英
mysql
mysql连接器java
${mysql.version}
org.jooq
约克
${jooq.version}
org.jooq
约克梅塔
${jooq.version}
org.jooq
约克代码根
${jooq.version}
回写
回归经典
${logback.version}
org.slf4j
七月至六月
org.slf4j
log4j-over-slf4j
org.springframework.data
spring数据共享
2.0.6.1发布
回写
回写访问
${logbackaccess.version}
org.apache.httpcomponents
httpclient
4.5
org.apache.httpcomponents
httpime
4.3.1
org.apache.httpcomponents
httpcore
4.4.9
org.apache.httpcomponents
httpcore
4.0.1
org.jooq
jooq codegen maven
3.8.3
生成
${jdbc.driver}
${jdbc.url}
${jdbc.user}
${jdbc.password}
贝德尔
org.jooq.util.mysql.MySQLDatabase
com.speedsoft.bws.jooq.model
目标/生成源/jooq
UTF-8
错误的
错误的
org.codehaus.mojo
execmaven插件
1.5.0
执行官
jdbc.driver
${jdbc.driver}
jdbc.user
${jdbc.user}
最后面
${jdbc.password}
jdbc.url
${jdbc.url}
违约
符合事实的
根
%47**¨00
jdbc:mysql://localhost:3306/bedel?serverTimezone=UTC
com.mysql.cj.jdbc.Driver
我必须如何配置pom.xml,以便在生成.WAR时不会插入与代码生成时具有相同名称的数据库的依赖关系
我必须在模式中输入所有可能的名称吗
<schemata>
<schema>
<inputSchema>ui</inputSchema>
</schema>
<schema>
<inputSchema>other_schema</inputSchema>
</schema>
</schemata>
用户界面
其他模式
读取环境变量
通过使用${env.VARIABLE_NAME}
语法。如果您知道只有两个模式,但它们的特定名称可能因环境而异,则可以编写:
<schemata>
<schema>
<inputSchema>${env.UI_SCHEMA}</inputSchema>
</schema>
<schema>
<inputSchema>${env.OTHER_SCHEMA}</inputSchema>
</schema>
</schemata>
${env.UI_SCHEMA}
${env.OTHER_SCHEMA}
使用编程代码生成配置
始终存在实现编程代码生成配置的可能性,这将允许对输入模式进行更动态的配置。本文对此进行了说明:
使用运行时模式映射
您可以选择在版本控制中签入生成的代码(有其优点和缺点),并使用运行时模式映射功能在运行时修补生成的模式,而不是根据环境重新生成代码:
您是否尝试使用application.properties设置这些?我的变量都在属性中设置,问题是当我生成war(mvn安装)时,即使我的连接对象已经具有正确配置的数据库名称,应用程序也会查找生成名称“bedel”“对于您的远程环境,您还需要一个maven profile
mvn包-