@xpertss/projen-types 0.0.13 → 0.0.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.jsii +2598 -746
- package/API.md +5752 -1419
- package/README.md +274 -35
- package/lib/actions/action-build-workflow.js +1 -1
- package/lib/actions/action-dogfood-workflow.js +1 -1
- package/lib/actions/action-sonar-workflow.js +1 -1
- package/lib/actions/github-action-project.d.ts +5 -0
- package/lib/actions/github-action-project.js +10 -3
- package/lib/cdk/app-runtime-scaffold.js +1 -1
- package/lib/cdk/cdk-app-project.js +1 -1
- package/lib/cdk/cdk-infra-project.js +1 -1
- package/lib/cdk/cdk-typescript-base.js +10 -3
- package/lib/cdk/components/ecr-ecs-constructs.js +1 -1
- package/lib/cdk/components/edge-networking-constructs.js +1 -1
- package/lib/cdk/database-component.js +1 -1
- package/lib/cdk/options.d.ts +5 -0
- package/lib/cdk/options.js +1 -1
- package/lib/common/ci-steps.d.ts +14 -0
- package/lib/common/ci-steps.js +30 -0
- package/lib/common/editorconfig.d.ts +12 -0
- package/lib/common/editorconfig.js +44 -0
- package/lib/common/projen-drift-check-workflow.js +5 -15
- package/lib/common/workflow-change-notice-workflow.js +1 -1
- package/lib/index.d.ts +4 -0
- package/lib/index.js +5 -1
- package/lib/java/components/cdk-deploy-hook.d.ts +2 -2
- package/lib/java/components/cdk-deploy-hook.js +2 -2
- package/lib/java/components/code-index-workflow.d.ts +2 -2
- package/lib/java/components/code-index-workflow.js +5 -3
- package/lib/java/components/docker-publish.d.ts +2 -2
- package/lib/java/components/docker-publish.js +2 -2
- package/lib/java/components/flyway-migration.d.ts +8 -3
- package/lib/java/components/flyway-migration.js +11 -5
- package/lib/java/components/github-packages-publish.d.ts +2 -2
- package/lib/java/components/github-packages-publish.js +2 -2
- package/lib/java/components/maven-central-publish.d.ts +2 -2
- package/lib/java/components/maven-central-publish.js +2 -2
- package/lib/java/components/maven-upgrade-report.d.ts +22 -0
- package/lib/java/components/maven-upgrade-report.js +61 -0
- package/lib/java/java-app-project.js +1 -1
- package/lib/java/java-library-project.d.ts +5 -1
- package/lib/java/java-library-project.js +14 -3
- package/lib/java/java-maven-base.d.ts +91 -8
- package/lib/java/java-maven-base.js +339 -24
- package/lib/java/java-service-project.d.ts +17 -5
- package/lib/java/java-service-project.js +20 -7
- package/lib/java/java-spring-boot-project.d.ts +30 -0
- package/lib/java/java-spring-boot-project.js +68 -0
- package/lib/java/java-versions.d.ts +40 -0
- package/lib/java/java-versions.js +106 -0
- package/lib/java/maven/maven-module.d.ts +47 -0
- package/lib/java/maven/maven-module.js +99 -0
- package/lib/java/maven/maven-pom.d.ts +143 -0
- package/lib/java/maven/maven-pom.js +337 -0
- package/lib/java/options.d.ts +128 -1
- package/lib/java/options.js +1 -1
- package/package.json +1 -1
- package/lib/common/upgrade-workflow.d.ts +0 -18
- package/lib/common/upgrade-workflow.js +0 -45
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.JavaSpringBootProject = void 0;
|
|
4
|
+
const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
|
|
5
|
+
const java_maven_base_1 = require("./java-maven-base");
|
|
6
|
+
const java_versions_1 = require("./java-versions");
|
|
7
|
+
const maven_pom_1 = require("./maven/maven-pom");
|
|
8
|
+
const REPACKAGE = { executions: [{ id: 'repackage', goals: ['repackage'] }] };
|
|
9
|
+
/**
|
|
10
|
+
* Spring Boot on Maven, single- or multi-module, with no Docker, Flyway or
|
|
11
|
+
* CDK - `JavaMavenProject` plus Spring Boot dependency management.
|
|
12
|
+
*
|
|
13
|
+
* - `spring-boot-dependencies` is imported as the first BOM, so starters and
|
|
14
|
+
* the libraries Boot manages (JUnit included) are added versionless.
|
|
15
|
+
* - `spring-boot-maven-plugin` is versioned in `<pluginManagement>`. A
|
|
16
|
+
* single-module project repackages its root jar into an executable one.
|
|
17
|
+
* In a multi-module project only modules added with
|
|
18
|
+
* `addSpringBootModule()` are repackaged; `addModule()` modules stay plain
|
|
19
|
+
* jars (shared libraries, clients, ...).
|
|
20
|
+
*
|
|
21
|
+
* `JavaServiceProject` builds on this and adds Docker publishing, Flyway,
|
|
22
|
+
* and a CDK deploy hook.
|
|
23
|
+
*/
|
|
24
|
+
class JavaSpringBootProject extends java_maven_base_1.JavaMavenProject {
|
|
25
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@xpertss/projen-types.JavaSpringBootProject", version: "0.0.14" };
|
|
26
|
+
/** The Spring Boot version (BOM and Maven plugin). */
|
|
27
|
+
springBootVersion;
|
|
28
|
+
constructor(options) {
|
|
29
|
+
super(options);
|
|
30
|
+
const version = options.springBootVersion ?? this.pinnedVersion(java_versions_1.SPRING_BOOT_BOM);
|
|
31
|
+
(0, maven_pom_1.assertExactVersion)(version, 'springBootVersion');
|
|
32
|
+
const major = parseInt(version.split('.')[0], 10);
|
|
33
|
+
const maxMajor = this.maxSpringBootMajor();
|
|
34
|
+
if (maxMajor !== undefined && major > maxMajor) {
|
|
35
|
+
throw new Error(`Spring Boot ${version} does not run on javaVersion ${this.javaVersion} (the newest Spring Boot line for it is ${maxMajor}.x). Use a ${maxMajor}.x springBootVersion, or a newer javaVersion.`);
|
|
36
|
+
}
|
|
37
|
+
this.springBootVersion = version;
|
|
38
|
+
// Boot's BOM manages JUnit, so the base type's junit-bom would only
|
|
39
|
+
// compete with it.
|
|
40
|
+
this.pom.removeBom(java_versions_1.JUNIT_BOM);
|
|
41
|
+
this.pom.addBom(`${java_versions_1.SPRING_BOOT_BOM}@${version}`);
|
|
42
|
+
this.pom.addManagedPlugin(`${java_versions_1.SPRING_BOOT_MAVEN_PLUGIN}@${version}`);
|
|
43
|
+
// A repackaged jar no longer exposes its classes at the top level, so
|
|
44
|
+
// failsafe tests against the compiled classes, as spring-boot-starter-
|
|
45
|
+
// parent configures it.
|
|
46
|
+
this.addPlugin(java_versions_1.MAVEN_FAILSAFE_PLUGIN, {
|
|
47
|
+
configuration: { classesDirectory: '${project.build.outputDirectory}' },
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Adds a module that is a Spring Boot application: like `addModule()`, plus
|
|
52
|
+
* `spring-boot-maven-plugin`'s `repackage`, which turns the module's jar
|
|
53
|
+
* into an executable one.
|
|
54
|
+
*/
|
|
55
|
+
addSpringBootModule(options) {
|
|
56
|
+
const module = this.addModule(options);
|
|
57
|
+
module.addPlugin(java_versions_1.SPRING_BOOT_MAVEN_PLUGIN, REPACKAGE);
|
|
58
|
+
return module;
|
|
59
|
+
}
|
|
60
|
+
preSynthesize() {
|
|
61
|
+
super.preSynthesize();
|
|
62
|
+
if (this.modules.length === 0 && !this.pom.hasPlugin(java_versions_1.SPRING_BOOT_MAVEN_PLUGIN)) {
|
|
63
|
+
this.addPlugin(java_versions_1.SPRING_BOOT_MAVEN_PLUGIN, REPACKAGE);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
exports.JavaSpringBootProject = JavaSpringBootProject;
|
|
68
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiamF2YS1zcHJpbmctYm9vdC1wcm9qZWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2phdmEvamF2YS1zcHJpbmctYm9vdC1wcm9qZWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSx1REFBcUQ7QUFDckQsbURBS3lCO0FBRXpCLGlEQUF1RDtBQUd2RCxNQUFNLFNBQVMsR0FBRyxFQUFFLFVBQVUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQztBQUU5RTs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUNILE1BQWEscUJBQXNCLFNBQVEsa0NBQWdCOztJQUN6RCxzREFBc0Q7SUFDdEMsaUJBQWlCLENBQVM7SUFFMUMsWUFBWSxPQUFxQztRQUMvQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFZixNQUFNLE9BQU8sR0FBRyxPQUFPLENBQUMsaUJBQWlCLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQywrQkFBZSxDQUFDLENBQUM7UUFDakYsSUFBQSw4QkFBa0IsRUFBQyxPQUFPLEVBQUUsbUJBQW1CLENBQUMsQ0FBQztRQUNqRCxNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNsRCxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztRQUMzQyxJQUFJLFFBQVEsS0FBSyxTQUFTLElBQUksS0FBSyxHQUFHLFFBQVEsRUFBRSxDQUFDO1lBQy9DLE1BQU0sSUFBSSxLQUFLLENBQ2IsZUFBZSxPQUFPLGdDQUFnQyxJQUFJLENBQUMsV0FBVywyQ0FBMkMsUUFBUSxjQUFjLFFBQVEsK0NBQStDLENBQy9MLENBQUM7UUFDSixDQUFDO1FBQ0QsSUFBSSxDQUFDLGlCQUFpQixHQUFHLE9BQU8sQ0FBQztRQUVqQyxvRUFBb0U7UUFDcEUsbUJBQW1CO1FBQ25CLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLHlCQUFTLENBQUMsQ0FBQztRQUM5QixJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLCtCQUFlLElBQUksT0FBTyxFQUFFLENBQUMsQ0FBQztRQUNqRCxJQUFJLENBQUMsR0FBRyxDQUFDLGdCQUFnQixDQUFDLEdBQUcsd0NBQXdCLElBQUksT0FBTyxFQUFFLENBQUMsQ0FBQztRQUNwRSxzRUFBc0U7UUFDdEUsdUVBQXVFO1FBQ3ZFLHdCQUF3QjtRQUN4QixJQUFJLENBQUMsU0FBUyxDQUFDLHFDQUFxQixFQUFFO1lBQ3BDLGFBQWEsRUFBRSxFQUFFLGdCQUFnQixFQUFFLGtDQUFrQyxFQUFFO1NBQ3hFLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksbUJBQW1CLENBQUMsT0FBMkI7UUFDcEQsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN2QyxNQUFNLENBQUMsU0FBUyxDQUFDLHdDQUF3QixFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBQ3RELE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFFTSxhQUFhO1FBQ2xCLEtBQUssQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUN0QixJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLHdDQUF3QixDQUFDLEVBQUUsQ0FBQztZQUMvRSxJQUFJLENBQUMsU0FBUyxDQUFDLHdDQUF3QixFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBQ3RELENBQUM7SUFDSCxDQUFDOztBQS9DSCxzREFnREMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBKYXZhTWF2ZW5Qcm9qZWN0IH0gZnJvbSAnLi9qYXZhLW1hdmVuLWJhc2UnO1xuaW1wb3J0IHtcbiAgSlVOSVRfQk9NLFxuICBNQVZFTl9GQUlMU0FGRV9QTFVHSU4sXG4gIFNQUklOR19CT09UX0JPTSxcbiAgU1BSSU5HX0JPT1RfTUFWRU5fUExVR0lOLFxufSBmcm9tICcuL2phdmEtdmVyc2lvbnMnO1xuaW1wb3J0IHsgTWF2ZW5Nb2R1bGUgfSBmcm9tICcuL21hdmVuL21hdmVuLW1vZHVsZSc7XG5pbXBvcnQgeyBhc3NlcnRFeGFjdFZlcnNpb24gfSBmcm9tICcuL21hdmVuL21hdmVuLXBvbSc7XG5pbXBvcnQgeyBKYXZhU3ByaW5nQm9vdFByb2plY3RPcHRpb25zLCBNYXZlbk1vZHVsZU9wdGlvbnMgfSBmcm9tICcuL29wdGlvbnMnO1xuXG5jb25zdCBSRVBBQ0tBR0UgPSB7IGV4ZWN1dGlvbnM6IFt7IGlkOiAncmVwYWNrYWdlJywgZ29hbHM6IFsncmVwYWNrYWdlJ10gfV0gfTtcblxuLyoqXG4gKiBTcHJpbmcgQm9vdCBvbiBNYXZlbiwgc2luZ2xlLSBvciBtdWx0aS1tb2R1bGUsIHdpdGggbm8gRG9ja2VyLCBGbHl3YXkgb3JcbiAqIENESyAtIGBKYXZhTWF2ZW5Qcm9qZWN0YCBwbHVzIFNwcmluZyBCb290IGRlcGVuZGVuY3kgbWFuYWdlbWVudC5cbiAqXG4gKiAtIGBzcHJpbmctYm9vdC1kZXBlbmRlbmNpZXNgIGlzIGltcG9ydGVkIGFzIHRoZSBmaXJzdCBCT00sIHNvIHN0YXJ0ZXJzIGFuZFxuICogICB0aGUgbGlicmFyaWVzIEJvb3QgbWFuYWdlcyAoSlVuaXQgaW5jbHVkZWQpIGFyZSBhZGRlZCB2ZXJzaW9ubGVzcy5cbiAqIC0gYHNwcmluZy1ib290LW1hdmVuLXBsdWdpbmAgaXMgdmVyc2lvbmVkIGluIGA8cGx1Z2luTWFuYWdlbWVudD5gLiBBXG4gKiAgIHNpbmdsZS1tb2R1bGUgcHJvamVjdCByZXBhY2thZ2VzIGl0cyByb290IGphciBpbnRvIGFuIGV4ZWN1dGFibGUgb25lLlxuICogICBJbiBhIG11bHRpLW1vZHVsZSBwcm9qZWN0IG9ubHkgbW9kdWxlcyBhZGRlZCB3aXRoXG4gKiAgIGBhZGRTcHJpbmdCb290TW9kdWxlKClgIGFyZSByZXBhY2thZ2VkOyBgYWRkTW9kdWxlKClgIG1vZHVsZXMgc3RheSBwbGFpblxuICogICBqYXJzIChzaGFyZWQgbGlicmFyaWVzLCBjbGllbnRzLCAuLi4pLlxuICpcbiAqIGBKYXZhU2VydmljZVByb2plY3RgIGJ1aWxkcyBvbiB0aGlzIGFuZCBhZGRzIERvY2tlciBwdWJsaXNoaW5nLCBGbHl3YXksXG4gKiBhbmQgYSBDREsgZGVwbG95IGhvb2suXG4gKi9cbmV4cG9ydCBjbGFzcyBKYXZhU3ByaW5nQm9vdFByb2plY3QgZXh0ZW5kcyBKYXZhTWF2ZW5Qcm9qZWN0IHtcbiAgLyoqIFRoZSBTcHJpbmcgQm9vdCB2ZXJzaW9uIChCT00gYW5kIE1hdmVuIHBsdWdpbikuICovXG4gIHB1YmxpYyByZWFkb25seSBzcHJpbmdCb290VmVyc2lvbjogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM6IEphdmFTcHJpbmdCb290UHJvamVjdE9wdGlvbnMpIHtcbiAgICBzdXBlcihvcHRpb25zKTtcblxuICAgIGNvbnN0IHZlcnNpb24gPSBvcHRpb25zLnNwcmluZ0Jvb3RWZXJzaW9uID8/IHRoaXMucGlubmVkVmVyc2lvbihTUFJJTkdfQk9PVF9CT00pO1xuICAgIGFzc2VydEV4YWN0VmVyc2lvbih2ZXJzaW9uLCAnc3ByaW5nQm9vdFZlcnNpb24nKTtcbiAgICBjb25zdCBtYWpvciA9IHBhcnNlSW50KHZlcnNpb24uc3BsaXQoJy4nKVswXSwgMTApO1xuICAgIGNvbnN0IG1heE1ham9yID0gdGhpcy5tYXhTcHJpbmdCb290TWFqb3IoKTtcbiAgICBpZiAobWF4TWFqb3IgIT09IHVuZGVmaW5lZCAmJiBtYWpvciA+IG1heE1ham9yKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBTcHJpbmcgQm9vdCAke3ZlcnNpb259IGRvZXMgbm90IHJ1biBvbiBqYXZhVmVyc2lvbiAke3RoaXMuamF2YVZlcnNpb259ICh0aGUgbmV3ZXN0IFNwcmluZyBCb290IGxpbmUgZm9yIGl0IGlzICR7bWF4TWFqb3J9LngpLiBVc2UgYSAke21heE1ham9yfS54IHNwcmluZ0Jvb3RWZXJzaW9uLCBvciBhIG5ld2VyIGphdmFWZXJzaW9uLmAsXG4gICAgICApO1xuICAgIH1cbiAgICB0aGlzLnNwcmluZ0Jvb3RWZXJzaW9uID0gdmVyc2lvbjtcblxuICAgIC8vIEJvb3QncyBCT00gbWFuYWdlcyBKVW5pdCwgc28gdGhlIGJhc2UgdHlwZSdzIGp1bml0LWJvbSB3b3VsZCBvbmx5XG4gICAgLy8gY29tcGV0ZSB3aXRoIGl0LlxuICAgIHRoaXMucG9tLnJlbW92ZUJvbShKVU5JVF9CT00pO1xuICAgIHRoaXMucG9tLmFkZEJvbShgJHtTUFJJTkdfQk9PVF9CT019QCR7dmVyc2lvbn1gKTtcbiAgICB0aGlzLnBvbS5hZGRNYW5hZ2VkUGx1Z2luKGAke1NQUklOR19CT09UX01BVkVOX1BMVUdJTn1AJHt2ZXJzaW9ufWApO1xuICAgIC8vIEEgcmVwYWNrYWdlZCBqYXIgbm8gbG9uZ2VyIGV4cG9zZXMgaXRzIGNsYXNzZXMgYXQgdGhlIHRvcCBsZXZlbCwgc29cbiAgICAvLyBmYWlsc2FmZSB0ZXN0cyBhZ2FpbnN0IHRoZSBjb21waWxlZCBjbGFzc2VzLCBhcyBzcHJpbmctYm9vdC1zdGFydGVyLVxuICAgIC8vIHBhcmVudCBjb25maWd1cmVzIGl0LlxuICAgIHRoaXMuYWRkUGx1Z2luKE1BVkVOX0ZBSUxTQUZFX1BMVUdJTiwge1xuICAgICAgY29uZmlndXJhdGlvbjogeyBjbGFzc2VzRGlyZWN0b3J5OiAnJHtwcm9qZWN0LmJ1aWxkLm91dHB1dERpcmVjdG9yeX0nIH0sXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBhIG1vZHVsZSB0aGF0IGlzIGEgU3ByaW5nIEJvb3QgYXBwbGljYXRpb246IGxpa2UgYGFkZE1vZHVsZSgpYCwgcGx1c1xuICAgKiBgc3ByaW5nLWJvb3QtbWF2ZW4tcGx1Z2luYCdzIGByZXBhY2thZ2VgLCB3aGljaCB0dXJucyB0aGUgbW9kdWxlJ3MgamFyXG4gICAqIGludG8gYW4gZXhlY3V0YWJsZSBvbmUuXG4gICAqL1xuICBwdWJsaWMgYWRkU3ByaW5nQm9vdE1vZHVsZShvcHRpb25zOiBNYXZlbk1vZHVsZU9wdGlvbnMpOiBNYXZlbk1vZHVsZSB7XG4gICAgY29uc3QgbW9kdWxlID0gdGhpcy5hZGRNb2R1bGUob3B0aW9ucyk7XG4gICAgbW9kdWxlLmFkZFBsdWdpbihTUFJJTkdfQk9PVF9NQVZFTl9QTFVHSU4sIFJFUEFDS0FHRSk7XG4gICAgcmV0dXJuIG1vZHVsZTtcbiAgfVxuXG4gIHB1YmxpYyBwcmVTeW50aGVzaXplKCk6IHZvaWQge1xuICAgIHN1cGVyLnByZVN5bnRoZXNpemUoKTtcbiAgICBpZiAodGhpcy5tb2R1bGVzLmxlbmd0aCA9PT0gMCAmJiAhdGhpcy5wb20uaGFzUGx1Z2luKFNQUklOR19CT09UX01BVkVOX1BMVUdJTikpIHtcbiAgICAgIHRoaXMuYWRkUGx1Z2luKFNQUklOR19CT09UX01BVkVOX1BMVUdJTiwgUkVQQUNLQUdFKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/** `groupId/artifactId` keys for the versions this package pins by default. */
|
|
2
|
+
export declare const MAVEN_COMPILER_PLUGIN = "org.apache.maven.plugins/maven-compiler-plugin";
|
|
3
|
+
export declare const MAVEN_SUREFIRE_PLUGIN = "org.apache.maven.plugins/maven-surefire-plugin";
|
|
4
|
+
export declare const MAVEN_FAILSAFE_PLUGIN = "org.apache.maven.plugins/maven-failsafe-plugin";
|
|
5
|
+
export declare const MAVEN_JAR_PLUGIN = "org.apache.maven.plugins/maven-jar-plugin";
|
|
6
|
+
export declare const MAVEN_ENFORCER_PLUGIN = "org.apache.maven.plugins/maven-enforcer-plugin";
|
|
7
|
+
export declare const MAVEN_JAVADOC_PLUGIN = "org.apache.maven.plugins/maven-javadoc-plugin";
|
|
8
|
+
export declare const MAVEN_SOURCE_PLUGIN = "org.apache.maven.plugins/maven-source-plugin";
|
|
9
|
+
export declare const JUNIT_BOM = "org.junit/junit-bom";
|
|
10
|
+
export declare const SPRING_BOOT_BOM = "org.springframework.boot/spring-boot-dependencies";
|
|
11
|
+
export declare const SPRING_BOOT_MAVEN_PLUGIN = "org.springframework.boot/spring-boot-maven-plugin";
|
|
12
|
+
export declare const FLYWAY_MAVEN_PLUGIN = "org.flywaydb/flyway-maven-plugin";
|
|
13
|
+
export declare const VERSIONS_MAVEN_PLUGIN = "org.codehaus.mojo/versions-maven-plugin";
|
|
14
|
+
/** The Java line used when a project sets no `javaVersion`. */
|
|
15
|
+
export declare const DEFAULT_JAVA_VERSION = "21";
|
|
16
|
+
/** The minimum Maven version the enforcer requires by default. */
|
|
17
|
+
export declare const DEFAULT_MIN_MAVEN_VERSION = "3.9";
|
|
18
|
+
/** Everything a generated build derives from its Java line. */
|
|
19
|
+
export interface JavaLineProfile {
|
|
20
|
+
/** Canonical line id, as written in `javaVersion` (`1.8`, `17`, ...). */
|
|
21
|
+
readonly line: string;
|
|
22
|
+
/** `<properties>` that set the compiler level. */
|
|
23
|
+
readonly compilerProperties: Record<string, string>;
|
|
24
|
+
/** The enforcer's `requireJavaVersion` range. */
|
|
25
|
+
readonly enforcerJavaRange: string;
|
|
26
|
+
/** `actions/setup-java`'s `java-version` input. */
|
|
27
|
+
readonly setupJavaVersion: string;
|
|
28
|
+
/** Default exact versions, keyed by `groupId/artifactId`. */
|
|
29
|
+
readonly versions: Record<string, string>;
|
|
30
|
+
/** Newest Spring Boot major that runs on this line, if it is capped. */
|
|
31
|
+
readonly maxSpringBootMajor?: number;
|
|
32
|
+
}
|
|
33
|
+
/** The Java lines `javaVersion` accepts, in ascending order. */
|
|
34
|
+
export declare function supportedJavaVersions(): string[];
|
|
35
|
+
/**
|
|
36
|
+
* Resolves a `javaVersion` option to its line profile, applying
|
|
37
|
+
* `versionOverrides` (`groupId/artifactId` -> exact version) on top of the
|
|
38
|
+
* line's defaults. Throws, listing the supported lines, on an unknown line.
|
|
39
|
+
*/
|
|
40
|
+
export declare function resolveJavaLine(javaVersion: string | undefined, versionOverrides?: Record<string, string>): JavaLineProfile;
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// Every Java-line-dependent value a generated Maven build uses lives in this
|
|
3
|
+
// file, grouped by Java line (F013 §4). Nothing else in `src/java` may
|
|
4
|
+
// hard-code a Java version or a default plugin/BOM version - adding a Java
|
|
5
|
+
// line is one new entry in JAVA_LINES. Versions are exact pins, verified
|
|
6
|
+
// against Maven Central (and, for plugins, run on the oldest JDK of the line
|
|
7
|
+
// they are listed for) when they were last bumped.
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.DEFAULT_MIN_MAVEN_VERSION = exports.DEFAULT_JAVA_VERSION = exports.VERSIONS_MAVEN_PLUGIN = exports.FLYWAY_MAVEN_PLUGIN = exports.SPRING_BOOT_MAVEN_PLUGIN = exports.SPRING_BOOT_BOM = exports.JUNIT_BOM = exports.MAVEN_SOURCE_PLUGIN = exports.MAVEN_JAVADOC_PLUGIN = exports.MAVEN_ENFORCER_PLUGIN = exports.MAVEN_JAR_PLUGIN = exports.MAVEN_FAILSAFE_PLUGIN = exports.MAVEN_SUREFIRE_PLUGIN = exports.MAVEN_COMPILER_PLUGIN = void 0;
|
|
10
|
+
exports.supportedJavaVersions = supportedJavaVersions;
|
|
11
|
+
exports.resolveJavaLine = resolveJavaLine;
|
|
12
|
+
/** `groupId/artifactId` keys for the versions this package pins by default. */
|
|
13
|
+
exports.MAVEN_COMPILER_PLUGIN = 'org.apache.maven.plugins/maven-compiler-plugin';
|
|
14
|
+
exports.MAVEN_SUREFIRE_PLUGIN = 'org.apache.maven.plugins/maven-surefire-plugin';
|
|
15
|
+
exports.MAVEN_FAILSAFE_PLUGIN = 'org.apache.maven.plugins/maven-failsafe-plugin';
|
|
16
|
+
exports.MAVEN_JAR_PLUGIN = 'org.apache.maven.plugins/maven-jar-plugin';
|
|
17
|
+
exports.MAVEN_ENFORCER_PLUGIN = 'org.apache.maven.plugins/maven-enforcer-plugin';
|
|
18
|
+
exports.MAVEN_JAVADOC_PLUGIN = 'org.apache.maven.plugins/maven-javadoc-plugin';
|
|
19
|
+
exports.MAVEN_SOURCE_PLUGIN = 'org.apache.maven.plugins/maven-source-plugin';
|
|
20
|
+
exports.JUNIT_BOM = 'org.junit/junit-bom';
|
|
21
|
+
exports.SPRING_BOOT_BOM = 'org.springframework.boot/spring-boot-dependencies';
|
|
22
|
+
exports.SPRING_BOOT_MAVEN_PLUGIN = 'org.springframework.boot/spring-boot-maven-plugin';
|
|
23
|
+
exports.FLYWAY_MAVEN_PLUGIN = 'org.flywaydb/flyway-maven-plugin';
|
|
24
|
+
exports.VERSIONS_MAVEN_PLUGIN = 'org.codehaus.mojo/versions-maven-plugin';
|
|
25
|
+
/** The Java line used when a project sets no `javaVersion`. */
|
|
26
|
+
exports.DEFAULT_JAVA_VERSION = '21';
|
|
27
|
+
/** The minimum Maven version the enforcer requires by default. */
|
|
28
|
+
exports.DEFAULT_MIN_MAVEN_VERSION = '3.9';
|
|
29
|
+
// Maven plugins that run on every supported JDK (all of them require only
|
|
30
|
+
// Java 8 at runtime), so they are shared by every line.
|
|
31
|
+
const SHARED_PLUGIN_VERSIONS = {
|
|
32
|
+
[exports.MAVEN_COMPILER_PLUGIN]: '3.16.0',
|
|
33
|
+
[exports.MAVEN_SUREFIRE_PLUGIN]: '3.6.0',
|
|
34
|
+
[exports.MAVEN_FAILSAFE_PLUGIN]: '3.6.0',
|
|
35
|
+
[exports.MAVEN_JAR_PLUGIN]: '3.5.1',
|
|
36
|
+
[exports.MAVEN_ENFORCER_PLUGIN]: '3.6.3',
|
|
37
|
+
[exports.MAVEN_JAVADOC_PLUGIN]: '3.12.0',
|
|
38
|
+
[exports.MAVEN_SOURCE_PLUGIN]: '3.4.0',
|
|
39
|
+
[exports.VERSIONS_MAVEN_PLUGIN]: '2.22.0',
|
|
40
|
+
};
|
|
41
|
+
// Libraries whose current major needs Java 17: JUnit 6, Spring Boot 3+/4,
|
|
42
|
+
// Flyway 10+. The Java 8 line stays on the last major that supports it.
|
|
43
|
+
const MODERN_VERSIONS = {
|
|
44
|
+
...SHARED_PLUGIN_VERSIONS,
|
|
45
|
+
[exports.JUNIT_BOM]: '6.1.3',
|
|
46
|
+
[exports.SPRING_BOOT_BOM]: '4.1.1',
|
|
47
|
+
[exports.FLYWAY_MAVEN_PLUGIN]: '13.9.0',
|
|
48
|
+
};
|
|
49
|
+
const JAVA_LINES = {
|
|
50
|
+
1.8: {
|
|
51
|
+
line: '1.8',
|
|
52
|
+
// javac 8 has no --release flag; source/target is the only option.
|
|
53
|
+
compilerProperties: {
|
|
54
|
+
'maven.compiler.source': '1.8',
|
|
55
|
+
'maven.compiler.target': '1.8',
|
|
56
|
+
},
|
|
57
|
+
enforcerJavaRange: '[1.8,)',
|
|
58
|
+
setupJavaVersion: '8',
|
|
59
|
+
// Spring Boot 3+ needs Java 17.
|
|
60
|
+
maxSpringBootMajor: 2,
|
|
61
|
+
versions: {
|
|
62
|
+
...SHARED_PLUGIN_VERSIONS,
|
|
63
|
+
[exports.JUNIT_BOM]: '5.14.4',
|
|
64
|
+
[exports.SPRING_BOOT_BOM]: '2.7.18',
|
|
65
|
+
[exports.FLYWAY_MAVEN_PLUGIN]: '9.22.3',
|
|
66
|
+
},
|
|
67
|
+
},
|
|
68
|
+
...modernLine('17'),
|
|
69
|
+
...modernLine('21'),
|
|
70
|
+
...modernLine('25'),
|
|
71
|
+
};
|
|
72
|
+
function modernLine(line) {
|
|
73
|
+
return {
|
|
74
|
+
[line]: {
|
|
75
|
+
line,
|
|
76
|
+
compilerProperties: { 'maven.compiler.release': line },
|
|
77
|
+
enforcerJavaRange: `[${line},)`,
|
|
78
|
+
setupJavaVersion: line,
|
|
79
|
+
versions: MODERN_VERSIONS,
|
|
80
|
+
},
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
const ALIASES = { 8: '1.8' };
|
|
84
|
+
/** The Java lines `javaVersion` accepts, in ascending order. */
|
|
85
|
+
function supportedJavaVersions() {
|
|
86
|
+
// Integer-like keys ('17') enumerate before '1.8', so sort explicitly.
|
|
87
|
+
return Object.keys(JAVA_LINES).sort((a, b) => parseFloat(a) - parseFloat(b));
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Resolves a `javaVersion` option to its line profile, applying
|
|
91
|
+
* `versionOverrides` (`groupId/artifactId` -> exact version) on top of the
|
|
92
|
+
* line's defaults. Throws, listing the supported lines, on an unknown line.
|
|
93
|
+
*/
|
|
94
|
+
function resolveJavaLine(javaVersion, versionOverrides = {}) {
|
|
95
|
+
const requested = javaVersion ?? exports.DEFAULT_JAVA_VERSION;
|
|
96
|
+
const key = ALIASES[requested] ?? requested;
|
|
97
|
+
const profile = JAVA_LINES[key];
|
|
98
|
+
if (!profile) {
|
|
99
|
+
throw new Error(`Unsupported javaVersion "${requested}". Supported: ${supportedJavaVersions().join(', ')}.`);
|
|
100
|
+
}
|
|
101
|
+
return {
|
|
102
|
+
...profile,
|
|
103
|
+
versions: { ...profile.versions, ...versionOverrides },
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiamF2YS12ZXJzaW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9qYXZhL2phdmEtdmVyc2lvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLDZFQUE2RTtBQUM3RSx1RUFBdUU7QUFDdkUsMkVBQTJFO0FBQzNFLHlFQUF5RTtBQUN6RSw2RUFBNkU7QUFDN0UsbURBQW1EOzs7QUFtR25ELHNEQUdDO0FBT0QsMENBZ0JDO0FBM0hELCtFQUErRTtBQUNsRSxRQUFBLHFCQUFxQixHQUFHLGdEQUFnRCxDQUFDO0FBQ3pFLFFBQUEscUJBQXFCLEdBQUcsZ0RBQWdELENBQUM7QUFDekUsUUFBQSxxQkFBcUIsR0FBRyxnREFBZ0QsQ0FBQztBQUN6RSxRQUFBLGdCQUFnQixHQUFHLDJDQUEyQyxDQUFDO0FBQy9ELFFBQUEscUJBQXFCLEdBQUcsZ0RBQWdELENBQUM7QUFDekUsUUFBQSxvQkFBb0IsR0FBRywrQ0FBK0MsQ0FBQztBQUN2RSxRQUFBLG1CQUFtQixHQUFHLDhDQUE4QyxDQUFDO0FBQ3JFLFFBQUEsU0FBUyxHQUFHLHFCQUFxQixDQUFDO0FBQ2xDLFFBQUEsZUFBZSxHQUFHLG1EQUFtRCxDQUFDO0FBQ3RFLFFBQUEsd0JBQXdCLEdBQUcsbURBQW1ELENBQUM7QUFDL0UsUUFBQSxtQkFBbUIsR0FBRyxrQ0FBa0MsQ0FBQztBQUN6RCxRQUFBLHFCQUFxQixHQUFHLHlDQUF5QyxDQUFDO0FBRS9FLCtEQUErRDtBQUNsRCxRQUFBLG9CQUFvQixHQUFHLElBQUksQ0FBQztBQUV6QyxrRUFBa0U7QUFDckQsUUFBQSx5QkFBeUIsR0FBRyxLQUFLLENBQUM7QUFFL0MsMEVBQTBFO0FBQzFFLHdEQUF3RDtBQUN4RCxNQUFNLHNCQUFzQixHQUEyQjtJQUNyRCxDQUFDLDZCQUFxQixDQUFDLEVBQUUsUUFBUTtJQUNqQyxDQUFDLDZCQUFxQixDQUFDLEVBQUUsT0FBTztJQUNoQyxDQUFDLDZCQUFxQixDQUFDLEVBQUUsT0FBTztJ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IE1hdmVuIGJ1aWxkIHVzZXMgbGl2ZXMgaW4gdGhpc1xuLy8gZmlsZSwgZ3JvdXBlZCBieSBKYXZhIGxpbmUgKEYwMTMgwqc0KS4gTm90aGluZyBlbHNlIGluIGBzcmMvamF2YWAgbWF5XG4vLyBoYXJkLWNvZGUgYSBKYXZhIHZlcnNpb24gb3IgYSBkZWZhdWx0IHBsdWdpbi9CT00gdmVyc2lvbiAtIGFkZGluZyBhIEphdmFcbi8vIGxpbmUgaXMgb25lIG5ldyBlbnRyeSBpbiBKQVZBX0xJTkVTLiBWZXJzaW9ucyBhcmUgZXhhY3QgcGlucywgdmVyaWZpZWRcbi8vIGFnYWluc3QgTWF2ZW4gQ2VudHJhbCAoYW5kLCBmb3IgcGx1Z2lucywgcnVuIG9uIHRoZSBvbGRlc3QgSkRLIG9mIHRoZSBsaW5lXG4vLyB0aGV5IGFyZSBsaXN0ZWQgZm9yKSB3aGVuIHRoZXkgd2VyZSBsYXN0IGJ1bXBlZC5cblxuLyoqIGBncm91cElkL2FydGlmYWN0SWRgIGtleXMgZm9yIHRoZSB2ZXJzaW9ucyB0aGlzIHBhY2thZ2UgcGlucyBieSBkZWZhdWx0LiAqL1xuZXhwb3J0IGNvbnN0IE1BVkVOX0NPTVBJTEVSX1BMVUdJTiA9ICdvcmcuYXBhY2hlLm1hdmVuLnBsdWdpbnMvbWF2ZW4tY29tcGlsZXItcGx1Z2luJztcbmV4cG9ydCBjb25zdCBNQVZFTl9TVVJFRklSRV9QTFVHSU4gPSAnb3JnLmFwYWNoZS5tYXZlbi5wbHVnaW5zL21hdmVuLXN1cmVmaXJlLXBsdWdpbic7XG5leHBvcnQgY29uc3QgTUFWRU5fRkFJTFNBRkVfUExVR0lOID0gJ29yZy5hcGFjaGUubWF2ZW4ucGx1Z2lucy9tYXZlbi1mYWlsc2FmZS1wbHVnaW4nO1xuZXhwb3J0IGNvbnN0IE1BVkVOX0pBUl9QTFVHSU4gPSAnb3JnLmFwYWNoZS5tYXZlbi5wbHVnaW5zL21hdmVuLWphci1wbHVnaW4nO1xuZXhwb3J0IGNvbnN0IE1BVkVOX0VORk9SQ0VSX1BMVUdJTiA9ICdvcmcuYXBhY2hlLm1hdmVuLnBsdWdpbnMvbWF2ZW4tZW5mb3JjZXItcGx1Z2luJztcbmV4cG9ydCBjb25zdCBNQVZFTl9KQVZBRE9DX1BMVUdJTiA9ICdvcmcuYXBhY2hlLm1hdmVuLnBsdWdpbnMvbWF2ZW4tamF2YWRvYy1wbHVnaW4nO1xuZXhwb3J0IGNvbnN0IE1BVkVOX1NPVVJDRV9QTFVHSU4gPSAnb3JnLmFwYWNoZS5tYXZlbi5wbHVnaW5zL21hdmVuLXNvdXJjZS1wbHVnaW4nO1xuZXhwb3J0IGNvbnN0IEpVTklUX0JPTSA9ICdvcmcuanVuaXQvanVuaXQtYm9tJztcbmV4cG9ydCBjb25zdCBTUFJJTkdfQk9PVF9CT00gPSAnb3JnLnNwcmluZ2ZyYW1ld29yay5ib290L3NwcmluZy1ib290LWRlcGVuZGVuY2llcyc7XG5leHBvcnQgY29uc3QgU1BSSU5HX0JPT1RfTUFWRU5fUExVR0lOID0gJ29yZy5zcHJpbmdmcmFtZXdvcmsuYm9vdC9zcHJpbmctYm9vdC1tYXZlbi1wbHVnaW4nO1xuZXhwb3J0IGNvbnN0IEZMWVdBWV9NQVZFTl9QTFVHSU4gPSAnb3JnLmZseXdheWRiL2ZseXdheS1tYXZlbi1wbHVnaW4nO1xuZXhwb3J0IGNvbnN0IFZFUlNJT05TX01BVkVOX1BMVUdJTiA9ICdvcmcuY29kZWhhdXMubW9qby92ZXJzaW9ucy1tYXZlbi1wbHVnaW4nO1xuXG4vKiogVGhlIEphdmEgbGluZSB1c2VkIHdoZW4gYSBwcm9qZWN0IHNldHMgbm8gYGphdmFWZXJzaW9uYC4gKi9cbmV4cG9ydCBjb25zdCBERUZBVUxUX0pBVkFfVkVSU0lPTiA9ICcyMSc7XG5cbi8qKiBUaGUgbWluaW11bSBNYXZlbiB2ZXJzaW9uIHRoZSBlbmZvcmNlciByZXF1aXJlcyBieSBkZWZhdWx0LiAqL1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfTUlOX01BVkVOX1ZFUlNJT04gPSAnMy45JztcblxuLy8gTWF2ZW4gcGx1Z2lucyB0aGF0IHJ1biBvbiBldmVyeSBzdXBwb3J0ZWQgSkRLIChhbGwgb2YgdGhlbSByZXF1aXJlIG9ubHlcbi8vIEphdmEgOCBhdCBydW50aW1lKSwgc28gdGhleSBhcmUgc2hhcmVkIGJ5IGV2ZXJ5IGxpbmUuXG5jb25zdCBTSEFSRURfUExVR0lOX1ZFUlNJT05TOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICBbTUFWRU5fQ09NUElMRVJfUExVR0lOXTogJzMuMTYuMCcsXG4gIFtNQVZFTl9TVVJFRklSRV9QTFVHSU5dOiAnMy42LjAnLFxuICBbTUFWRU5fRkFJTFNBRkVfUExVR0lOXTogJzMuNi4wJyxcbiAgW01BVkVOX0pBUl9QTFVHSU5dOiAnMy41LjEnLFxuICBbTUFWRU5fRU5GT1JDRVJfUExVR0lOXTogJzMuNi4zJyxcbiAgW01BVkVOX0pBVkFET0NfUExVR0lOXTogJzMuMTIuMCcsXG4gIFtNQVZFTl9TT1VSQ0VfUExVR0lOXTogJzMuNC4wJyxcbiAgW1ZFUlNJT05TX01BVkVOX1BMVUdJTl06ICcyLjIyLjAnLFxufTtcblxuLy8gTGlicmFyaWVzIHdob3NlIGN1cnJlbnQgbWFqb3IgbmVlZHMgSmF2YSAxNzogSlVuaXQgNiwgU3ByaW5nIEJvb3QgMysvNCxcbi8vIEZseXdheSAxMCsuIFRoZSBKYXZhIDggbGluZSBzdGF5cyBvbiB0aGUgbGFzdCBtYWpvciB0aGF0IHN1cHBvcnRzIGl0LlxuY29uc3QgTU9ERVJOX1ZFUlNJT05TOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAuLi5TSEFSRURfUExVR0lOX1ZFUlNJT05TLFxuICBbSlVOSVRfQk9NXTogJzYuMS4zJyxcbiAgW1NQUklOR19CT09UX0JPTV06ICc0LjEuMScsXG4gIFtGTFlXQVlfTUFWRU5fUExVR0lOXTogJzEzLjkuMCcsXG59O1xuXG4vKiogRXZlcnl0aGluZyBhIGdlbmVyYXRlZCBidWlsZCBkZXJpdmVzIGZyb20gaXRzIEphdmEgbGluZS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSmF2YUxpbmVQcm9maWxlIHtcbiAgLyoqIENhbm9uaWNhbCBsaW5lIGlkLCBhcyB3cml0dGVuIGluIGBqYXZhVmVyc2lvbmAgKGAxLjhgLCBgMTdgLCAuLi4pLiAqL1xuICByZWFkb25seSBsaW5lOiBzdHJpbmc7XG4gIC8qKiBgPHByb3BlcnRpZXM+YCB0aGF0IHNldCB0aGUgY29tcGlsZXIgbGV2ZWwuICovXG4gIHJlYWRvbmx5IGNvbXBpbGVyUHJvcGVydGllczogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcbiAgLyoqIFRoZSBlbmZvcmNlcidzIGByZXF1aXJlSmF2YVZlcnNpb25gIHJhbmdlLiAqL1xuICByZWFkb25seSBlbmZvcmNlckphdmFSYW5nZTogc3RyaW5nO1xuICAvKiogYGFjdGlvbnMvc2V0dXAtamF2YWAncyBgamF2YS12ZXJzaW9uYCBpbnB1dC4gKi9cbiAgcmVhZG9ubHkgc2V0dXBKYXZhVmVyc2lvbjogc3RyaW5nO1xuICAvKiogRGVmYXVsdCBleGFjdCB2ZXJzaW9ucywga2V5ZWQgYnkgYGdyb3VwSWQvYXJ0aWZhY3RJZGAuICovXG4gIHJlYWRvbmx5IHZlcnNpb25zOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xuICAvKiogTmV3ZXN0IFNwcmluZyBCb290IG1ham9yIHRoYXQgcnVucyBvbiB0aGlzIGxpbmUsIGlmIGl0IGlzIGNhcHBlZC4gKi9cbiAgcmVhZG9ubHkgbWF4U3ByaW5nQm9vdE1ham9yPzogbnVtYmVyO1xufVxuXG5jb25zdCBKQVZBX0xJTkVTOiBSZWNvcmQ8c3RyaW5nLCBKYXZhTGluZVByb2ZpbGU+ID0ge1xuICAxLjg6IHtcbiAgICBsaW5lOiAnMS44JyxcbiAgICAvLyBqYXZhYyA4IGhhcyBubyAtLXJlbGVhc2UgZmxhZzsgc291cmNlL3RhcmdldCBpcyB0aGUgb25seSBvcHRpb24uXG4gICAgY29tcGlsZXJQcm9wZXJ0aWVzOiB7XG4gICAgICAnbWF2ZW4uY29tcGlsZXIuc291cmNlJzogJzEuOCcsXG4gICAgICAnbWF2ZW4uY29tcGlsZXIudGFyZ2V0JzogJzEuOCcsXG4gICAgfSxcbiAgICBlbmZvcmNlckphdmFSYW5nZTogJ1sxLjgsKScsXG4gICAgc2V0dXBKYXZhVmVyc2lvbjogJzgnLFxuICAgIC8vIFNwcmluZyBCb290IDMrIG5lZWRzIEphdmEgMTcuXG4gICAgbWF4U3ByaW5nQm9vdE1ham9yOiAyLFxuICAgIHZlcnNpb25zOiB7XG4gICAgICAuLi5TSEFSRURfUExVR0lOX1ZFUlNJT05TLFxuICAgICAgW0pVTklUX0JPTV06ICc1LjE0LjQnLFxuICAgICAgW1NQUklOR19CT09UX0JPTV06ICcyLjcuMTgnLFxuICAgICAgW0ZMWVdBWV9NQVZFTl9QTFVHSU5dOiAnOS4yMi4zJyxcbiAgICB9LFxuICB9LFxuICAuLi5tb2Rlcm5MaW5lKCcxNycpLFxuICAuLi5tb2Rlcm5MaW5lKCcyMScpLFxuICAuLi5tb2Rlcm5MaW5lKCcyNScpLFxufTtcblxuZnVuY3Rpb24gbW9kZXJuTGluZShsaW5lOiBzdHJpbmcpOiBSZWNvcmQ8c3RyaW5nLCBKYXZhTGluZVByb2ZpbGU+IHtcbiAgcmV0dXJuIHtcbiAgICBbbGluZV06IHtcbiAgICAgIGxpbmUsXG4gICAgICBjb21waWxlclByb3BlcnRpZXM6IHsgJ21hdmVuLmNvbXBpbGVyLnJlbGVhc2UnOiBsaW5lIH0sXG4gICAgICBlbmZvcmNlckphdmFSYW5nZTogYFske2xpbmV9LClgLFxuICAgICAgc2V0dXBKYXZhVmVyc2lvbjogbGluZSxcbiAgICAgIHZlcnNpb25zOiBNT0RFUk5fVkVSU0lPTlMsXG4gICAgfSxcbiAgfTtcbn1cblxuY29uc3QgQUxJQVNFUzogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHsgODogJzEuOCcgfTtcblxuLyoqIFRoZSBKYXZhIGxpbmVzIGBqYXZhVmVyc2lvbmAgYWNjZXB0cywgaW4gYXNjZW5kaW5nIG9yZGVyLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHN1cHBvcnRlZEphdmFWZXJzaW9ucygpOiBzdHJpbmdbXSB7XG4gIC8vIEludGVnZXItbGlrZSBrZXlzICgnMTcnKSBlbnVtZXJhdGUgYmVmb3JlICcxLjgnLCBzbyBzb3J0IGV4cGxpY2l0bHkuXG4gIHJldHVybiBPYmplY3Qua2V5cyhKQVZBX0xJTkVTKS5zb3J0KChhLCBiKSA9PiBwYXJzZUZsb2F0KGEpIC0gcGFyc2VGbG9hdChiKSk7XG59XG5cbi8qKlxuICogUmVzb2x2ZXMgYSBgamF2YVZlcnNpb25gIG9wdGlvbiB0byBpdHMgbGluZSBwcm9maWxlLCBhcHBseWluZ1xuICogYHZlcnNpb25PdmVycmlkZXNgIChgZ3JvdXBJZC9hcnRpZmFjdElkYCAtPiBleGFjdCB2ZXJzaW9uKSBvbiB0b3Agb2YgdGhlXG4gKiBsaW5lJ3MgZGVmYXVsdHMuIFRocm93cywgbGlzdGluZyB0aGUgc3VwcG9ydGVkIGxpbmVzLCBvbiBhbiB1bmtub3duIGxpbmUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlSmF2YUxpbmUoXG4gIGphdmFWZXJzaW9uOiBzdHJpbmcgfCB1bmRlZmluZWQsXG4gIHZlcnNpb25PdmVycmlkZXM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7fSxcbik6IEphdmFMaW5lUHJvZmlsZSB7XG4gIGNvbnN0IHJlcXVlc3RlZCA9IGphdmFWZXJzaW9uID8/IERFRkFVTFRfSkFWQV9WRVJTSU9OO1xuICBjb25zdCBrZXkgPSBBTElBU0VTW3JlcXVlc3RlZF0gPz8gcmVxdWVzdGVkO1xuICBjb25zdCBwcm9maWxlID0gSkFWQV9MSU5FU1trZXldO1xuICBpZiAoIXByb2ZpbGUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBgVW5zdXBwb3J0ZWQgamF2YVZlcnNpb24gXCIke3JlcXVlc3RlZH1cIi4gU3VwcG9ydGVkOiAke3N1cHBvcnRlZEphdmFWZXJzaW9ucygpLmpvaW4oJywgJyl9LmAsXG4gICAgKTtcbiAgfVxuICByZXR1cm4ge1xuICAgIC4uLnByb2ZpbGUsXG4gICAgdmVyc2lvbnM6IHsgLi4ucHJvZmlsZS52ZXJzaW9ucywgLi4udmVyc2lvbk92ZXJyaWRlcyB9LFxuICB9O1xufVxuIl19
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { Component, Project, java } from 'projen';
|
|
2
|
+
import { MavenPom } from './maven-pom';
|
|
3
|
+
import { MavenModuleOptions } from '../options';
|
|
4
|
+
/**
|
|
5
|
+
* One module of a Maven reactor: a `<dir>/pom.xml` owned by the root
|
|
6
|
+
* project (not a projen subproject - there is still one `.projen/`, one
|
|
7
|
+
* `.gitignore` and one `tasks.json`). Created by `JavaMavenProject.addModule()`.
|
|
8
|
+
*
|
|
9
|
+
* The module pom holds `<parent>`, `artifactId`, `name`, `description` and
|
|
10
|
+
* versionless dependencies/plugins. Any version given to `addDependency`,
|
|
11
|
+
* `addTestDependency` or `addPlugin` is moved into the parent pom's
|
|
12
|
+
* `<dependencyManagement>`/`<pluginManagement>`, so every module that uses
|
|
13
|
+
* an artifact gets the same version.
|
|
14
|
+
*/
|
|
15
|
+
export declare class MavenModule extends Component {
|
|
16
|
+
/** Module directory, relative to the repo root. */
|
|
17
|
+
readonly dir: string;
|
|
18
|
+
readonly artifactId: string;
|
|
19
|
+
/** The module's own `pom.xml`. */
|
|
20
|
+
readonly pom: MavenPom;
|
|
21
|
+
private readonly parentPom;
|
|
22
|
+
private readonly groupId;
|
|
23
|
+
constructor(project: Project, parentPom: MavenPom, options: MavenModuleOptions);
|
|
24
|
+
/**
|
|
25
|
+
* Adds a compile-scope dependency. A version, if given, is pinned in the
|
|
26
|
+
* parent's `<dependencyManagement>` and the module entry stays versionless.
|
|
27
|
+
*
|
|
28
|
+
* @param spec `groupId/artifactId[@version]`
|
|
29
|
+
*/
|
|
30
|
+
addDependency(spec: string): void;
|
|
31
|
+
/** Adds a `test`-scoped dependency; versions are hoisted like `addDependency`. */
|
|
32
|
+
addTestDependency(spec: string): void;
|
|
33
|
+
/**
|
|
34
|
+
* Adds a build plugin. A version, if given, is pinned in the parent's
|
|
35
|
+
* `<pluginManagement>` and the module entry stays versionless.
|
|
36
|
+
*/
|
|
37
|
+
addPlugin(spec: string, options?: java.PluginOptions): void;
|
|
38
|
+
/**
|
|
39
|
+
* Depends on a sibling module. The dependency is versionless here; the
|
|
40
|
+
* parent manages every module at `${project.version}`.
|
|
41
|
+
*
|
|
42
|
+
* @param scope Maven scope (`test`, `provided`, ...)
|
|
43
|
+
* @default - compile scope
|
|
44
|
+
*/
|
|
45
|
+
addModuleDependency(module: MavenModule, scope?: string): void;
|
|
46
|
+
private hoistDependency;
|
|
47
|
+
}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MavenModule = void 0;
|
|
4
|
+
const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
|
|
5
|
+
const projen_1 = require("projen");
|
|
6
|
+
const maven_pom_1 = require("./maven-pom");
|
|
7
|
+
/**
|
|
8
|
+
* One module of a Maven reactor: a `<dir>/pom.xml` owned by the root
|
|
9
|
+
* project (not a projen subproject - there is still one `.projen/`, one
|
|
10
|
+
* `.gitignore` and one `tasks.json`). Created by `JavaMavenProject.addModule()`.
|
|
11
|
+
*
|
|
12
|
+
* The module pom holds `<parent>`, `artifactId`, `name`, `description` and
|
|
13
|
+
* versionless dependencies/plugins. Any version given to `addDependency`,
|
|
14
|
+
* `addTestDependency` or `addPlugin` is moved into the parent pom's
|
|
15
|
+
* `<dependencyManagement>`/`<pluginManagement>`, so every module that uses
|
|
16
|
+
* an artifact gets the same version.
|
|
17
|
+
*/
|
|
18
|
+
class MavenModule extends projen_1.Component {
|
|
19
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@xpertss/projen-types.MavenModule", version: "0.0.14" };
|
|
20
|
+
/** Module directory, relative to the repo root. */
|
|
21
|
+
dir;
|
|
22
|
+
artifactId;
|
|
23
|
+
/** The module's own `pom.xml`. */
|
|
24
|
+
pom;
|
|
25
|
+
parentPom;
|
|
26
|
+
groupId;
|
|
27
|
+
constructor(project, parentPom, options) {
|
|
28
|
+
super(project);
|
|
29
|
+
if (!parentPom.groupId || !parentPom.version) {
|
|
30
|
+
throw new Error('A module parent pom needs a groupId and version.');
|
|
31
|
+
}
|
|
32
|
+
this.dir = options.dir;
|
|
33
|
+
this.artifactId = options.artifactId;
|
|
34
|
+
this.parentPom = parentPom;
|
|
35
|
+
this.groupId = parentPom.groupId;
|
|
36
|
+
const depth = options.dir.split('/').length;
|
|
37
|
+
this.pom = new maven_pom_1.MavenPom(project, {
|
|
38
|
+
filePath: `${options.dir}/pom.xml`,
|
|
39
|
+
artifactId: options.artifactId,
|
|
40
|
+
packaging: options.packaging,
|
|
41
|
+
name: options.name ?? options.artifactId,
|
|
42
|
+
description: options.description,
|
|
43
|
+
parent: {
|
|
44
|
+
groupId: parentPom.groupId,
|
|
45
|
+
artifactId: parentPom.artifactId,
|
|
46
|
+
// Maven does not interpolate the <parent> block, so this is the
|
|
47
|
+
// literal parent version, not ${project.version}.
|
|
48
|
+
version: parentPom.version,
|
|
49
|
+
relativePath: `${'../'.repeat(depth)}pom.xml`,
|
|
50
|
+
},
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Adds a compile-scope dependency. A version, if given, is pinned in the
|
|
55
|
+
* parent's `<dependencyManagement>` and the module entry stays versionless.
|
|
56
|
+
*
|
|
57
|
+
* @param spec `groupId/artifactId[@version]`
|
|
58
|
+
*/
|
|
59
|
+
addDependency(spec) {
|
|
60
|
+
this.pom.addDependency(this.hoistDependency(spec));
|
|
61
|
+
}
|
|
62
|
+
/** Adds a `test`-scoped dependency; versions are hoisted like `addDependency`. */
|
|
63
|
+
addTestDependency(spec) {
|
|
64
|
+
this.pom.addTestDependency(this.hoistDependency(spec));
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Adds a build plugin. A version, if given, is pinned in the parent's
|
|
68
|
+
* `<pluginManagement>` and the module entry stays versionless.
|
|
69
|
+
*/
|
|
70
|
+
addPlugin(spec, options = {}) {
|
|
71
|
+
const c = (0, maven_pom_1.parseMavenSpec)(spec);
|
|
72
|
+
if (c.version) {
|
|
73
|
+
this.parentPom.addManagedPlugin(spec);
|
|
74
|
+
}
|
|
75
|
+
this.pom.addPlugin(`${c.groupId}/${c.artifactId}`, options);
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Depends on a sibling module. The dependency is versionless here; the
|
|
79
|
+
* parent manages every module at `${project.version}`.
|
|
80
|
+
*
|
|
81
|
+
* @param scope Maven scope (`test`, `provided`, ...)
|
|
82
|
+
* @default - compile scope
|
|
83
|
+
*/
|
|
84
|
+
addModuleDependency(module, scope) {
|
|
85
|
+
if (module === this) {
|
|
86
|
+
throw new Error(`Module "${this.artifactId}" cannot depend on itself.`);
|
|
87
|
+
}
|
|
88
|
+
this.pom.addDependency(`${this.groupId}/${module.artifactId}`, scope);
|
|
89
|
+
}
|
|
90
|
+
hoistDependency(spec) {
|
|
91
|
+
const c = (0, maven_pom_1.parseMavenSpec)(spec);
|
|
92
|
+
if (c.version) {
|
|
93
|
+
this.parentPom.addManagedDependency(spec);
|
|
94
|
+
}
|
|
95
|
+
return `${c.groupId}/${c.artifactId}`;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
exports.MavenModule = MavenModule;
|
|
99
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF2ZW4tbW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2phdmEvbWF2ZW4vbWF2ZW4tbW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxtQ0FBa0Q7QUFDbEQsMkNBQXVEO0FBR3ZEOzs7Ozs7Ozs7O0dBVUc7QUFDSCxNQUFhLFdBQVksU0FBUSxrQkFBUzs7SUFDeEMsbURBQW1EO0lBQ25DLEdBQUcsQ0FBUztJQUNaLFVBQVUsQ0FBUztJQUNuQyxrQ0FBa0M7SUFDbEIsR0FBRyxDQUFXO0lBRWIsU0FBUyxDQUFXO0lBQ3BCLE9BQU8sQ0FBUztJQUVqQyxZQUFZLE9BQWdCLEVBQUUsU0FBbUIsRUFBRSxPQUEyQjtRQUM1RSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDZixJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUM3QyxNQUFNLElBQUksS0FBSyxDQUFDLGtEQUFrRCxDQUFDLENBQUM7UUFDdEUsQ0FBQztRQUNELElBQUksQ0FBQyxHQUFHLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQztRQUN2QixJQUFJLENBQUMsVUFBVSxHQUFHLE9BQU8sQ0FBQyxVQUFVLENBQUM7UUFDckMsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7UUFDM0IsSUFBSSxDQUFDLE9BQU8sR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDO1FBRWpDLE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQztRQUM1QyxJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksb0JBQVEsQ0FBQyxPQUFPLEVBQUU7WUFDL0IsUUFBUSxFQUFFLEdBQUcsT0FBTyxDQUFDLEdBQUcsVUFBVTtZQUNsQyxVQUFVLEVBQUUsT0FBTyxDQUFDLFVBQVU7WUFDOUIsU0FBUyxFQUFFLE9BQU8sQ0FBQyxTQUFTO1lBQzVCLElBQUksRUFBRSxPQUFPLENBQUMsSUFBSSxJQUFJLE9BQU8sQ0FBQyxVQUFVO1lBQ3hDLFdBQVcsRUFBRSxPQUFPLENBQUMsV0FBVztZQUNoQyxNQUFNLEVBQUU7Z0JBQ04sT0FBTyxFQUFFLFNBQVMsQ0FBQyxPQUFPO2dCQUMxQixVQUFVLEVBQUUsU0FBUyxDQUFDLFVBQVU7Z0JBQ2hDLGdFQUFnRTtnQkFDaEUsa0RBQWtEO2dCQUNsRCxPQUFPLEVBQUUsU0FBUyxDQUFDLE9BQU87Z0JBQzFCLFlBQVksRUFBRSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLFNBQVM7YUFDOUM7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSSxhQUFhLENBQUMsSUFBWTtRQUMvQixJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDckQsQ0FBQztJQUVELGtGQUFrRjtJQUMzRSxpQkFBaUIsQ0FBQyxJQUFZO1FBQ25DLElBQUksQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ3pELENBQUM7SUFFRDs7O09BR0c7SUFDSSxTQUFTLENBQUMsSUFBWSxFQUFFLFVBQThCLEVBQUU7UUFDN0QsTUFBTSxDQUFDLEdBQUcsSUFBQSwwQkFBYyxFQUFDLElBQUksQ0FBQyxDQUFDO1FBQy9CLElBQUksQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN4QyxDQUFDO1FBQ0QsSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxJQUFJLENBQUMsQ0FBQyxVQUFVLEVBQUUsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUM5RCxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ksbUJBQW1CLENBQUMsTUFBbUIsRUFBRSxLQUFjO1FBQzVELElBQUksTUFBTSxLQUFLLElBQUksRUFBRSxDQUFDO1lBQ3BCLE1BQU0sSUFBSSxLQUFLLENBQUMsV0FBVyxJQUFJLENBQUMsVUFBVSw0QkFBNEIsQ0FBQyxDQUFDO1FBQzFFLENBQUM7UUFDRCxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxHQUFHLElBQUksQ0FBQyxPQUFPLElBQUksTUFBTSxDQUFDLFVBQVUsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3hFLENBQUM7SUFFTyxlQUFlLENBQUMsSUFBWTtRQUNsQyxNQUFNLENBQUMsR0FBRyxJQUFBLDBCQUFjLEVBQUMsSUFBSSxDQUFDLENBQUM7UUFDL0IsSUFBSSxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDZCxJQUFJLENBQUMsU0FBUyxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzVDLENBQUM7UUFDRCxPQUFPLEdBQUcsQ0FBQyxDQUFDLE9BQU8sSUFBSSxDQUFDLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDeEMsQ0FBQzs7QUFyRkgsa0NBc0ZDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBQcm9qZWN0LCBqYXZhIH0gZnJvbSAncHJvamVuJztcbmltcG9ydCB7IE1hdmVuUG9tLCBwYXJzZU1hdmVuU3BlYyB9IGZyb20gJy4vbWF2ZW4tcG9tJztcbmltcG9ydCB7IE1hdmVuTW9kdWxlT3B0aW9ucyB9IGZyb20gJy4uL29wdGlvbnMnO1xuXG4vKipcbiAqIE9uZSBtb2R1bGUgb2YgYSBNYXZlbiByZWFjdG9yOiBhIGA8ZGlyPi9wb20ueG1sYCBvd25lZCBieSB0aGUgcm9vdFxuICogcHJvamVjdCAobm90IGEgcHJvamVuIHN1YnByb2plY3QgLSB0aGVyZSBpcyBzdGlsbCBvbmUgYC5wcm9qZW4vYCwgb25lXG4gKiBgLmdpdGlnbm9yZWAgYW5kIG9uZSBgdGFza3MuanNvbmApLiBDcmVhdGVkIGJ5IGBKYXZhTWF2ZW5Qcm9qZWN0LmFkZE1vZHVsZSgpYC5cbiAqXG4gKiBUaGUgbW9kdWxlIHBvbSBob2xkcyBgPHBhcmVudD5gLCBgYXJ0aWZhY3RJZGAsIGBuYW1lYCwgYGRlc2NyaXB0aW9uYCBhbmRcbiAqIHZlcnNpb25sZXNzIGRlcGVuZGVuY2llcy9wbHVnaW5zLiBBbnkgdmVyc2lvbiBnaXZlbiB0byBgYWRkRGVwZW5kZW5jeWAsXG4gKiBgYWRkVGVzdERlcGVuZGVuY3lgIG9yIGBhZGRQbHVnaW5gIGlzIG1vdmVkIGludG8gdGhlIHBhcmVudCBwb20nc1xuICogYDxkZXBlbmRlbmN5TWFuYWdlbWVudD5gL2A8cGx1Z2luTWFuYWdlbWVudD5gLCBzbyBldmVyeSBtb2R1bGUgdGhhdCB1c2VzXG4gKiBhbiBhcnRpZmFjdCBnZXRzIHRoZSBzYW1lIHZlcnNpb24uXG4gKi9cbmV4cG9ydCBjbGFzcyBNYXZlbk1vZHVsZSBleHRlbmRzIENvbXBvbmVudCB7XG4gIC8qKiBNb2R1bGUgZGlyZWN0b3J5LCByZWxhdGl2ZSB0byB0aGUgcmVwbyByb290LiAqL1xuICBwdWJsaWMgcmVhZG9ubHkgZGlyOiBzdHJpbmc7XG4gIHB1YmxpYyByZWFkb25seSBhcnRpZmFjdElkOiBzdHJpbmc7XG4gIC8qKiBUaGUgbW9kdWxlJ3Mgb3duIGBwb20ueG1sYC4gKi9cbiAgcHVibGljIHJlYWRvbmx5IHBvbTogTWF2ZW5Qb207XG5cbiAgcHJpdmF0ZSByZWFkb25seSBwYXJlbnRQb206IE1hdmVuUG9tO1xuICBwcml2YXRlIHJlYWRvbmx5IGdyb3VwSWQ6IHN0cmluZztcblxuICBjb25zdHJ1Y3Rvcihwcm9qZWN0OiBQcm9qZWN0LCBwYXJlbnRQb206IE1hdmVuUG9tLCBvcHRpb25zOiBNYXZlbk1vZHVsZU9wdGlvbnMpIHtcbiAgICBzdXBlcihwcm9qZWN0KTtcbiAgICBpZiAoIXBhcmVudFBvbS5ncm91cElkIHx8ICFwYXJlbnRQb20udmVyc2lvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdBIG1vZHVsZSBwYXJlbnQgcG9tIG5lZWRzIGEgZ3JvdXBJZCBhbmQgdmVyc2lvbi4nKTtcbiAgICB9XG4gICAgdGhpcy5kaXIgPSBvcHRpb25zLmRpcjtcbiAgICB0aGlzLmFydGlmYWN0SWQgPSBvcHRpb25zLmFydGlmYWN0SWQ7XG4gICAgdGhpcy5wYXJlbnRQb20gPSBwYXJlbnRQb207XG4gICAgdGhpcy5ncm91cElkID0gcGFyZW50UG9tLmdyb3VwSWQ7XG5cbiAgICBjb25zdCBkZXB0aCA9IG9wdGlvbnMuZGlyLnNwbGl0KCcvJykubGVuZ3RoO1xuICAgIHRoaXMucG9tID0gbmV3IE1hdmVuUG9tKHByb2plY3QsIHtcbiAgICAgIGZpbGVQYXRoOiBgJHtvcHRpb25zLmRpcn0vcG9tLnhtbGAsXG4gICAgICBhcnRpZmFjdElkOiBvcHRpb25zLmFydGlmYWN0SWQsXG4gICAgICBwYWNrYWdpbmc6IG9wdGlvbnMucGFja2FnaW5nLFxuICAgICAgbmFtZTogb3B0aW9ucy5uYW1lID8/IG9wdGlvbnMuYXJ0aWZhY3RJZCxcbiAgICAgIGRlc2NyaXB0aW9uOiBvcHRpb25zLmRlc2NyaXB0aW9uLFxuICAgICAgcGFyZW50OiB7XG4gICAgICAgIGdyb3VwSWQ6IHBhcmVudFBvbS5ncm91cElkLFxuICAgICAgICBhcnRpZmFjdElkOiBwYXJlbnRQb20uYXJ0aWZhY3RJZCxcbiAgICAgICAgLy8gTWF2ZW4gZG9lcyBub3QgaW50ZXJwb2xhdGUgdGhlIDxwYXJlbnQ+IGJsb2NrLCBzbyB0aGlzIGlzIHRoZVxuICAgICAgICAvLyBsaXRlcmFsIHBhcmVudCB2ZXJzaW9uLCBub3QgJHtwcm9qZWN0LnZlcnNpb259LlxuICAgICAgICB2ZXJzaW9uOiBwYXJlbnRQb20udmVyc2lvbixcbiAgICAgICAgcmVsYXRpdmVQYXRoOiBgJHsnLi4vJy5yZXBlYXQoZGVwdGgpfXBvbS54bWxgLFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIGEgY29tcGlsZS1zY29wZSBkZXBlbmRlbmN5LiBBIHZlcnNpb24sIGlmIGdpdmVuLCBpcyBwaW5uZWQgaW4gdGhlXG4gICAqIHBhcmVudCdzIGA8ZGVwZW5kZW5jeU1hbmFnZW1lbnQ+YCBhbmQgdGhlIG1vZHVsZSBlbnRyeSBzdGF5cyB2ZXJzaW9ubGVzcy5cbiAgICpcbiAgICogQHBhcmFtIHNwZWMgYGdyb3VwSWQvYXJ0aWZhY3RJZFtAdmVyc2lvbl1gXG4gICAqL1xuICBwdWJsaWMgYWRkRGVwZW5kZW5jeShzcGVjOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLnBvbS5hZGREZXBlbmRlbmN5KHRoaXMuaG9pc3REZXBlbmRlbmN5KHNwZWMpKTtcbiAgfVxuXG4gIC8qKiBBZGRzIGEgYHRlc3RgLXNjb3BlZCBkZXBlbmRlbmN5OyB2ZXJzaW9ucyBhcmUgaG9pc3RlZCBsaWtlIGBhZGREZXBlbmRlbmN5YC4gKi9cbiAgcHVibGljIGFkZFRlc3REZXBlbmRlbmN5KHNwZWM6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMucG9tLmFkZFRlc3REZXBlbmRlbmN5KHRoaXMuaG9pc3REZXBlbmRlbmN5KHNwZWMpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIGEgYnVpbGQgcGx1Z2luLiBBIHZlcnNpb24sIGlmIGdpdmVuLCBpcyBwaW5uZWQgaW4gdGhlIHBhcmVudCdzXG4gICAqIGA8cGx1Z2luTWFuYWdlbWVudD5gIGFuZCB0aGUgbW9kdWxlIGVudHJ5IHN0YXlzIHZlcnNpb25sZXNzLlxuICAgKi9cbiAgcHVibGljIGFkZFBsdWdpbihzcGVjOiBzdHJpbmcsIG9wdGlvbnM6IGphdmEuUGx1Z2luT3B0aW9ucyA9IHt9KTogdm9pZCB7XG4gICAgY29uc3QgYyA9IHBhcnNlTWF2ZW5TcGVjKHNwZWMpO1xuICAgIGlmIChjLnZlcnNpb24pIHtcbiAgICAgIHRoaXMucGFyZW50UG9tLmFkZE1hbmFnZWRQbHVnaW4oc3BlYyk7XG4gICAgfVxuICAgIHRoaXMucG9tLmFkZFBsdWdpbihgJHtjLmdyb3VwSWR9LyR7Yy5hcnRpZmFjdElkfWAsIG9wdGlvbnMpO1xuICB9XG5cbiAgLyoqXG4gICAqIERlcGVuZHMgb24gYSBzaWJsaW5nIG1vZHVsZS4gVGhlIGRlcGVuZGVuY3kgaXMgdmVyc2lvbmxlc3MgaGVyZTsgdGhlXG4gICAqIHBhcmVudCBtYW5hZ2VzIGV2ZXJ5IG1vZHVsZSBhdCBgJHtwcm9qZWN0LnZlcnNpb259YC5cbiAgICpcbiAgICogQHBhcmFtIHNjb3BlIE1hdmVuIHNjb3BlIChgdGVzdGAsIGBwcm92aWRlZGAsIC4uLilcbiAgICogQGRlZmF1bHQgLSBjb21waWxlIHNjb3BlXG4gICAqL1xuICBwdWJsaWMgYWRkTW9kdWxlRGVwZW5kZW5jeShtb2R1bGU6IE1hdmVuTW9kdWxlLCBzY29wZT86IHN0cmluZyk6IHZvaWQge1xuICAgIGlmIChtb2R1bGUgPT09IHRoaXMpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgTW9kdWxlIFwiJHt0aGlzLmFydGlmYWN0SWR9XCIgY2Fubm90IGRlcGVuZCBvbiBpdHNlbGYuYCk7XG4gICAgfVxuICAgIHRoaXMucG9tLmFkZERlcGVuZGVuY3koYCR7dGhpcy5ncm91cElkfS8ke21vZHVsZS5hcnRpZmFjdElkfWAsIHNjb3BlKTtcbiAgfVxuXG4gIHByaXZhdGUgaG9pc3REZXBlbmRlbmN5KHNwZWM6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3QgYyA9IHBhcnNlTWF2ZW5TcGVjKHNwZWMpO1xuICAgIGlmIChjLnZlcnNpb24pIHtcbiAgICAgIHRoaXMucGFyZW50UG9tLmFkZE1hbmFnZWREZXBlbmRlbmN5KHNwZWMpO1xuICAgIH1cbiAgICByZXR1cm4gYCR7Yy5ncm91cElkfS8ke2MuYXJ0aWZhY3RJZH1gO1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
import { Component, Project, java } from 'projen';
|
|
2
|
+
/** Parsed `groupId/artifactId[@version]` spec. */
|
|
3
|
+
export interface MavenCoordinates {
|
|
4
|
+
readonly groupId: string;
|
|
5
|
+
readonly artifactId: string;
|
|
6
|
+
readonly version?: string;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Parses `groupId/artifactId[@version]`. The version, when present, must be
|
|
10
|
+
* one exact version - a range (`[1,2)`), a semver range (`^1`, `~1.2`), or a
|
|
11
|
+
* wildcard throws, because a range resolves differently over time and makes
|
|
12
|
+
* the build non-reproducible.
|
|
13
|
+
*/
|
|
14
|
+
export declare function parseMavenSpec(spec: string): MavenCoordinates;
|
|
15
|
+
/** Throws unless `version` is one exact version (no range, no wildcard). */
|
|
16
|
+
export declare function assertExactVersion(version: string, context: string): void;
|
|
17
|
+
/** Options for `MavenPom`. */
|
|
18
|
+
export interface MavenPomOptions {
|
|
19
|
+
/**
|
|
20
|
+
* Path of the pom, relative to the project root.
|
|
21
|
+
* @default "pom.xml"
|
|
22
|
+
*/
|
|
23
|
+
readonly filePath?: string;
|
|
24
|
+
/**
|
|
25
|
+
* `groupId`. Omit in a module pom to inherit it from `<parent>`.
|
|
26
|
+
* @default - inherited from the parent
|
|
27
|
+
*/
|
|
28
|
+
readonly groupId?: string;
|
|
29
|
+
readonly artifactId: string;
|
|
30
|
+
/**
|
|
31
|
+
* `version`. Omit in a module pom to inherit it from `<parent>`.
|
|
32
|
+
* @default - inherited from the parent
|
|
33
|
+
*/
|
|
34
|
+
readonly version?: string;
|
|
35
|
+
/** @default "jar" */
|
|
36
|
+
readonly packaging?: string;
|
|
37
|
+
/** @default - none */
|
|
38
|
+
readonly name?: string;
|
|
39
|
+
/** @default - none */
|
|
40
|
+
readonly description?: string;
|
|
41
|
+
/** @default - none */
|
|
42
|
+
readonly url?: string;
|
|
43
|
+
/** @default - no parent */
|
|
44
|
+
readonly parent?: java.ParentPom;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* A `pom.xml` written by this package (rather than projen's `java.Pom`).
|
|
48
|
+
*
|
|
49
|
+
* Supports `<modules>`, `<dependencyManagement>` (including BOM imports),
|
|
50
|
+
* `<pluginManagement>`, and versionless dependencies/plugins - what a Maven
|
|
51
|
+
* reactor needs and `java.Pom` cannot express. Every version it writes is
|
|
52
|
+
* exact; a spec carrying a range throws. Plugin executions render one
|
|
53
|
+
* `<goals>` element per execution (projen's `java.Pom` repeats `<goals>`,
|
|
54
|
+
* which Maven 3.9 rejects as non-parseable).
|
|
55
|
+
*
|
|
56
|
+
* Adding the same `groupId/artifactId` twice merges: a later version
|
|
57
|
+
* replaces an earlier one only if the earlier had none (two different
|
|
58
|
+
* versions throw), and plugin options are merged - `configuration` shallowly,
|
|
59
|
+
* `executions` and `dependencies` appended.
|
|
60
|
+
*/
|
|
61
|
+
export declare class MavenPom extends Component {
|
|
62
|
+
/** Path of the pom, relative to the project root. */
|
|
63
|
+
readonly filePath: string;
|
|
64
|
+
readonly groupId?: string;
|
|
65
|
+
readonly artifactId: string;
|
|
66
|
+
readonly version?: string;
|
|
67
|
+
readonly name?: string;
|
|
68
|
+
readonly description?: string;
|
|
69
|
+
readonly url?: string;
|
|
70
|
+
readonly parent?: java.ParentPom;
|
|
71
|
+
/** Maven packaging (`jar`, `pom`, ...). */
|
|
72
|
+
packaging: string;
|
|
73
|
+
/**
|
|
74
|
+
* When true, the versions of `<plugins>` entries are written into
|
|
75
|
+
* `<pluginManagement>` and the `<plugins>` entries stay versionless - the
|
|
76
|
+
* shape a reactor parent wants, so modules can redeclare a plugin without
|
|
77
|
+
* repeating its version.
|
|
78
|
+
*/
|
|
79
|
+
managePluginVersions: boolean;
|
|
80
|
+
private readonly properties;
|
|
81
|
+
private readonly modules;
|
|
82
|
+
private readonly boms;
|
|
83
|
+
private readonly managedDeps;
|
|
84
|
+
private readonly deps;
|
|
85
|
+
private readonly managedPlugins;
|
|
86
|
+
private readonly plugins;
|
|
87
|
+
private readonly repositories;
|
|
88
|
+
private readonly pluginRepositories;
|
|
89
|
+
constructor(project: Project, options: MavenPomOptions);
|
|
90
|
+
/** Sets a `<properties>` entry. */
|
|
91
|
+
addProperty(name: string, value: string): void;
|
|
92
|
+
/** Adds a `<module>` (a path relative to this pom's directory). */
|
|
93
|
+
addModule(path: string): void;
|
|
94
|
+
/**
|
|
95
|
+
* Imports a BOM into `<dependencyManagement>` (`type=pom`,
|
|
96
|
+
* `scope=import`). BOMs are written in the order added, before every other
|
|
97
|
+
* managed dependency.
|
|
98
|
+
*
|
|
99
|
+
* @param spec `groupId/artifactId@version` - the version is required
|
|
100
|
+
*/
|
|
101
|
+
addBom(spec: string): void;
|
|
102
|
+
/** Removes a BOM import added by `addBom`, if present. */
|
|
103
|
+
removeBom(coordinates: string): void;
|
|
104
|
+
/**
|
|
105
|
+
* Pins a version in `<dependencyManagement>` without adding the
|
|
106
|
+
* dependency itself.
|
|
107
|
+
*
|
|
108
|
+
* @param spec `groupId/artifactId@version` - the version is required
|
|
109
|
+
*/
|
|
110
|
+
addManagedDependency(spec: string): void;
|
|
111
|
+
/**
|
|
112
|
+
* Adds a dependency (compile scope unless `scope` is given).
|
|
113
|
+
*
|
|
114
|
+
* @param spec `groupId/artifactId[@version]` - omit the version when a BOM
|
|
115
|
+
* or the parent's `<dependencyManagement>` manages it
|
|
116
|
+
* @param scope Maven scope (`test`, `provided`, `runtime`, ...)
|
|
117
|
+
*/
|
|
118
|
+
addDependency(spec: string, scope?: string): void;
|
|
119
|
+
/** Adds a `test`-scoped dependency. */
|
|
120
|
+
addTestDependency(spec: string): void;
|
|
121
|
+
/**
|
|
122
|
+
* Adds a build plugin to `<build><plugins>`.
|
|
123
|
+
*
|
|
124
|
+
* @param spec `groupId/artifactId[@version]` - omit the version when
|
|
125
|
+
* `<pluginManagement>` (here or in the parent) manages it
|
|
126
|
+
*/
|
|
127
|
+
addPlugin(spec: string, options?: java.PluginOptions): void;
|
|
128
|
+
/**
|
|
129
|
+
* Adds a plugin to `<build><pluginManagement>` only: it pins the version
|
|
130
|
+
* (and optional default configuration) for this pom and its modules
|
|
131
|
+
* without running the plugin here.
|
|
132
|
+
*/
|
|
133
|
+
addManagedPlugin(spec: string, options?: java.PluginOptions): void;
|
|
134
|
+
/** True if a plugin with these `groupId/artifactId` coordinates is in `<plugins>`. */
|
|
135
|
+
hasPlugin(coordinates: string): boolean;
|
|
136
|
+
/** Adds a `<repository>`. */
|
|
137
|
+
addRepository(repository: java.MavenRepository): void;
|
|
138
|
+
/** Adds a `<pluginRepository>`. */
|
|
139
|
+
addPluginRepository(repository: java.MavenRepository): void;
|
|
140
|
+
private mergeDependency;
|
|
141
|
+
private mergePlugin;
|
|
142
|
+
private synthPom;
|
|
143
|
+
}
|