ReadPom 读取pom信息
(reader io.Reader)
| 130 | |
| 131 | // ReadPom 读取pom信息 |
| 132 | func ReadPom(reader io.Reader) *Pom { |
| 133 | |
| 134 | data, err := io.ReadAll(reader) |
| 135 | if err != nil { |
| 136 | logs.Warn(err) |
| 137 | return nil |
| 138 | } |
| 139 | |
| 140 | data = regexp.MustCompile(`xml version="1.0" encoding="\S+"`).ReplaceAll(data, []byte(`xml version="1.0" encoding="UTF-8"`)) |
| 141 | p := &Pom{Properties: PomProperties{}} |
| 142 | xml.Unmarshal(data, &p) |
| 143 | |
| 144 | trimSpace(&p.Parent) |
| 145 | trimSpace(&p.PomDependency) |
| 146 | |
| 147 | if p.GroupId == "" { |
| 148 | p.GroupId = p.Parent.GroupId |
| 149 | } |
| 150 | if p.Version == "" { |
| 151 | p.Version = p.Parent.Version |
| 152 | } |
| 153 | |
| 154 | p.Parent.Define = p |
| 155 | for _, v := range p.Properties { |
| 156 | v.Define = p |
| 157 | } |
| 158 | for _, d := range p.DependencyManagement { |
| 159 | d.Define = p |
| 160 | } |
| 161 | for _, d := range p.Dependencies { |
| 162 | trimSpace(d) |
| 163 | d.Define = p |
| 164 | } |
| 165 | |
| 166 | // 添加内置属性 |
| 167 | p.Properties["project.groupId"] = &Property{Key: "project.groupId", Value: p.GroupId} |
| 168 | p.Properties["groupId"] = &Property{Key: "groupId", Value: p.GroupId} |
| 169 | p.Properties["pom.groupId"] = &Property{Key: "pom.groupId", Value: p.GroupId} |
| 170 | p.Properties["project.parent.groupId"] = &Property{Key: "project.parent.groupId", Value: p.Parent.GroupId} |
| 171 | p.Properties["parent.groupId"] = &Property{Key: "parent.groupId", Value: p.Parent.GroupId} |
| 172 | p.Properties["project.version"] = &Property{Key: "project.version", Value: p.Version} |
| 173 | p.Properties["version"] = &Property{Key: "version", Value: p.Version} |
| 174 | p.Properties["pom.version"] = &Property{Key: "pom.version", Value: p.Version} |
| 175 | p.Properties["project.parent.version"] = &Property{Key: "project.parent.version", Value: p.Parent.Version} |
| 176 | p.Properties["parent.version"] = &Property{Key: "parent.version", Value: p.Parent.Version} |
| 177 | |
| 178 | // 添加第一个Profile |
| 179 | if len(p.Profiles) > 0 { |
| 180 | profile := p.Profiles[0] |
| 181 | for k, v := range profile.Properties { |
| 182 | if _, ok := p.Properties[k]; !ok { |
| 183 | p.Properties[k] = v |
| 184 | } |
| 185 | } |
| 186 | p.Dependencies = append(p.Dependencies, profile.Dependencies...) |
| 187 | p.DependencyManagement = append(p.DependencyManagement, profile.DependencyManagement...) |
| 188 | p.Modules = append(p.Modules, profile.Modules...) |
| 189 | p.Mirrors = append(p.Mirrors, profile.Mirrors...) |