我使用
在父pom.xml
Spring支持中激活
<activation>
<file>
<exists>src/main/resources/*beans.xml</exists>
</file>
</activation>
这很好用。
当我尝试使用
激活配置文件中的CucumberJVM内容时<activation>
<file>
<exists>src/test/resources/**/*.feature</exists>
</file>
</activation>
然而,这拒绝工作。所以我想在这种情况下会忽略**
通配符。
这是正常现象吗?有.feature
文件存在时激活此配置文件的解决方法吗?
答案 0 :(得分:8)
我真的很惊讶*beans.xml
有效。
据我所知,文件激活时不支持通配符。可以在FileProfileActivator中找到基于<file>
计算配置文件激活的源代码。核心逻辑是这样的:
String path = //<file><exists> ...
RegexBasedInterpolator interpolator = new RegexBasedInterpolator();
interpolator.addValueSource(/* ${basedir} suppert */)
interpolator.addValueSource( new MapBasedValueSource( context.getProjectProperties() ) );
interpolator.addValueSource( new MapBasedValueSource( context.getUserProperties() ) );
interpolator.addValueSource( new MapBasedValueSource( context.getSystemProperties() ) );
path = interpolator.interpolate( path, "" );
path = pathTranslator.alignToBaseDirectory( path, basedir );
File f = new File( path );
if ( !f.isAbsolute() ){
return false;
}
boolean isActive = f.exists();
interpolate(...)
和alignToBaseDirectory(...)
都没有处理通配符。
作为一种解决方法,您可以使用<activation><property>
尝试一些gimick,但这需要使用shell脚本调用maven构建。
答案 1 :(得分:2)
在我们的项目中,我们使用下面的配置使用jar-plugin将所有测试打包为jar文件:
<activation>
<file>
<exists>src/test/resources/com/companyname/platform/test/</exists>
</file>
</activation>
这是有效的,因为: