我使用标准的java类MavenProject和com.jcabi.aether.Aether java API来确定给定POM的jar依赖关系集。默认情况下,没有通过API发生资源过滤,我还没有发现如何调用Aether.resolve()以获取依赖关系,例如
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>${my-junit.version}</version>
<scope>test</scope>
</dependency>
没有得到DependencyResolutionException错误'原因:无法加载'junit:junit:jar:$ {my-junit.version}'因为它有文字'$ {..}'版本字符串。这是一段代码:
MavenProject proj = ..
Dependency dep = proj.getDependencies()...
Aether aether = new Aether(proj, ..)
aether.resolve(new DefaultArtifact(... dep.getVersion() ..)
如何通过这些API启用资源过滤,以便默认情况下发生用户/内置属性替换?或者这是一个手动过程?请尽可能提供代码示例,欢呼!
答案 0 :(得分:0)
我们遇到了类似的问题,必须手动进行属性替换。您可以在getProperties()
参考号上调用MavenProject
方法。
以下几行应该有效:
Properties props = proj.getProperties();
String depVersion = stripOutDollarAndCurlyBrackets(dep.getVersion());
String realDepVersion = props.getProperty(depVersion);
dep.setVersion(realDepVersion);
你显然需要编写stripOutDollarAndCurlyBrackets()
方法,但希望这能为你提供这个想法。