2017-04-25 197 views
0

我有一个总是运行某些参数的目标。我不想一次又一次指定它们,并希望包含在POM文件中,以便即使另一个目标调用该目标时,也会考虑执行这些参数。如何在POM文件中指定maven命令行选项?

这些参数不应在全局范围内,因为它们仅用于测试范围。


我在使用配置文件的spring-boot中有一个代码。如果我使用-Dspring.profiles.active=TEST运行测试,则会出现预期结果。因此要运行failsafe:integration-test目标需要-Dspring.profiles.active=TEST

回答

1

你这里有两种选择:在需要它们的测试指定活动概况:

@RunWith(SpringRunner.class) 
@SpringBootTest 
@ActiveProfiles("TEST") 
public class MyServiceTest { 

    @Autowired 
    MyService myService; 

    @Test 
    public void testServiceInitialized() throws Exception { 
     // ... 
    } 

这也使IDE直接运行测试。

方案二是让故障安全插件知道该-D参数传递给测试:

http://maven.apache.org/surefire/maven-failsafe-plugin/integration-test-mojo.html#argLine

因此,无论设置属性“argLine”包含此参数或配置插件。使用这种方法,这些测试只能使用maven运行 - 在IDE中您可能必须重现此配置 - 有些智能会自动执行此操作。

如果您还需要告诉春天开机,使一些轮廓弹簧启动插件允许直接这样:http://docs.spring.io/spring-boot/docs/current/maven-plugin/examples/run-profiles.html

+0

这个工作就像魅力的测试配置文件。 –

+0

问题是,运行主应用程序的同样的事情失败,说'没有活动配置文件发现' –

+1

不知道你遇到什么错误。 ActiveProfiles仅用于测试。如果您的配置仅对某些配置文件有效,则为@Profile。如果您需要为应用程序启用某些特定的配置文件,请通过命令行上的-D选项或通过在spring-boot maven插件中激活它们来实现:http://docs.spring.io/spring-boot/docs/current /maven-plugin/run-mojo.html(设置属性)。这是来自Spring的错误吗?由于没有要求配置文件...或者你至少有一个@Profile?那么根本没有默认的bean? – wemu