首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Maven:如何创建临时文件夹?

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

Stack Overflow用户
提问于 2014-08-14 16:24:35
回答 2查看 880关注 0票数 2

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

代码语言:javascript
复制
            <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>

配置数据源的方式是

代码语言:javascript
复制
            <configuration>
                <driver>${dataSource.driver}</driver>
                <url>${dataSource.url}</url>
                <username>${dataSource.user}</username>
                <password>${dataSource.password}</password>
            </configuration>

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

代码语言:javascript
复制
[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}作为

代码语言:javascript
复制
<dataSource.url>jdbc:h2:${project.build.outputDirectory}/oauth;create=true</dataSource.url> 

代码语言:javascript
复制
<dataSource.url>jdbc:h2:${project.build.testOutputDirectory}/oauth;create=true</dataSource.url>  

但他们都不起作用

问题

如何在每次运行时创建一个临时目录,或者在运行集成测试时使用maven清理现有的DB?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-08-14 18:26:13

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

代码语言:javascript
复制
<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>
票数 0
EN

Stack Overflow用户

发布于 2014-08-14 20:35:10

您应该创建绑定到干净目标的插件的另一个实例,它执行sql来为以后的目标准备数据库。例如,此sql可以删除在上一次构建中创建的表。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25312993

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档