Spring Boot Maven构建执行了我的数据库操作

时间:2019-02-12 08:30:07

标签: maven spring-boot

我正在设置独立服务器..以修改数据库中的数据。 完成后,我运行了maven build,应用程序开始修改数据库中的数据。真的,它才刚刚开始插入,并不断更新。

# PostgreSQL DB - "bar"
spring.datasource.jdbc-url=jdbc:postgresql://localhost:5600/bar
spring.datasource.username=
spring.datasource.password=
spring.datasource.driver-class-name=org.postgresql.Driver

# MySQL DB - "foo"
rm.datasource.jdbc-url=jdbc:mysql://localhost:5601/foo
rm.datasource.username=
rm.datasource.password=
spring.jpa.properties.hibernate.jdbc.lob.non_contextual_creation=true

这就是我在应用程序属性中所拥有的全部。我有两个配置类作为数据库配置。它们包含更多属性:

MySQL

properties.put("hibernate.hbm2ddl.auto", "none");
properties.put("hibernate.dialect", "org.hibernate.dialect.MySQL5Dialect");
properties.put("rm.datasource.driver-class-name", "com.mysql.jdbc.Driver");
properties.put("zeroDateTimeBehavior", "convertToNull");

Postgres

properties.put("hibernate.hbm2ddl.auto", "none");
properties.put("hibernate.dialect","org.hibernate.dialect.PostgreSQL9Dialect");

构建项目时,我的应用程序插入了postgreSql数据库中。

我能像在构建项目时一样解决它吗。不要在数据库中插入/更新/删除任何内容吗?

2 个答案:

答案 0 :(得分:1)

如果您的Maven项目是通过STS(Spring工具套件)或Spring Initializr生成的,他们将自动创建单元测试类,如下所示:

@RunWith(SpringRunner.class)
@SpringBootTest
public class ApplicationTest {

    @Test
    public void contextLoads() throws Exception {
    }

}

@SpringBootTest注释告诉Spring Boot去寻找一个主要的配置类(例如一个带有@SpringBootApplication的类),然后使用它来启动Spring应用程序上下文。

因此,如果要在运行Maven构建时暂时跳过单元测试,则有几种方法:

  • 对于Eclipse,请选中跳过测试复选框。
  • 通过命令行执行mvn install -DskipTestsmvn install -Dmaven.test.skip=true
  • 在pom.xml中将<groupId>org.apache.maven.plugins</groupId> skipTests 属性设置为true。

顺便说一句,您还应该检查启动时应用程序为什么要执行向数据库中插入/更新数据的操作。

答案 1 :(得分:0)

嗨,我看到了不同的可能解决方案:

  • 使用mvn clean install -DskipTestsmvn clean install -Dmaven.test.skip=true跳过测试
  • 从src / test / **中删除所有卡斯尔
  • 如果将来需要进行测试,请为添加的测试定义一个内存数据库:

    <dependency>
        <groupId>com.h2database</groupId>
        <artifactId>h2</artifactId>
        <scope>test</scope>
    </dependency>
    

到您的pom.xml 对于最后一种解决方案,您可能需要一些用于数据库的初始化脚本