Maven:通过JavaAPI启用资源过滤

Maven:通过JavaAPI启用资源过滤,maven,filtering,pom.xml,java,aether,Maven,Filtering,Pom.xml,Java,Aether,我正在使用标准java类MavenProject和com.jcabi.ether.ether java API来确定给定POM的jar依赖项集。默认情况下,没有通过API进行资源筛选,我还没有发现如何为诸如 <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>${my-junit.version}<

我正在使用标准java类MavenProject和com.jcabi.ether.ether java API来确定给定POM的jar依赖项集。默认情况下,没有通过API进行资源筛选,我还没有发现如何为诸如

<dependency>
   <groupId>junit</groupId>
   <artifactId>junit</artifactId>
   <version>${my-junit.version}</version>
   <scope>test</scope>
</dependency>

如何通过这些API启用资源筛选,以便默认情况下发生用户/内置属性替换?或者这是一个手动过程?如果可能,请提供代码示例,干杯

我们遇到了类似的问题,必须手动进行属性替换。您可以在
MavenProject
参考上调用
getProperties()
方法

应采取以下措施:

Properties props = proj.getProperties();
String depVersion = stripOutDollarAndCurlyBrackets(dep.getVersion());
String realDepVersion = props.getProperty(depVersion);
dep.setVersion(realDepVersion);

显然,您需要编写
stripOutDollarAndCurlyBrackets()
方法,但希望这能为您提供思路。

请注意,这不是资源筛选,而是属性插值。我将使用
mvn help:effective pom
生成完整的pom,然后让您的代码读入其中。
Properties props = proj.getProperties();
String depVersion = stripOutDollarAndCurlyBrackets(dep.getVersion());
String realDepVersion = props.getProperty(depVersion);
dep.setVersion(realDepVersion);