Skip to content

Commit fe36fcd

Browse files
committed
API 34 Support Gradle Tools project
1 parent 7009965 commit fe36fcd

14 files changed

+26
-735
lines changed

.gitignore

+1-4
Original file line numberDiff line numberDiff line change
@@ -29,11 +29,8 @@ example
2929
**/assets/www/cordova.js
3030

3131
/test/.externalNativeBuild
32-
33-
!/templates/project/gradle/wrapper/gradle-wrapper.jar
34-
!/test/androidx/gradle/wrapper/gradle-wrapper.jar
3532
/test/androidx/cdv-gradle-config.json
36-
33+
/test/androidx/tools
3734
/test/assets/www/.tmp*
3835
/test/assets/www/cordova.js
3936
/test/bin

lib/builders/ProjectBuilder.js

+3-11
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@ const fs = require('fs-extra');
2121
const path = require('path');
2222
const execa = require('execa');
2323
const glob = require('fast-glob');
24-
const semver = require('semver');
2524
const events = require('cordova-common').events;
2625
const CordovaError = require('cordova-common').CordovaError;
2726
const check_reqs = require('../check_reqs');
@@ -30,8 +29,6 @@ const { compareByAll, isWindows } = require('../utils');
3029
const { createEditor } = require('properties-parser');
3130
const CordovaGradleConfigParserFactory = require('../config/CordovaGradleConfigParserFactory');
3231

33-
const MIN_GRADLE_REQUIRED = '8.6';
34-
3532
const MARKER = 'YOUR CHANGES WILL BE ERASED!';
3633
const SIGNING_PROPERTIES = '-signing.properties';
3734
const TEMPLATE =
@@ -118,7 +115,7 @@ class ProjectBuilder {
118115
}
119116

120117
getGradleWrapperPath () {
121-
let wrapper = path.join(this.root, 'gradlew');
118+
let wrapper = path.join(this.root, 'tools', 'gradlew');
122119

123120
if (isWindows()) {
124121
wrapper += '.bat';
@@ -133,16 +130,11 @@ class ProjectBuilder {
133130
* @returns {Promise<void>}
134131
*/
135132
async installGradleWrapper (gradleVersion) {
136-
if (semver.compare(semver.coerce(MIN_GRADLE_REQUIRED), semver.coerce(gradleVersion)) === 1) {
137-
throw new CordovaError(`Cannot install Gradle ${gradleVersion}. Minimum Required is ${MIN_GRADLE_REQUIRED}.`);
138-
}
139-
140-
const wrapper = this.getGradleWrapperPath();
141133
if (process.env.CORDOVA_ANDROID_GRADLE_DISTRIBUTION_URL) {
142134
events.emit('verbose', `Overriding Gradle Version via CORDOVA_ANDROID_GRADLE_DISTRIBUTION_URL (${process.env.CORDOVA_ANDROID_GRADLE_DISTRIBUTION_URL})`);
143-
await execa(wrapper, ['-p', this.root, 'wrapper', '--gradle-distribution-url', process.env.CORDOVA_ANDROID_GRADLE_DISTRIBUTION_URL, '--validate-url'], { stdio: 'inherit' });
135+
await execa('gradle', ['-p', path.resolve(this.root, 'tools'), 'wrapper', '--gradle-distribution-url', process.env.CORDOVA_ANDROID_GRADLE_DISTRIBUTION_URL, '--validate-url'], { stdio: 'inherit' });
144136
} else {
145-
await execa(wrapper, ['-p', this.root, 'wrapper', '--gradle-version', gradleVersion, '--validate-url'], { stdio: 'inherit' });
137+
await execa('gradle', ['-p', path.resolve(this.root, 'tools'), 'wrapper', '--gradle-version', gradleVersion, '--validate-url'], { stdio: 'inherit' });
146138
}
147139
}
148140

lib/create.js

+3-5
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,7 @@ function copyBuildRules (projectPath) {
121121
fs.copySync(path.join(srcDir, 'app', 'repositories.gradle'), path.join(projectPath, 'app', 'repositories.gradle'));
122122
fs.copySync(path.join(srcDir, 'repositories.gradle'), path.join(projectPath, 'repositories.gradle'));
123123

124-
copyGradleWrapper(projectPath);
124+
copyGradleTools(projectPath);
125125
}
126126

127127
function copyScripts (projectPath) {
@@ -171,12 +171,10 @@ function validateProjectName (project_name) {
171171
return Promise.resolve();
172172
}
173173

174-
function copyGradleWrapper (projectPath) {
174+
function copyGradleTools (projectPath) {
175175
const srcDir = path.join(ROOT, 'templates', 'project');
176176

177-
fs.copySync(path.resolve(srcDir, 'gradle'), path.resolve(projectPath, 'gradle'));
178-
fs.copySync(path.resolve(srcDir, 'gradlew'), path.resolve(projectPath, 'gradlew'));
179-
fs.copySync(path.resolve(srcDir, 'gradlew.bat'), path.resolve(projectPath, 'gradlew.bat'));
177+
fs.copySync(path.resolve(srcDir, 'tools'), path.resolve(projectPath, 'tools'));
180178
}
181179

182180
/**

spec/unit/builders/ProjectBuilder.spec.js

+4-16
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@
1717
under the License.
1818
*/
1919

20-
const { CordovaError } = require('cordova-common');
2120
const fs = require('fs-extra');
2221
const path = require('path');
2322
const rewire = require('rewire');
@@ -135,27 +134,16 @@ describe('ProjectBuilder', () => {
135134
execaSpy.and.resolveTo();
136135
});
137136

138-
let gradle = path.normalize('/root/gradlew');
139-
if (isWindows()) {
140-
gradle += '.bat';
141-
}
142-
143137
it('should run gradle wrapper 8.7', async () => {
144138
await builder.installGradleWrapper('8.7');
145-
expect(execaSpy).toHaveBeenCalledWith(gradle, ['-p', '/root', 'wrapper', '--gradle-version', '8.7', '--validate-url'], jasmine.any(Object));
139+
expect(execaSpy).toHaveBeenCalledWith('gradle', ['-p', '/root/tools', 'wrapper', '--gradle-version', '8.7', '--validate-url'], jasmine.any(Object));
146140
});
147141

148142
it('CORDOVA_ANDROID_GRADLE_DISTRIBUTION_URL should override gradle version', async () => {
149143
process.env.CORDOVA_ANDROID_GRADLE_DISTRIBUTION_URL = 'https://dist.local';
150144
await builder.installGradleWrapper('8.7');
151145
delete process.env.CORDOVA_ANDROID_GRADLE_DISTRIBUTION_URL;
152-
expect(execaSpy).toHaveBeenCalledWith(gradle, ['-p', '/root', 'wrapper', '--gradle-distribution-url', 'https://dist.local', '--validate-url'], jasmine.any(Object));
153-
});
154-
155-
it('should error if attempting to install an unacceptable gradle version', async () => {
156-
const UNACCEPTABLE_VERSION = '8.5';
157-
await expectAsync(builder.installGradleWrapper(UNACCEPTABLE_VERSION))
158-
.toBeRejectedWithError(CordovaError, new RegExp(`^Cannot install Gradle ${UNACCEPTABLE_VERSION}.+`));
146+
expect(execaSpy).toHaveBeenCalledWith('gradle', ['-p', '/root/tools', 'wrapper', '--gradle-distribution-url', 'https://dist.local', '--validate-url'], jasmine.any(Object));
159147
});
160148
});
161149

@@ -188,7 +176,7 @@ describe('ProjectBuilder', () => {
188176

189177
builder.build({});
190178

191-
let gradle = path.join(rootDir, 'gradlew');
179+
let gradle = path.join(rootDir, 'tools', 'gradlew');
192180
if (isWindows()) {
193181
gradle += '.bat';
194182
}
@@ -250,7 +238,7 @@ describe('ProjectBuilder', () => {
250238
const gradleArgs = ['test', 'args', '-f'];
251239
builder.getArgs.and.returnValue(gradleArgs);
252240

253-
let gradle = path.join(rootDir, 'gradlew');
241+
let gradle = path.join(rootDir, 'tools', 'gradlew');
254242
if (isWindows()) {
255243
gradle += '.bat';
256244
}
Binary file not shown.

templates/project/gradle/wrapper/gradle-wrapper.properties

-7
This file was deleted.

templates/project/gradlew

-249
This file was deleted.

0 commit comments

Comments
 (0)