通過JAVA程式碼對pom.xml檔案進行dependency的增加與刪除操作
阿新 • • 發佈:2020-09-02
通過java程式碼對pom.xml檔案進行操作,首先需要引入jar包:
<!--pom.xml檔案解析-->
<dependency>
<groupId>org.apache.maven</groupId>
<artifactId>maven-model</artifactId>
<version>3.6.0</version>
</dependency>
1.對xml檔案進行增加操作:
程式碼中的key為:maven-model
Value為:
<dependency>
<groupId>org.apache.maven</groupId>
<artifactId>maven-model</artifactId>
<version>3.6.0</version>
</dependency>
/**
* xml中新增元件
* @param url 路徑
* @param paramKey 元件key
* @param paramValue 元件value
* @return
*/
@Override
public boolean addXml(String url, String paramKey, String paramValue) {
MavenXpp3Reader reader = new MavenXpp3Reader();
String pomUrl = url+"\\pom.xml";
String groupId = "";
String artifactId = "";
String version = "";
//groupId
String groupRgex = "<groupId>(.*?)</groupId>";
groupId = getParam(paramValue, groupRgex);
//artifactId
String artifactRgex = "<artifactId>(.*?)</artifactId>";
artifactId = getParam(paramValue, artifactRgex);
//version
String versionRgex = "<version>(.*?)</version>";
version = getParam(paramValue, versionRgex);
try {
FileInputStream fis = new FileInputStream(new File(pomUrl));
Model model = reader.read(fis);
List<Dependency> dependencies = model.getDependencies();
Dependency addDependency = new Dependency();
addDependency.setGroupId(groupId);
addDependency.setArtifactId(artifactId);
addDependency.setVersion(version);
dependencies.add(addDependency);
model.setDependencies(dependencies);
MavenXpp3Writer mavenXpp3Writer = new MavenXpp3Writer();
mavenXpp3Writer.write(new FileWriter(pomUrl),model);
} catch (IOException e) {
e.printStackTrace();
} catch (XmlPullParserException e) {
e.printStackTrace();
}
return true;
}
/** * @description 獲取匹配模式的正則 * @param param 引數 * @param rgex 正則表示式 * @return */ private String getParam(String param, String rgex) { Pattern groupPattern = Pattern.compile(rgex);// 匹配的模式 Matcher group = groupPattern.matcher(param); String id = ""; while(group.find()){ id = group.group(1); } return id; }
注意:有的<dependency>中不只含有groupId、artifactId、version,需要進行具體分析
2.對xml檔案進行刪除操作:
/**
* 刪除xml中依賴
* @param url 路徑
* @param paramKey 元件key
* @param paramValue 元件value
* @return
*/
@Override
public boolean deleteXml(String url, String paramKey, String paramValue) {
MavenXpp3Reader reader = new MavenXpp3Reader();
String pomUrl = url+"\\pom.xml";
try {
FileInputStream fis = new FileInputStream(new File(pomUrl));
Model model = reader.read(fis);
List<Dependency> dependencies = model.getDependencies();
for (Dependency dependency:dependencies) {
String artifactId = dependency.getArtifactId();
if(artifactId.equals(paramKey)){
dependencies.remove(dependency);
break;
}
}
MavenXpp3Writer mavenXpp3Writer = new MavenXpp3Writer();
mavenXpp3Writer.write(new FileWriter(pomUrl),model);
} catch (IOException e) {
e.printStackTrace();
} catch (XmlPullParserException e) {
e.printStackTrace();
}
return true;
}