Skip to content

Commit c32a2a9

Browse files
ci: 修复工作流问题
Signed-off-by: unknowIfGuestInDream <liang.tang.cx@gmail.com>
1 parent 8d6bd4b commit c32a2a9

File tree

1 file changed

+37
-25
lines changed

1 file changed

+37
-25
lines changed

.github/workflows/check-aliyun-maven.yml

Lines changed: 37 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -87,39 +87,51 @@ jobs:
8787
// Maven 依赖解析
8888
// 1. 读取并解析整个pom.xml
8989
const pomContent = fs.readFileSync('pom.xml', 'utf-8');
90-
let pom = {};
91-
let properties = {};
92-
let allDependencies = [];
9390
9491
// 使用xml2js解析pom.xml
95-
const parser = new xml2js.Parser();
92+
const parser = new xml2js.Parser({ explicitArray: false });
9693
const result = await parser.parseStringPromise(pomContent);
9794
9895
// 提取properties
99-
if (result.project.properties && result.project.properties[0]) {
100-
for (const [key, value] of Object.entries(result.project.properties[0])) {
101-
if (Array.isArray(value)) {
102-
properties[key] = value[0];
103-
}
96+
const properties = result.project?.properties || {};
97+
98+
// 递归提取依赖的函数
99+
const allDependencies = [];
100+
const extractDeps = (deps, scope) => {
101+
if (!deps?.dependency) return;
102+
const depList = Array.isArray(deps.dependency) ? deps.dependency : [deps.dependency];
103+
104+
depList.forEach(dep => {
105+
if (!dep.groupId || !dep.artifactId) return;
106+
// 处理版本号(可能是直接值或属性引用)
107+
let version = dep.version || '';
108+
let fromProperty = '';
109+
110+
if (version.startsWith('${') && version.endsWith('}')) {
111+
const propName = version.slice(2, -1);
112+
version = properties[propName] || version;
113+
fromProperty = propName;
104114
}
105-
}
106115
107-
// 提取所有依赖
108-
if (result.project.dependencies && result.project.dependencies[0]) {
109-
allDependencies = result.project.dependencies[0].dependency.map(dep => ({
110-
groupId: dep.groupId[0],
111-
artifactId: dep.artifactId[0],
112-
version: dep.version ? dep.version[0] : null
113-
}));
116+
allDependencies.push({
117+
group: dep.groupId,
118+
artifact: dep.artifactId,
119+
version: version,
120+
scope: scope || dep.scope || 'compile',
121+
fromProperty: fromProperty || undefined,
122+
isManaged: scope === 'management'
123+
});
124+
});
125+
};
126+
127+
// 1. 提取dependencyManagement中的依赖
128+
if (result.project?.dependencyManagement?.dependencies) {
129+
extractDeps(result.project.dependencyManagement.dependencies, 'management');
114130
}
115-
if (result.project.dependencyManagement && result.project.dependencyManagement[0] && result.project.dependencyManagement[0].dependencies[0]) {
116-
result.project.dependencyManagement[0].dependencies[0].dependency.foreach(dep => ({
117-
allDependencies.push({
118-
groupId: dep.groupId[0],
119-
artifactId: dep.artifactId[0],
120-
version: dep.version ? dep.version[0] : null
121-
});
122-
}));
131+
132+
// 2. 提取普通dependencies
133+
if (result.project?.dependencies) {
134+
extractDeps(result.project.dependencies);
123135
}
124136
console.log("=====allDependencies=====");
125137
console.log(allDependencies);

0 commit comments

Comments
 (0)