@nx/gradle 20.4.0 → 20.4.2

Sign up to get free protection for your applications and to get access to all the features.
package/generators.json CHANGED
@@ -5,7 +5,8 @@
5
5
  "init": {
6
6
  "factory": "./src/generators/init/init#initGenerator",
7
7
  "schema": "./src/generators/init/schema.json",
8
- "description": "Initializes a Gradle project in the current workspace"
8
+ "description": "Initializes a Gradle project in the current workspace",
9
+ "hidden": true
9
10
  },
10
11
  "ci-workflow": {
11
12
  "factory": "./src/generators/ci-workflow/generator",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nx/gradle",
3
- "version": "20.4.0",
3
+ "version": "20.4.2",
4
4
  "private": false,
5
5
  "description": "The Nx Plugin for Gradle allows Gradle tasks to be run through Nx",
6
6
  "repository": {
@@ -34,7 +34,7 @@
34
34
  "migrations": "./migrations.json"
35
35
  },
36
36
  "dependencies": {
37
- "@nx/devkit": "20.4.0"
37
+ "@nx/devkit": "20.4.2"
38
38
  },
39
39
  "publishConfig": {
40
40
  "access": "public"
@@ -1,3 +1,2 @@
1
- import { CreateDependencies, CreateDependenciesContext, RawProjectGraphDependency } from '@nx/devkit';
1
+ import { CreateDependencies } from '@nx/devkit';
2
2
  export declare const createDependencies: CreateDependencies;
3
- export declare function processGradleDependencies(depsFile: string, gradleProjectNameToProjectRoot: Map<string, string>, sourceProjectName: string, gradleFile: string, context: CreateDependenciesContext, dependencies: Set<RawProjectGraphDependency>): void;
@@ -1,13 +1,10 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.createDependencies = void 0;
4
- exports.processGradleDependencies = processGradleDependencies;
5
4
  const devkit_1 = require("@nx/devkit");
6
- const node_fs_1 = require("node:fs");
7
5
  const node_path_1 = require("node:path");
8
6
  const get_gradle_report_1 = require("../utils/get-gradle-report");
9
7
  const split_config_files_1 = require("../utils/split-config-files");
10
- const get_project_report_lines_1 = require("../utils/get-project-report-lines");
11
8
  const createDependencies = async (_, context) => {
12
9
  const gradleFiles = findGradleFiles(context.filesToProcess);
13
10
  if (gradleFiles.length === 0) {
@@ -19,9 +16,20 @@ const createDependencies = async (_, context) => {
19
16
  for (const gradleFile of gradleFiles) {
20
17
  const gradleProject = gradleFileToGradleProjectMap.get(gradleFile);
21
18
  const projectName = Object.values(context.projects).find((project) => project.root === (0, node_path_1.dirname)(gradleFile))?.name;
22
- const depsFile = buildFileToDepsMap.get(gradleFile);
23
- if (projectName && depsFile) {
24
- processGradleDependencies(depsFile, gradleProjectNameToProjectRootMap, projectName, gradleFile, context, dependencies);
19
+ const dependedProjects = buildFileToDepsMap.get(gradleFile);
20
+ if (projectName && dependedProjects?.size) {
21
+ dependedProjects?.forEach((dependedProject) => {
22
+ const targetProjectRoot = gradleProjectNameToProjectRootMap.get(dependedProject);
23
+ const targetProjectName = Object.values(context.projects).find((project) => project.root === targetProjectRoot)?.name;
24
+ const dependency = {
25
+ source: projectName,
26
+ target: targetProjectName,
27
+ type: devkit_1.DependencyType.static,
28
+ sourceFile: gradleFile,
29
+ };
30
+ (0, devkit_1.validateDependency)(dependency, context);
31
+ dependencies.add(dependency);
32
+ });
25
33
  }
26
34
  gradleProjectToChildProjects.get(gradleProject)?.forEach((childProject) => {
27
35
  if (childProject) {
@@ -52,46 +60,3 @@ function findGradleFiles(fileMap) {
52
60
  }
53
61
  return gradleFiles;
54
62
  }
55
- function processGradleDependencies(depsFile, gradleProjectNameToProjectRoot, sourceProjectName, gradleFile, context, dependencies) {
56
- const lines = (0, node_fs_1.readFileSync)(depsFile).toString().split(get_project_report_lines_1.newLineSeparator);
57
- let inDeps = false;
58
- for (const line of lines) {
59
- if (line.startsWith('implementationDependenciesMetadata') ||
60
- line.startsWith('compileClasspath')) {
61
- inDeps = true;
62
- continue;
63
- }
64
- if (inDeps) {
65
- if (line === '') {
66
- inDeps = false;
67
- continue;
68
- }
69
- const [indents, dep] = line.split('--- ');
70
- if (indents === '\\' || indents === '+') {
71
- let gradleProjectName;
72
- if (dep.startsWith('project ')) {
73
- gradleProjectName = dep
74
- .substring('project '.length)
75
- .replace(/ \(n\)$/, '')
76
- .trim();
77
- }
78
- else if (dep.includes('-> project')) {
79
- const [_, projectName] = dep.split('-> project');
80
- gradleProjectName = projectName.trim();
81
- }
82
- const targetProjectRoot = gradleProjectNameToProjectRoot.get(gradleProjectName);
83
- const targetProjectName = Object.values(context.projects).find((project) => project.root === targetProjectRoot)?.name;
84
- if (targetProjectName) {
85
- const dependency = {
86
- source: sourceProjectName,
87
- target: targetProjectName,
88
- type: devkit_1.DependencyType.static,
89
- sourceFile: gradleFile,
90
- };
91
- (0, devkit_1.validateDependency)(dependency, context);
92
- dependencies.add(dependency);
93
- }
94
- }
95
- }
96
- }
97
- }
@@ -94,7 +94,7 @@ async function createGradleProject(gradleReport, gradleFilePath, options, contex
94
94
  let tasks = [];
95
95
  tasksSet.forEach((taskName) => {
96
96
  tasks.push({
97
- type: tasksTypeMap.get(taskName),
97
+ type: tasksTypeMap?.get(taskName),
98
98
  name: taskName,
99
99
  });
100
100
  });
@@ -7,6 +7,7 @@ const devkit_1 = require("@nx/devkit");
7
7
  const node_child_process_1 = require("node:child_process");
8
8
  const node_fs_1 = require("node:fs");
9
9
  const node_path_1 = require("node:path");
10
+ const run_commands_impl_1 = require("nx/src/executors/run-commands/run-commands.impl");
10
11
  /**
11
12
  * For gradle command, it needs to be run from the directory of the gradle binary
12
13
  * @returns gradle binary file name
@@ -28,6 +29,7 @@ function execGradleAsync(gradleBinaryPath, args, execOptions = {}) {
28
29
  shell: true,
29
30
  windowsHide: true,
30
31
  env: process.env,
32
+ maxBuffer: run_commands_impl_1.LARGE_BUFFER,
31
33
  ...execOptions,
32
34
  });
33
35
  let stdout = Buffer.from('');
@@ -1,9 +1,9 @@
1
1
  export interface GradleReport {
2
2
  gradleFileToGradleProjectMap: Map<string, string>;
3
- buildFileToDepsMap: Map<string, string>;
3
+ buildFileToDepsMap: Map<string, Set<string>>;
4
4
  gradleFileToOutputDirsMap: Map<string, Map<string, string>>;
5
5
  gradleProjectToTasksTypeMap: Map<string, Map<string, string>>;
6
- gradleProjectToTasksMap: Map<string, Set<String>>;
6
+ gradleProjectToTasksMap: Map<string, Set<string>>;
7
7
  gradleProjectToProjectName: Map<string, string>;
8
8
  gradleProjectNameToProjectRootMap: Map<string, string>;
9
9
  gradleProjectToChildProjects: Map<string, string[]>;
@@ -11,10 +11,10 @@ export interface GradleReport {
11
11
  export interface GradleReportJSON {
12
12
  hash: string;
13
13
  gradleFileToGradleProjectMap: Record<string, string>;
14
- buildFileToDepsMap: Record<string, string>;
14
+ buildFileToDepsMap: Record<string, Set<string>>;
15
15
  gradleFileToOutputDirsMap: Record<string, Record<string, string>>;
16
16
  gradleProjectToTasksTypeMap: Record<string, Record<string, string>>;
17
- gradleProjectToTasksMap: Record<string, Array<String>>;
17
+ gradleProjectToTasksMap: Record<string, Array<string>>;
18
18
  gradleProjectToProjectName: Record<string, string>;
19
19
  gradleProjectNameToProjectRootMap: Record<string, string>;
20
20
  gradleProjectToChildProjects: Record<string, string[]>;
@@ -33,3 +33,4 @@ export declare function getCurrentGradleReport(): GradleReport;
33
33
  */
34
34
  export declare function populateGradleReport(workspaceRoot: string, gradlewFiles: string[]): Promise<void>;
35
35
  export declare function processProjectReports(projectReportLines: string[]): GradleReport;
36
+ export declare function processGradleDependencies(depsFile: string): Set<string>;
@@ -4,6 +4,7 @@ exports.writeGradleReportToCache = writeGradleReportToCache;
4
4
  exports.getCurrentGradleReport = getCurrentGradleReport;
5
5
  exports.populateGradleReport = populateGradleReport;
6
6
  exports.processProjectReports = processProjectReports;
7
+ exports.processGradleDependencies = processGradleDependencies;
7
8
  const node_fs_1 = require("node:fs");
8
9
  const node_path_1 = require("node:path");
9
10
  const devkit_1 = require("@nx/devkit");
@@ -184,7 +185,10 @@ function processProjectReports(projectReportLines) {
184
185
  }
185
186
  const buildFile = (0, devkit_1.normalizePath)((0, node_path_1.relative)(devkit_1.workspaceRoot, absBuildFilePath));
186
187
  const buildDir = (0, node_path_1.relative)(devkit_1.workspaceRoot, absBuildDirPath);
187
- buildFileToDepsMap.set(buildFile, dependenciesMap.get(gradleProject));
188
+ const depsFile = dependenciesMap.get(gradleProject);
189
+ if (depsFile) {
190
+ buildFileToDepsMap.set(buildFile, processGradleDependencies(depsFile));
191
+ }
188
192
  outputDirMap.set('build', `{workspaceRoot}/${buildDir}`);
189
193
  outputDirMap.set('classes', `{workspaceRoot}/${(0, node_path_1.join)(buildDir, 'classes')}`);
190
194
  gradleFileToOutputDirsMap.set(buildFile, outputDirMap);
@@ -238,3 +242,39 @@ function processProjectReports(projectReportLines) {
238
242
  gradleProjectToChildProjects,
239
243
  };
240
244
  }
245
+ function processGradleDependencies(depsFile) {
246
+ const dependedProjects = new Set();
247
+ const lines = (0, node_fs_1.readFileSync)(depsFile).toString().split(get_project_report_lines_1.newLineSeparator);
248
+ let inDeps = false;
249
+ for (const line of lines) {
250
+ if (line.startsWith('implementationDependenciesMetadata') ||
251
+ line.startsWith('compileClasspath')) {
252
+ inDeps = true;
253
+ continue;
254
+ }
255
+ if (inDeps) {
256
+ if (line === '') {
257
+ inDeps = false;
258
+ continue;
259
+ }
260
+ const [indents, dep] = line.split('--- ');
261
+ if (indents === '\\' || indents === '+') {
262
+ let targetProjectName;
263
+ if (dep.startsWith('project ')) {
264
+ targetProjectName = dep
265
+ .substring('project '.length)
266
+ .replace(/ \(n\)$/, '')
267
+ .trim();
268
+ }
269
+ else if (dep.includes('-> project')) {
270
+ const [_, projectName] = dep.split('-> project');
271
+ targetProjectName = projectName.trim();
272
+ }
273
+ if (targetProjectName) {
274
+ dependedProjects.add(targetProjectName);
275
+ }
276
+ }
277
+ }
278
+ }
279
+ return dependedProjects;
280
+ }