当前位置: 首页 > 知识库问答 >
问题:

环境变量中的数据库名称

谭昱
2023-03-14

我的问题如下,我有一个Spring Boot应用程序,我使用Jooq for sql,我设置我的pom来生成表。数据库信息设置在环境变量中。它在Intellij内部运行良好,但当我生成。WAR并在客户端上上传应用程序只有当客户端库名与创建jooq代码时我pom.xml中的名称相同时,才有效。表完全一样,唯一可以改变的是库名,所以我在环境变量中查找名称信息。我的变量都设置在属性中,在调试中,我可以看到我的连接对象与变量数据。

我的pom.xml如下:

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

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

<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>

我必须如何配置我的pom。xml,以便在生成。WAR它不插入与代码生成时间同名的数据库的依赖关系吗?

我必须在模式中输入所有可能的名称吗?

<schemata>
  <schema>
    <inputSchema>ui</inputSchema>
  </schema>
  <schema>
    <inputSchema>other_schema</inputSchema>
  </schema>
</schemata>

共有1个答案

夏侯腾
2023-03-14

通过使用${env.VARIABLE\u NAME}语法,您可以使用Maven直接读取环境变量。如果您知道只有两种模式,但它们的具体名称可能因环境而异,则可以编写:

<schemata>
  <schema>
    <inputSchema>${env.UI_SCHEMA}</inputSchema>
  </schema>
  <schema>
    <inputSchema>${env.OTHER_SCHEMA}</inputSchema>
  </schema>
</schemata>

始终存在实现编程代码生成配置的可能性,这将允许对输入模式进行更动态的配置。这里有记录:https://www.jooq.org/doc/latest/manual/code-generation/codegen-programmatic

您可以选择在版本控制中签入生成的代码(有优点和缺点),并在运行时使用运行时模式映射功能修补生成的模式,而不是每个环境重新生成代码:https://www.jooq.org/doc/latest/manual/sql-building/dsl-context/custom-settings/settings-render-mapping/

 类似资料:
  • 问题内容: MySQL中有什么方法可以将数据库名称放入变量中?例如,当我有一个名为“ db1”的数据库时,可以执行以下操作: 编辑:还有一个我想做的例子: 问题答案: 付出了很大的努力,是的。

  • 问题内容: Jenkins(管理jenkins->系统信息)下的环境变量从何而来? 我检查了/etc/init.d/tomcat5,/ usr / bin / dtomcat5,/ usr / bin / tomcat5,/ etc / sysconfig / tomcat5和/ etc / profile,但在那里没有看到任何此类变量,特别是与Oracle相关的变量(Base,Home,Ld_l

  • Git 总是在一个 bash shell 中运行,并借助一些 shell 环境变量来决定它的运行方式。 有时候,知道它们是什么以及它们如何让 Git 按照你想要的方式去运行会很有用。 这里不会列出所有的 Git 环境变量,但我们会涉及最有的那部分。 全局行为 像通常的程序一样,Git 的常规行为依赖于环境变量。 GIT_EXEC_PATH 决定 Git 到哪找它的子程序 (像 git-commit

  • Puppeteer 寻找某些环境变量来帮助其操作。 如果 puppeteer 在环境中没有找到它们,这些变量的小写变体将从 npm 配置 中使用。 HTTP_PROXY, HTTPS_PROXY, NO_PROXY - 定义用于下载和运行 Chromium 的 HTTP 代理设置。 PUPPETEER_SKIP_CHROMIUM_DOWNLOAD - 请勿在安装步骤中下载绑定的 Chromium。

  • 环境变量 vue-element-admin 4.0 之后是基于 vue-cli来进行构建,所以所有的环境变量配置都是基于vue-cli来实现和控制的。 官方文档 .env # 在所有的环境中被载入 .env.[mode] # 只在指定的模式中被载入 一个环境文件只包含环境变量的“键=值”对: FOO=bar VUE_APP_SECRET=secre

  • 一些 Electron 的行为受到环境变量的控制,因为他们的初始化比命令行和应用代码更早. POSIX shells 的例子: $ export ELECTRON_ENABLE_LOGGING=true $ electron Windows 控制台: > set ELECTRON_ENABLE_LOGGING=true > electron ELECTRON_RUN_AS_NODE 类似nod