序
本文次要钻研一下如何解析pom文件
maven-model
maven提供了maven-model的类库能够间接解析
<dependency> <groupId>org.apache.maven</groupId> <artifactId>maven-model</artifactId> <version>3.9.4</version> </dependency>
应用
MavenXpp3Reader xpp3Reader = new MavenXpp3Reader(); Model model = xpp3Reader.read(new ByteArrayInputStream(data)); Properties properties = model.getProperties();
应用MavenXpp3Reader能够间接读取pom文件,之后就能够失去Model
Model
maven-model-3.9.4-sources.jar!/org/apache/maven/model/Model.java
public class Model extends ModelBase implements Serializable, Cloneable { private String modelVersion; private Parent parent; private String groupId; private String artifactId; private String version; private String packaging = "jar"; private String name; private String description; private String url; private String childProjectUrlInheritAppendPath; private String inceptionYear; private Organization organization; private List<License> licenses; private List<Developer> developers; private List<Contributor> contributors; private List<MailingList> mailingLists; private Prerequisites prerequisites; private Scm scm; private IssueManagement issueManagement; private CiManagement ciManagement; private Build build; private List<Profile> profiles; private String modelEncoding = "UTF-8"; private File pomFile; //......}
Model继承了ModelBase
ModelBase
maven-model-3.9.4-sources.jar!/org/apache/maven/model/ModelBase.java
public class ModelBase implements Serializable, Cloneable, InputLocationTracker { private List<String> modules; private DistributionManagement distributionManagement; private Properties properties; private DependencyManagement dependencyManagement; private List<Dependency> dependencies; private List<Repository> repositories; private List<Repository> pluginRepositories; private Object reports; private Reporting reporting; private Map<Object, InputLocation> locations; private InputLocation location; private InputLocation modulesLocation; private InputLocation distributionManagementLocation; private InputLocation propertiesLocation; private InputLocation dependencyManagementLocation; private InputLocation dependenciesLocation; private InputLocation repositoriesLocation; private InputLocation pluginRepositoriesLocation; private InputLocation reportsLocation; private InputLocation reportingLocation; //......}
ModelBase定义了诸如properties、dependencyManagement、dependencies等
小结
maven提供了maven-model能够间接解析pom,它内置了对pom文件的model,能够用来疾速剖析依赖等。