相关疑难解决方法(0)

为Maven项目指定系统属性

有没有办法(我的意思是如何)在maven项目中设置系统属性?

我想从我的测试和我的webapp(本地运行)访问一个属性,我知道我可以使用java系统属性.

我应该把它放在./settings.xml或类似的东西?

上下文

我参加了一个开源项目并设法更改数据库配置以使用JavaDB

现在,在JavaDB的jdbc url中,可以将数据库的位置指定为完整路径(请参阅:此其他问题)

或系统属性: derby.system.home

我已经有了代码工作,但目前所有硬编码都是:

 jdbc:derby:/Users/oscarreyes/javadbs/mydb
Run Code Online (Sandbox Code Playgroud)

我想删除完整的路径,让它像:

 jdbc:derby:mydb
Run Code Online (Sandbox Code Playgroud)

要做到这一点,我需要将系统属性(derby.system.home)指定为maven,但我不知道如何.

测试是使用junit执行的(我在pom.xml中看不到任何插件),web应用程序使用jetty插件运行.

在命令行中指定系统属性似乎适用于jetty,但我不确定这是否实用(授予其他一些用户可以从eclipse/idea /中运行它)

maven-2 system-properties

63
推荐指数
3
解决办法
16万
查看次数

如何使用 Spring Boot 一次性针对真实数据库而不是内存中运行 @DataJpaTest

我正在使用 Spring Boot 1.4.3 并且有一大堆用@DataJpaTest. 默认情况下,它们针对内存数据库运行。我希望能够暂时针对本地 MySQL 运行所有这些。我怎样才能以简单的方式做到这一点?

我发现,我可以把它加入了一个工作,@ActiveProfiles("local")在那里我有一个application-local.properties是指向我的本地MySQL,但它仅仅是太多的工作,以补充说无处不在,运行测试,然后将其删除(因为我只想针对 MySQL 手动运行它,CI 环境将针对内存数据库运行)。

如果这很重要,我正在使用 Maven。

更新:

所以我有一个application-local.properties包含 db 属性来连接到我的本地 MySQL 数据库(我已经使用它来针对本地 MySQL 运行我的应用程序)

然后我在 IntelliJ 中右键单击一个包并选择“运行包中的所有测试”。在该运行配置的设置中,我添加-Dspring.profiles.active=local到“VM 选项”字段。

我原以为这会local在测试期间激活配置文件,但事实并非如此。如果我停止本地 MySQL,测试仍然运行良好。

java spring-test spring-boot

9
推荐指数
1
解决办法
3695
查看次数

Spring Profiles:ActiveProfilesResolver的简单示例?

我在做什么?
我有一个应用程序,我想在不同的环境中测试 - 开发,登台等

我所做的?
我正在使用maven cargo插件来部署应用程序战以运行集成测试.

我需要的?
我需要在我的测试中推断spring.profiles.active基于货物设置的环境变量

                    <container>
                        <containerId>tomcat7x</containerId>
                        <systemProperties>
                            <spring.profiles.active>development</spring.profiles.active>
                        </systemProperties>
                    </container>
Run Code Online (Sandbox Code Playgroud)

为什么?
这样我就可以在集成测试中删除硬编码,@ActiveProfiles("development")测试可以从环境变量中推断出哪些活动配置文件

问题
- 我发现使用配置文件的Spring集成测试提到了使用ActiveProfilesResolver
- 我试图找到如何使用它,但找不到任何资源
我正在寻找关于如何使用的指导/建议ActiveProfilesResolver

java spring maven

8
推荐指数
1
解决办法
3947
查看次数

在测试用例中定义弹簧活动配置文件

使用Spring 4,我有以下测试设置:

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = JpaConfig.class)
@ActiveProfiles(resolver = TestResolver.class)
public class SimpleTest {
Run Code Online (Sandbox Code Playgroud)

TestResolver已实现为:

public class TestResolver implements ActiveProfilesResolver {
    @Override
    public String[] resolve(Class<?> aClass) {
        String[] profiles = new String[1];
        profiles[0] = "test";
        return profiles;
    }
}
Run Code Online (Sandbox Code Playgroud)

JpaConfig已经使用PropertySource注释

@Configuration
@PropertySource("classpath:properties/application-${spring.profiles.active:dev}.properties")
@EnableJpaRepositories(basePackages={"com.my.namespace.repositories"})
public class JpaConfig {
Run Code Online (Sandbox Code Playgroud)

每当我运行SimpleTest时,它会尝试找到:properties/application-dev.properties,而我期望它是properties/application-test.properties.

我在这里要完成的是基于以下帖子:使用profile进行Spring集成测试

java spring spring-test

4
推荐指数
1
解决办法
8955
查看次数