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

Maven surefire插件,在构建生命周期中设置和获取系统属性

汪弘毅
2023-03-14
<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <configuration>
        <forkCount>2</forkCount>
        <reuseForks>true</reuseForks>
        <argLine>-Xmx1024m -XX:MaxPermSize=256m</argLine>
        <systemPropertyVariables>
            <databaseSchema>test_schema_${surefire.forkNumber}</databaseSchema>
        </systemPropertyVariables>
    </configuration>
</plugin>
<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>sql-maven-plugin</artifactId>
    <version>1.5</version>
    <dependencies>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>${mysql-connector-java.version}</version>
        </dependency>
    </dependencies>
    <configuration>
        <driver>com.mysql.jdbc.Driver</driver>
        <username>user_with_create_privs</username>
        <password>password</password>
        <url>jdbc:mysql://localhost/dummy_schema</url>
    </configuration>
    <executions>
        <execution>
            <id>create-db</id>
            <phase>process-test-classes</phase>
            <goals>
                <goal>execute</goal>
            </goals>
            <configuration>
                <url>jdbc:mysql://localhost/dummy_schema</url>
                <autocommit>true</autocommit>
                <sqlCommand>create database ${databaseSchema}</sqlCommand>
            </configuration>
        </execution>
    </executions>
</plugin>
mvn test

结果输出:

[DEBUG] SQL:  drop database ${databaseSchema}
[ERROR] Failed to execute:  drop database ${databaseSchema}
[ERROR] Failed to execute goal org.codehaus.mojo:sql-maven-plugin:1.5:execute
(create-db) on project billing-core: You have an error in your SQL syntax; check
the manual that corresponds to your MySQL server version for the right
syntax to use near '{databaseSchema}' at line 1 -> [Help 1]

因此,看起来${databaseSchema}没有被填充,或者是语法问题。我拉过小提琴,但不能让这个工作,尽管它看起来很容易,也应该。

共有1个答案

尚楚
2023-03-14

您可能混淆了Maven的属性、Java系统属性和环境变量。您希望使用的变量看起来像Maven属性。

您可以在properties元素中定义POM中的属性。此外,您可以使用${env.PropertyName}表单引用环境变量,并使用${Java.PropertyName}表单引用Java系统属性。

有关更多信息,您可以参考以下内容:https://maven.apache.org/pom.html#properties

 类似资料:
  • 掌握构建生命周期 作为一个构建脚本的开发者,你不应该局限于编写任务动作或者配置逻辑,有时候你想在指定的生命周期事件发生的时候执行一段代码。生命周期事件可以在指定的生命周期之前、之中或者之后发生,在执行阶段之后发生的生命周期事件就该是构建的完成了。 假设你希望在构建失败时能够在开发阶段尽早得到反馈,给构建生命周期事件添加回调有两种方法:一是通过闭包,二是实现 Gradle API 的一个监听接口,G

  • 本文向大家介绍AngularJS深入探讨scope,继承结构,事件系统和生命周期,包括了AngularJS深入探讨scope,继承结构,事件系统和生命周期的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了AngularJS的scope,继承结构,事件系统和生命周期。分享给大家供大家参考,具体如下: 深入探讨 Scope 作用域 每一个 $scope 都是类 Scope 的一个实例。类 Sco

  • Examples Data fetch 如果你需要一个有状态、生命周期或有初始数据的 React 组件(而不是上面的无状态函数),如下所示: import React from 'react' export default class extends React.Component { static async getInitialProps({ req }) { const use

  • 我是马文的新手。我正在尝试将一个插件集成到我的构建中,这样它将作为阶段执行的一部分自动执行。 假设我想插入清洁生命周期阶段。 我正在使用的mojo被注释为指定它应该被注入清洁阶段: 这个mojo是按照插件工具Java5注解中的说明安装的。我在pom中添加了插件。xml: 据我所知,在Mojo java代码中使用生命周期绑定可以消除在构建插件中提供执行的需要。对吗? 在调用myclean上面配置的m

  • Spring的初学者 背景:到目前为止,我一直在研究核心JAVA,现在我需要切换到MVC 尝试制作本教程中的第一个Spring MVC Hello World示例,我在: pom的这一行产生错误。xml: 波姆。xml 我甚至在市场搜索后安装了 请放轻松,这个问题是为了学习一些对我来说完全陌生的东西 我需要一些插件或什么来解决这个问题吗?如果是这样的话,有没有通用的插件来避免将来出现这样的错误 P