当版本在标记中维护时,我在使用xpp 3获取工件的版本时遇到了问题。我使用org.apache.maven.model.io.xpp3.MavenXpp3Reader
获取模型,然后获取属性
MavenXpp3Reader pomReader = new MavenXpp3Reader();
FileReader fileReader = new FileReader(pom);
model = pomReader.read(fileReader);
//e.g. ${rsfutil.version}-sakai_${sakairsf.sakai.version}
String version = pomModel.getVersion();
Properties properties = pomModel.getProperties();
Enumeration<?> enumeration = properties.propertyNames();
List<String> list = new ArrayList<>();
while (enumeration.hasMoreElements()){
Object o = enumeration.nextElement();
list.add((String)o);
}
for (String string : list) {
if (version.contains(string)){
String property = properties.getProperty(string);
version = version.replace(Pattern.quote("${"+string+"}"), property);
}
}
System.out.println(version);
即使正则表达式匹配,replace方法仍然不起作用。
而pom是这样的:
<artifactId>SakaiRSFComponents-evolvers</artifactId>
<parent>
<groupId>uk.org.ponder.pure-poms</groupId>
<artifactId>standard-sakai-tool</artifactId>
<version>POM-4</version>
</parent>
<name>Sakai RSF Components Evolvers</name>
<groupId>uk.org.ponder.sakairsf</groupId>
<properties>
<sakairsf.sakai.version>2.2.x</sakairsf.sakai.version>
<rsfutil.version>0.7.4</rsfutil.version>
<ponderutilcore.version>1.2.4</ponderutilcore.version>
<jservletutil.version>1.2.4</jservletutil.version>
<sakai.version>[2.2.0,2.7.0)</sakai.version>
</properties>
<version>${rsfutil.version}-sakai_${sakairsf.sakai.version}</version>
...
我所要做的就是获得实际版本0.7.4-sakai_2.2.x
而不是${rsfutil.version}-sakai_${sakairsf.sakai.version}
。
谢谢!
1条答案
按热度按时间4ioopgfo1#
我发现我应该使用replaceAll方法而不是replace方法。