据我所知,Maven 无法为反应堆构建中的每个模块构建(对于正在构建的模块)更改当前工作目录,因为它不是可能在标准Java中更改当前工作目录。首先,这是正确的吗?
如果是,我如何使以下方案有效?
更新:我有一个 some.properties 文件应该在正在构建的模块的类路径上(例如在src / main / resources中)并且它在 Maven插件的Spring上下文文件中引用,如下所示:
<bean id="placeholderConfig" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="ignoreResourceNotFound" value="true"/>
<property name="locations">
<array>
<value>classpath:some.properties</value>
</array>
</property>
</bean>
Maven插件正在“process-test-resources”阶段执行。此外,some.properties文件具有引用外部相对可配置路径的属性:
some.spring.config.dir=target/test-classes
然后,来自此路径的一些配置文件将加载到正在构建的模块中的spring上下文文件中,例如:
<property name="configLocation" value="file:${some.spring.config.dir}/cache.xml" />
当我从pom.xml目录构建项目时,此方案有效,但当我从顶级目录构建反应器构建的一部分时,不。当从任何目录运行maven 并且还保留我的属性文件中的路径(例如“target / test-classes”) relative 时,有没有办法让它工作?< / p>
答案 0 :(得分:0)
需要两个步骤:
包含配置文件的资源过滤:http://maven.apache.org/plugins/maven-resources-plugin/examples/filter.html
add basedir:
some.spring.config.dir=${basedir}/target/test-classes
在“target”目录中,“some.spring.config.dir”将以完整路径填充。