gpt4 book ai didi

java - Maven:如何创建临时文件夹?

转载 作者:行者123 更新时间:2023-11-29 08:46:02 24 4
gpt4 key购买 nike

我正在使用 sql-maven-plugin 为我的集成测试执行 SQL,它看起来像

            <plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>sql-maven-plugin</artifactId>
<version>${sql-maven-plugin.version}</version>
<executions>
<execution>
<id>default</id>
<phase>compile</phase>
<goals>
<goal>execute</goal>
</goals>
<configuration>
<url>${dataSource.url}</url>
<!-- no transaction -->
<autocommit>true</autocommit>
<sqlCommand>CREATE TABLE User
(
id VARCHAR(255) NOT NULL,
userExternalId VARCHAR(255) NOT NULL,
email VARCHAR(255) NOT NULL,
clientId VARCHAR(255) NOT NULL,
clientSecret VARCHAR(255) NOT NULL,
active BOOLEAN,
PRIMARY KEY (id)
)</sqlCommand>
</configuration>
</execution>
</executions>

<dependencies>
<!-- specify the dependent jdbc driver here -->
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<version>${h2.version}</version>
</dependency>
</dependencies>

<configuration>
<driver>${dataSource.driver}</driver>
<url>${dataSource.url}</url>
<username>${dataSource.user}</username>
<password>${dataSource.password}</password>
</configuration>

</plugin>

我配置数据源的方式是

            <configuration>
<driver>${dataSource.driver}</driver>
<url>${dataSource.url}</url>
<username>${dataSource.user}</username>
<password>${dataSource.password}</password>
</configuration>

当我运行 mvn clean install 时,我看到的问题是

[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 3.022s
[INFO] Finished at: Thu Aug 14 16:13:20 UTC 2014
[INFO] Final Memory: 14M/91M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.codehaus.mojo:sql-maven-plugin:1.5:execute (default) on project integration: Table USER already exists; SQL statement:
[ERROR] CREATE TABLE User
[ERROR] (
[ERROR] id VARCHAR(255) NOT NULL,
[ERROR] userExternalId VARCHAR(255) NOT NULL,
[ERROR] email VARCHAR(255) NOT NULL,
[ERROR] clientId VARCHAR(255) NOT NULL,
[ERROR] clientSecret VARCHAR(255) NOT NULL,
[ERROR] active BOOLEAN,
[ERROR] PRIMARY KEY (id)
[ERROR] )
[ERROR] [42101-180]
[ERROR] -> [Help 1]
[ERROR]

这发生在我的 CI 管道中。我怀疑这是因为上次运行 mvn clean install

时数据库存在

所以我尝试将 ${datasource.url} 作为

<dataSource.url>jdbc:h2:${project.build.outputDirectory}/oauth;create=true</dataSource.url> 

<dataSource.url>jdbc:h2:${project.build.testOutputDirectory}/oauth;create=true</dataSource.url>  

但是没有一个有效

问题
如何在每次运行时创建一个临时目录或在运行集成测试时使用 maven 清理现有数据库?

最佳答案

你可以使用 ant 插件,你可以在给定阶段创建一个文件夹,然后你可以在另一个阶段删除它:

<plugin>
<artifactId>maven-antrun-plugin</artifactId>
<version>1.1</version>
<executions>
<execution>
....
<configuration>
<task>
<mkdir>./your_directory_to create</mkdir>
</task>
</configuration>
</execution>
</executions>
</plugin>

关于java - Maven:如何创建临时文件夹?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25312993/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com