@xpertss/projen-types 0.0.0

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.
Files changed (58) hide show
  1. package/.jsii +1742 -0
  2. package/API.md +11718 -0
  3. package/LICENSE +202 -0
  4. package/README.md +263 -0
  5. package/lib/cdk/app-runtime-scaffold.d.ts +8 -0
  6. package/lib/cdk/app-runtime-scaffold.js +31 -0
  7. package/lib/cdk/cdk-app-project.d.ts +10 -0
  8. package/lib/cdk/cdk-app-project.js +35 -0
  9. package/lib/cdk/cdk-infra-project.d.ts +10 -0
  10. package/lib/cdk/cdk-infra-project.js +26 -0
  11. package/lib/cdk/cdk-typescript-base.d.ts +16 -0
  12. package/lib/cdk/cdk-typescript-base.js +53 -0
  13. package/lib/cdk/components/ecr-ecs-constructs.d.ts +12 -0
  14. package/lib/cdk/components/ecr-ecs-constructs.js +46 -0
  15. package/lib/cdk/components/edge-networking-constructs.d.ts +10 -0
  16. package/lib/cdk/components/edge-networking-constructs.js +66 -0
  17. package/lib/cdk/database-component.d.ts +11 -0
  18. package/lib/cdk/database-component.js +44 -0
  19. package/lib/cdk/options.d.ts +39 -0
  20. package/lib/cdk/options.js +3 -0
  21. package/lib/common/constants.d.ts +7 -0
  22. package/lib/common/constants.js +11 -0
  23. package/lib/common/drift-check.d.ts +8 -0
  24. package/lib/common/drift-check.js +18 -0
  25. package/lib/common/environment-options.d.ts +19 -0
  26. package/lib/common/environment-options.js +7 -0
  27. package/lib/common/manual-deploy-workflow.d.ts +34 -0
  28. package/lib/common/manual-deploy-workflow.js +78 -0
  29. package/lib/common/upgrade-workflow.d.ts +18 -0
  30. package/lib/common/upgrade-workflow.js +39 -0
  31. package/lib/index.d.ts +20 -0
  32. package/lib/index.js +37 -0
  33. package/lib/java/components/cdk-deploy-hook.d.ts +13 -0
  34. package/lib/java/components/cdk-deploy-hook.js +45 -0
  35. package/lib/java/components/code-index-workflow.d.ts +6 -0
  36. package/lib/java/components/code-index-workflow.js +35 -0
  37. package/lib/java/components/docker-publish.d.ts +10 -0
  38. package/lib/java/components/docker-publish.js +41 -0
  39. package/lib/java/components/flyway-migration.d.ts +6 -0
  40. package/lib/java/components/flyway-migration.js +19 -0
  41. package/lib/java/components/github-packages-publish.d.ts +10 -0
  42. package/lib/java/components/github-packages-publish.js +34 -0
  43. package/lib/java/components/maven-central-publish.d.ts +13 -0
  44. package/lib/java/components/maven-central-publish.js +44 -0
  45. package/lib/java/java-app-project.d.ts +9 -0
  46. package/lib/java/java-app-project.js +21 -0
  47. package/lib/java/java-library-project.d.ts +6 -0
  48. package/lib/java/java-library-project.js +20 -0
  49. package/lib/java/java-maven-base.d.ts +15 -0
  50. package/lib/java/java-maven-base.js +56 -0
  51. package/lib/java/java-service-project.d.ts +9 -0
  52. package/lib/java/java-service-project.js +29 -0
  53. package/lib/java/options.d.ts +43 -0
  54. package/lib/java/options.js +3 -0
  55. package/package.json +139 -0
  56. package/spec/npm-publishing-setup.md +150 -0
  57. package/spec/projen-cdk-spec.md +80 -0
  58. package/spec/projen-java-spec.md +96 -0
package/lib/index.d.ts ADDED
@@ -0,0 +1,20 @@
1
+ export * from './common/environment-options';
2
+ export * from './cdk/options';
3
+ export * from './cdk/cdk-typescript-base';
4
+ export * from './cdk/cdk-infra-project';
5
+ export * from './cdk/cdk-app-project';
6
+ export * from './cdk/components/ecr-ecs-constructs';
7
+ export * from './cdk/components/edge-networking-constructs';
8
+ export * from './cdk/app-runtime-scaffold';
9
+ export * from './cdk/database-component';
10
+ export * from './java/options';
11
+ export * from './java/java-maven-base';
12
+ export * from './java/java-library-project';
13
+ export * from './java/java-service-project';
14
+ export * from './java/java-app-project';
15
+ export * from './java/components/maven-central-publish';
16
+ export * from './java/components/docker-publish';
17
+ export * from './java/components/github-packages-publish';
18
+ export * from './java/components/flyway-migration';
19
+ export * from './java/components/cdk-deploy-hook';
20
+ export * from './java/components/code-index-workflow';
package/lib/index.js ADDED
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./common/environment-options"), exports);
18
+ __exportStar(require("./cdk/options"), exports);
19
+ __exportStar(require("./cdk/cdk-typescript-base"), exports);
20
+ __exportStar(require("./cdk/cdk-infra-project"), exports);
21
+ __exportStar(require("./cdk/cdk-app-project"), exports);
22
+ __exportStar(require("./cdk/components/ecr-ecs-constructs"), exports);
23
+ __exportStar(require("./cdk/components/edge-networking-constructs"), exports);
24
+ __exportStar(require("./cdk/app-runtime-scaffold"), exports);
25
+ __exportStar(require("./cdk/database-component"), exports);
26
+ __exportStar(require("./java/options"), exports);
27
+ __exportStar(require("./java/java-maven-base"), exports);
28
+ __exportStar(require("./java/java-library-project"), exports);
29
+ __exportStar(require("./java/java-service-project"), exports);
30
+ __exportStar(require("./java/java-app-project"), exports);
31
+ __exportStar(require("./java/components/maven-central-publish"), exports);
32
+ __exportStar(require("./java/components/docker-publish"), exports);
33
+ __exportStar(require("./java/components/github-packages-publish"), exports);
34
+ __exportStar(require("./java/components/flyway-migration"), exports);
35
+ __exportStar(require("./java/components/cdk-deploy-hook"), exports);
36
+ __exportStar(require("./java/components/code-index-workflow"), exports);
37
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLCtEQUE2QztBQUU3QyxnREFBOEI7QUFDOUIsNERBQTBDO0FBQzFDLDBEQUF3QztBQUN4Qyx3REFBc0M7QUFDdEMsc0VBQW9EO0FBQ3BELDhFQUE0RDtBQUM1RCw2REFBMkM7QUFDM0MsMkRBQXlDO0FBRXpDLGlEQUErQjtBQUMvQix5REFBdUM7QUFDdkMsOERBQTRDO0FBQzVDLDhEQUE0QztBQUM1QywwREFBd0M7QUFDeEMsMEVBQXdEO0FBQ3hELG1FQUFpRDtBQUNqRCw0RUFBMEQ7QUFDMUQscUVBQW1EO0FBQ25ELG9FQUFrRDtBQUNsRCx3RUFBc0QiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2NvbW1vbi9lbnZpcm9ubWVudC1vcHRpb25zJztcblxuZXhwb3J0ICogZnJvbSAnLi9jZGsvb3B0aW9ucyc7XG5leHBvcnQgKiBmcm9tICcuL2Nkay9jZGstdHlwZXNjcmlwdC1iYXNlJztcbmV4cG9ydCAqIGZyb20gJy4vY2RrL2Nkay1pbmZyYS1wcm9qZWN0JztcbmV4cG9ydCAqIGZyb20gJy4vY2RrL2Nkay1hcHAtcHJvamVjdCc7XG5leHBvcnQgKiBmcm9tICcuL2Nkay9jb21wb25lbnRzL2Vjci1lY3MtY29uc3RydWN0cyc7XG5leHBvcnQgKiBmcm9tICcuL2Nkay9jb21wb25lbnRzL2VkZ2UtbmV0d29ya2luZy1jb25zdHJ1Y3RzJztcbmV4cG9ydCAqIGZyb20gJy4vY2RrL2FwcC1ydW50aW1lLXNjYWZmb2xkJztcbmV4cG9ydCAqIGZyb20gJy4vY2RrL2RhdGFiYXNlLWNvbXBvbmVudCc7XG5cbmV4cG9ydCAqIGZyb20gJy4vamF2YS9vcHRpb25zJztcbmV4cG9ydCAqIGZyb20gJy4vamF2YS9qYXZhLW1hdmVuLWJhc2UnO1xuZXhwb3J0ICogZnJvbSAnLi9qYXZhL2phdmEtbGlicmFyeS1wcm9qZWN0JztcbmV4cG9ydCAqIGZyb20gJy4vamF2YS9qYXZhLXNlcnZpY2UtcHJvamVjdCc7XG5leHBvcnQgKiBmcm9tICcuL2phdmEvamF2YS1hcHAtcHJvamVjdCc7XG5leHBvcnQgKiBmcm9tICcuL2phdmEvY29tcG9uZW50cy9tYXZlbi1jZW50cmFsLXB1Ymxpc2gnO1xuZXhwb3J0ICogZnJvbSAnLi9qYXZhL2NvbXBvbmVudHMvZG9ja2VyLXB1Ymxpc2gnO1xuZXhwb3J0ICogZnJvbSAnLi9qYXZhL2NvbXBvbmVudHMvZ2l0aHViLXBhY2thZ2VzLXB1Ymxpc2gnO1xuZXhwb3J0ICogZnJvbSAnLi9qYXZhL2NvbXBvbmVudHMvZmx5d2F5LW1pZ3JhdGlvbic7XG5leHBvcnQgKiBmcm9tICcuL2phdmEvY29tcG9uZW50cy9jZGstZGVwbG95LWhvb2snO1xuZXhwb3J0ICogZnJvbSAnLi9qYXZhL2NvbXBvbmVudHMvY29kZS1pbmRleC13b3JrZmxvdyc7XG5cbiJdfQ==
@@ -0,0 +1,13 @@
1
+ import { Component } from 'projen';
2
+ import type { java } from 'projen';
3
+ import { EnvironmentOptions } from '../../common/environment-options';
4
+ import { CdkDeployHookOptions } from '../options';
5
+ /**
6
+ * Manual-dispatch workflow that invokes a downstream CDK deploy in a
7
+ * companion `CdkInfraProject`/`CdkAppProject` repo, using the same
8
+ * `ManualDeployWorkflow` contract those project types use for their own
9
+ * deploys - see the CDK spec's open question about sharing this contract.
10
+ */
11
+ export declare class CdkDeployHook extends Component {
12
+ constructor(project: java.JavaProject, environments: (string | EnvironmentOptions)[], options?: CdkDeployHookOptions);
13
+ }
@@ -0,0 +1,45 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CdkDeployHook = void 0;
4
+ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
5
+ const projen_1 = require("projen");
6
+ const manual_deploy_workflow_1 = require("../../common/manual-deploy-workflow");
7
+ /**
8
+ * Manual-dispatch workflow that invokes a downstream CDK deploy in a
9
+ * companion `CdkInfraProject`/`CdkAppProject` repo, using the same
10
+ * `ManualDeployWorkflow` contract those project types use for their own
11
+ * deploys - see the CDK spec's open question about sharing this contract.
12
+ */
13
+ class CdkDeployHook extends projen_1.Component {
14
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@xpertss/projen-types.CdkDeployHook", version: "0.0.0" };
15
+ constructor(project, environments, options = {}) {
16
+ super(project, 'CdkDeployHook');
17
+ if (!options.targetRepo) {
18
+ throw new Error('CdkDeployHook requires targetRepo (the companion CDK infra/app repo)');
19
+ }
20
+ const targetRepo = options.targetRepo;
21
+ new manual_deploy_workflow_1.ManualDeployWorkflow(project, {
22
+ workflowName: 'deploy-cdk',
23
+ environments,
24
+ deploySteps: (env) => [
25
+ {
26
+ name: `Trigger CDK deploy (${env.name}) in ${targetRepo}`,
27
+ uses: 'actions/github-script@v7',
28
+ with: {
29
+ script: [
30
+ 'await github.rest.actions.createWorkflowDispatch({',
31
+ ` owner: "${targetRepo.split('/')[0]}",`,
32
+ ` repo: "${targetRepo.split('/')[1]}",`,
33
+ ' workflow_id: "deploy.yml",',
34
+ ' ref: "main",',
35
+ ` inputs: { environment: "${env.name}" },`,
36
+ '});',
37
+ ].join('\n'),
38
+ },
39
+ },
40
+ ],
41
+ });
42
+ }
43
+ }
44
+ exports.CdkDeployHook = CdkDeployHook;
45
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2RrLWRlcGxveS1ob29rLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2phdmEvY29tcG9uZW50cy9jZGstZGVwbG95LWhvb2sudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLG1DQUFtQztBQUduQyxnRkFBMkU7QUFHM0U7Ozs7O0dBS0c7QUFDSCxNQUFhLGFBQWMsU0FBUSxrQkFBUzs7SUFDMUMsWUFDRSxPQUF5QixFQUN6QixZQUE2QyxFQUM3QyxVQUFnQyxFQUFFO1FBRWxDLEtBQUssQ0FBQyxPQUFPLEVBQUUsZUFBZSxDQUFDLENBQUM7UUFFaEMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUN4QixNQUFNLElBQUksS0FBSyxDQUNiLHNFQUFzRSxDQUN2RSxDQUFDO1FBQ0osQ0FBQztRQUNELE1BQU0sVUFBVSxHQUFHLE9BQU8sQ0FBQyxVQUFVLENBQUM7UUFFdEMsSUFBSSw2Q0FBb0IsQ0FBQyxPQUFPLEVBQUU7WUFDaEMsWUFBWSxFQUFFLFlBQVk7WUFDMUIsWUFBWTtZQUNaLFdBQVcsRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUM7Z0JBQ3BCO29CQUNFLElBQUksRUFBRSx1QkFBdUIsR0FBRyxDQUFDLElBQUksUUFBUSxVQUFVLEVBQUU7b0JBQ3pELElBQUksRUFBRSwwQkFBMEI7b0JBQ2hDLElBQUksRUFBRTt3QkFDSixNQUFNLEVBQUU7NEJBQ04sb0RBQW9EOzRCQUNwRCxhQUFhLFVBQVUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUk7NEJBQ3pDLFlBQVksVUFBVSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSTs0QkFDeEMsOEJBQThCOzRCQUM5QixnQkFBZ0I7NEJBQ2hCLDZCQUE2QixHQUFHLENBQUMsSUFBSSxNQUFNOzRCQUMzQyxLQUFLO3lCQUNOLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztxQkFDYjtpQkFDRjthQUNGO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7QUFwQ0gsc0NBcUNDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50IH0gZnJvbSAncHJvamVuJztcbmltcG9ydCB0eXBlIHsgamF2YSB9IGZyb20gJ3Byb2plbic7XG5pbXBvcnQgeyBFbnZpcm9ubWVudE9wdGlvbnMgfSBmcm9tICcuLi8uLi9jb21tb24vZW52aXJvbm1lbnQtb3B0aW9ucyc7XG5pbXBvcnQgeyBNYW51YWxEZXBsb3lXb3JrZmxvdyB9IGZyb20gJy4uLy4uL2NvbW1vbi9tYW51YWwtZGVwbG95LXdvcmtmbG93JztcbmltcG9ydCB7IENka0RlcGxveUhvb2tPcHRpb25zIH0gZnJvbSAnLi4vb3B0aW9ucyc7XG5cbi8qKlxuICogTWFudWFsLWRpc3BhdGNoIHdvcmtmbG93IHRoYXQgaW52b2tlcyBhIGRvd25zdHJlYW0gQ0RLIGRlcGxveSBpbiBhXG4gKiBjb21wYW5pb24gYENka0luZnJhUHJvamVjdGAvYENka0FwcFByb2plY3RgIHJlcG8sIHVzaW5nIHRoZSBzYW1lXG4gKiBgTWFudWFsRGVwbG95V29ya2Zsb3dgIGNvbnRyYWN0IHRob3NlIHByb2plY3QgdHlwZXMgdXNlIGZvciB0aGVpciBvd25cbiAqIGRlcGxveXMgLSBzZWUgdGhlIENESyBzcGVjJ3Mgb3BlbiBxdWVzdGlvbiBhYm91dCBzaGFyaW5nIHRoaXMgY29udHJhY3QuXG4gKi9cbmV4cG9ydCBjbGFzcyBDZGtEZXBsb3lIb29rIGV4dGVuZHMgQ29tcG9uZW50IHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJvamVjdDogamF2YS5KYXZhUHJvamVjdCxcbiAgICBlbnZpcm9ubWVudHM6IChzdHJpbmcgfCBFbnZpcm9ubWVudE9wdGlvbnMpW10sXG4gICAgb3B0aW9uczogQ2RrRGVwbG95SG9va09wdGlvbnMgPSB7fSxcbiAgKSB7XG4gICAgc3VwZXIocHJvamVjdCwgJ0Nka0RlcGxveUhvb2snKTtcblxuICAgIGlmICghb3B0aW9ucy50YXJnZXRSZXBvKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICdDZGtEZXBsb3lIb29rIHJlcXVpcmVzIHRhcmdldFJlcG8gKHRoZSBjb21wYW5pb24gQ0RLIGluZnJhL2FwcCByZXBvKScsXG4gICAgICApO1xuICAgIH1cbiAgICBjb25zdCB0YXJnZXRSZXBvID0gb3B0aW9ucy50YXJnZXRSZXBvO1xuXG4gICAgbmV3IE1hbnVhbERlcGxveVdvcmtmbG93KHByb2plY3QsIHtcbiAgICAgIHdvcmtmbG93TmFtZTogJ2RlcGxveS1jZGsnLFxuICAgICAgZW52aXJvbm1lbnRzLFxuICAgICAgZGVwbG95U3RlcHM6IChlbnYpID0+IFtcbiAgICAgICAge1xuICAgICAgICAgIG5hbWU6IGBUcmlnZ2VyIENESyBkZXBsb3kgKCR7ZW52Lm5hbWV9KSBpbiAke3RhcmdldFJlcG99YCxcbiAgICAgICAgICB1c2VzOiAnYWN0aW9ucy9naXRodWItc2NyaXB0QHY3JyxcbiAgICAgICAgICB3aXRoOiB7XG4gICAgICAgICAgICBzY3JpcHQ6IFtcbiAgICAgICAgICAgICAgJ2F3YWl0IGdpdGh1Yi5yZXN0LmFjdGlvbnMuY3JlYXRlV29ya2Zsb3dEaXNwYXRjaCh7JyxcbiAgICAgICAgICAgICAgYCAgb3duZXI6IFwiJHt0YXJnZXRSZXBvLnNwbGl0KCcvJylbMF19XCIsYCxcbiAgICAgICAgICAgICAgYCAgcmVwbzogXCIke3RhcmdldFJlcG8uc3BsaXQoJy8nKVsxXX1cIixgLFxuICAgICAgICAgICAgICAnICB3b3JrZmxvd19pZDogXCJkZXBsb3kueW1sXCIsJyxcbiAgICAgICAgICAgICAgJyAgcmVmOiBcIm1haW5cIiwnLFxuICAgICAgICAgICAgICBgICBpbnB1dHM6IHsgZW52aXJvbm1lbnQ6IFwiJHtlbnYubmFtZX1cIiB9LGAsXG4gICAgICAgICAgICAgICd9KTsnLFxuICAgICAgICAgICAgXS5qb2luKCdcXG4nKSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9KTtcbiAgfVxufVxuIl19
@@ -0,0 +1,6 @@
1
+ import { Component } from 'projen';
2
+ import type { java } from 'projen';
3
+ /** Generates a code index and publishes it to `.cai/` on checkin. */
4
+ export declare class CodeIndexWorkflow extends Component {
5
+ constructor(project: java.JavaProject);
6
+ }
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CodeIndexWorkflow = void 0;
4
+ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
5
+ const projen_1 = require("projen");
6
+ /** Generates a code index and publishes it to `.cai/` on checkin. */
7
+ class CodeIndexWorkflow extends projen_1.Component {
8
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@xpertss/projen-types.CodeIndexWorkflow", version: "0.0.0" };
9
+ constructor(project) {
10
+ super(project, 'CodeIndexWorkflow');
11
+ const gh = project.github;
12
+ if (!gh) {
13
+ throw new Error('CodeIndexWorkflow requires GitHub integration');
14
+ }
15
+ const indexTask = project.addTask('codeindex', {
16
+ exec: "mkdir -p .cai && find src -name '*.java' > .cai/index.txt",
17
+ });
18
+ new projen_1.github.TaskWorkflow(gh, {
19
+ name: 'codeindex',
20
+ jobId: 'codeindex',
21
+ task: indexTask,
22
+ triggers: { push: { branches: ['main'] } },
23
+ permissions: { contents: projen_1.github.workflows.JobPermission.WRITE },
24
+ postBuildSteps: [
25
+ {
26
+ name: 'Commit code index',
27
+ uses: 'stefanzweifel/git-auto-commit-action@v5',
28
+ with: { commit_message: 'chore: update code index' },
29
+ },
30
+ ],
31
+ });
32
+ }
33
+ }
34
+ exports.CodeIndexWorkflow = CodeIndexWorkflow;
35
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29kZS1pbmRleC13b3JrZmxvdy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9qYXZhL2NvbXBvbmVudHMvY29kZS1pbmRleC13b3JrZmxvdy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsbUNBQTJDO0FBRzNDLHFFQUFxRTtBQUNyRSxNQUFhLGlCQUFrQixTQUFRLGtCQUFTOztJQUM5QyxZQUFZLE9BQXlCO1FBQ25DLEtBQUssQ0FBQyxPQUFPLEVBQUUsbUJBQW1CLENBQUMsQ0FBQztRQUVwQyxNQUFNLEVBQUUsR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDO1FBQzFCLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUNSLE1BQU0sSUFBSSxLQUFLLENBQUMsK0NBQStDLENBQUMsQ0FBQztRQUNuRSxDQUFDO1FBRUQsTUFBTSxTQUFTLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUU7WUFDN0MsSUFBSSxFQUFFLDJEQUEyRDtTQUNsRSxDQUFDLENBQUM7UUFFSCxJQUFJLGVBQU0sQ0FBQyxZQUFZLENBQUMsRUFBRSxFQUFFO1lBQzFCLElBQUksRUFBRSxXQUFXO1lBQ2pCLEtBQUssRUFBRSxXQUFXO1lBQ2xCLElBQUksRUFBRSxTQUFTO1lBQ2YsUUFBUSxFQUFFLEVBQUUsSUFBSSxFQUFFLEVBQUUsUUFBUSxFQUFFLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRTtZQUMxQyxXQUFXLEVBQUUsRUFBRSxRQUFRLEVBQUUsZUFBTSxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFO1lBQy9ELGNBQWMsRUFBRTtnQkFDZDtvQkFDRSxJQUFJLEVBQUUsbUJBQW1CO29CQUN6QixJQUFJLEVBQUUseUNBQXlDO29CQUMvQyxJQUFJLEVBQUUsRUFBRSxjQUFjLEVBQUUsMEJBQTBCLEVBQUU7aUJBQ3JEO2FBQ0Y7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDOztBQTNCSCw4Q0E0QkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIGdpdGh1YiB9IGZyb20gJ3Byb2plbic7XG5pbXBvcnQgdHlwZSB7IGphdmEgfSBmcm9tICdwcm9qZW4nO1xuXG4vKiogR2VuZXJhdGVzIGEgY29kZSBpbmRleCBhbmQgcHVibGlzaGVzIGl0IHRvIGAuY2FpL2Agb24gY2hlY2tpbi4gKi9cbmV4cG9ydCBjbGFzcyBDb2RlSW5kZXhXb3JrZmxvdyBleHRlbmRzIENvbXBvbmVudCB7XG4gIGNvbnN0cnVjdG9yKHByb2plY3Q6IGphdmEuSmF2YVByb2plY3QpIHtcbiAgICBzdXBlcihwcm9qZWN0LCAnQ29kZUluZGV4V29ya2Zsb3cnKTtcblxuICAgIGNvbnN0IGdoID0gcHJvamVjdC5naXRodWI7XG4gICAgaWYgKCFnaCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdDb2RlSW5kZXhXb3JrZmxvdyByZXF1aXJlcyBHaXRIdWIgaW50ZWdyYXRpb24nKTtcbiAgICB9XG5cbiAgICBjb25zdCBpbmRleFRhc2sgPSBwcm9qZWN0LmFkZFRhc2soJ2NvZGVpbmRleCcsIHtcbiAgICAgIGV4ZWM6IFwibWtkaXIgLXAgLmNhaSAmJiBmaW5kIHNyYyAtbmFtZSAnKi5qYXZhJyA+IC5jYWkvaW5kZXgudHh0XCIsXG4gICAgfSk7XG5cbiAgICBuZXcgZ2l0aHViLlRhc2tXb3JrZmxvdyhnaCwge1xuICAgICAgbmFtZTogJ2NvZGVpbmRleCcsXG4gICAgICBqb2JJZDogJ2NvZGVpbmRleCcsXG4gICAgICB0YXNrOiBpbmRleFRhc2ssXG4gICAgICB0cmlnZ2VyczogeyBwdXNoOiB7IGJyYW5jaGVzOiBbJ21haW4nXSB9IH0sXG4gICAgICBwZXJtaXNzaW9uczogeyBjb250ZW50czogZ2l0aHViLndvcmtmbG93cy5Kb2JQZXJtaXNzaW9uLldSSVRFIH0sXG4gICAgICBwb3N0QnVpbGRTdGVwczogW1xuICAgICAgICB7XG4gICAgICAgICAgbmFtZTogJ0NvbW1pdCBjb2RlIGluZGV4JyxcbiAgICAgICAgICB1c2VzOiAnc3RlZmFuendlaWZlbC9naXQtYXV0by1jb21taXQtYWN0aW9uQHY1JyxcbiAgICAgICAgICB3aXRoOiB7IGNvbW1pdF9tZXNzYWdlOiAnY2hvcmU6IHVwZGF0ZSBjb2RlIGluZGV4JyB9LFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9KTtcbiAgfVxufVxuIl19
@@ -0,0 +1,10 @@
1
+ import { Component } from 'projen';
2
+ import type { java } from 'projen';
3
+ export interface DockerPublishOptions {
4
+ /** @default "docker.io" */
5
+ readonly dockerRegistry?: string;
6
+ }
7
+ /** On-demand build+push of a Docker image, defaulting to Docker Hub. */
8
+ export declare class DockerPublish extends Component {
9
+ constructor(project: java.JavaProject, options?: DockerPublishOptions);
10
+ }
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DockerPublish = void 0;
4
+ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
5
+ const projen_1 = require("projen");
6
+ /** On-demand build+push of a Docker image, defaulting to Docker Hub. */
7
+ class DockerPublish extends projen_1.Component {
8
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@xpertss/projen-types.DockerPublish", version: "0.0.0" };
9
+ constructor(project, options = {}) {
10
+ super(project, 'DockerPublish');
11
+ const gh = project.github;
12
+ if (!gh) {
13
+ throw new Error('DockerPublish requires GitHub integration');
14
+ }
15
+ const registry = options.dockerRegistry ?? 'docker.io';
16
+ const publishTask = project.addTask('publish:docker', {
17
+ exec: `mvn -B package && docker build -t ${registry}/\${IMAGE_NAME}:\${IMAGE_TAG} .`,
18
+ });
19
+ new projen_1.github.TaskWorkflow(gh, {
20
+ name: 'publish-docker',
21
+ jobId: 'publish',
22
+ task: publishTask,
23
+ triggers: { workflowDispatch: {} },
24
+ permissions: { contents: projen_1.github.workflows.JobPermission.READ },
25
+ preBuildSteps: [
26
+ {
27
+ name: 'Docker login',
28
+ uses: 'docker/login-action@v3',
29
+ with: {
30
+ registry,
31
+ username: '${{ secrets.DOCKER_USERNAME }}',
32
+ password: '${{ secrets.DOCKER_PASSWORD }}',
33
+ },
34
+ },
35
+ ],
36
+ env: { IMAGE_NAME: project.name, IMAGE_TAG: '${{ github.sha }}' },
37
+ });
38
+ }
39
+ }
40
+ exports.DockerPublish = DockerPublish;
41
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9ja2VyLXB1Ymxpc2guanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvamF2YS9jb21wb25lbnRzL2RvY2tlci1wdWJsaXNoLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxtQ0FBMkM7QUFRM0Msd0VBQXdFO0FBQ3hFLE1BQWEsYUFBYyxTQUFRLGtCQUFTOztJQUMxQyxZQUFZLE9BQXlCLEVBQUUsVUFBZ0MsRUFBRTtRQUN2RSxLQUFLLENBQUMsT0FBTyxFQUFFLGVBQWUsQ0FBQyxDQUFDO1FBRWhDLE1BQU0sRUFBRSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUM7UUFDMUIsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQ1IsTUFBTSxJQUFJLEtBQUssQ0FBQywyQ0FBMkMsQ0FBQyxDQUFDO1FBQy9ELENBQUM7UUFFRCxNQUFNLFFBQVEsR0FBRyxPQUFPLENBQUMsY0FBYyxJQUFJLFdBQVcsQ0FBQztRQUN2RCxNQUFNLFdBQVcsR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLGdCQUFnQixFQUFFO1lBQ3BELElBQUksRUFBRSxxQ0FBcUMsUUFBUSxpQ0FBaUM7U0FDckYsQ0FBQyxDQUFDO1FBRUgsSUFBSSxlQUFNLENBQUMsWUFBWSxDQUFDLEVBQUUsRUFBRTtZQUMxQixJQUFJLEVBQUUsZ0JBQWdCO1lBQ3RCLEtBQUssRUFBRSxTQUFTO1lBQ2hCLElBQUksRUFBRSxXQUFXO1lBQ2pCLFFBQVEsRUFBRSxFQUFFLGdCQUFnQixFQUFFLEVBQUUsRUFBRTtZQUNsQyxXQUFXLEVBQUUsRUFBRSxRQUFRLEVBQUUsZUFBTSxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFO1lBQzlELGFBQWEsRUFBRTtnQkFDYjtvQkFDRSxJQUFJLEVBQUUsY0FBYztvQkFDcEIsSUFBSSxFQUFFLHdCQUF3QjtvQkFDOUIsSUFBSSxFQUFFO3dCQUNKLFFBQVE7d0JBQ1IsUUFBUSxFQUFFLGdDQUFnQzt3QkFDMUMsUUFBUSxFQUFFLGdDQUFnQztxQkFDM0M7aUJBQ0Y7YUFDRjtZQUNELEdBQUcsRUFBRSxFQUFFLFVBQVUsRUFBRSxPQUFPLENBQUMsSUFBSSxFQUFFLFNBQVMsRUFBRSxtQkFBbUIsRUFBRTtTQUNsRSxDQUFDLENBQUM7SUFDTCxDQUFDOztBQWpDSCxzQ0FrQ0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIGdpdGh1YiB9IGZyb20gJ3Byb2plbic7XG5pbXBvcnQgdHlwZSB7IGphdmEgfSBmcm9tICdwcm9qZW4nO1xuXG5leHBvcnQgaW50ZXJmYWNlIERvY2tlclB1Ymxpc2hPcHRpb25zIHtcbiAgLyoqIEBkZWZhdWx0IFwiZG9ja2VyLmlvXCIgKi9cbiAgcmVhZG9ubHkgZG9ja2VyUmVnaXN0cnk/OiBzdHJpbmc7XG59XG5cbi8qKiBPbi1kZW1hbmQgYnVpbGQrcHVzaCBvZiBhIERvY2tlciBpbWFnZSwgZGVmYXVsdGluZyB0byBEb2NrZXIgSHViLiAqL1xuZXhwb3J0IGNsYXNzIERvY2tlclB1Ymxpc2ggZXh0ZW5kcyBDb21wb25lbnQge1xuICBjb25zdHJ1Y3Rvcihwcm9qZWN0OiBqYXZhLkphdmFQcm9qZWN0LCBvcHRpb25zOiBEb2NrZXJQdWJsaXNoT3B0aW9ucyA9IHt9KSB7XG4gICAgc3VwZXIocHJvamVjdCwgJ0RvY2tlclB1Ymxpc2gnKTtcblxuICAgIGNvbnN0IGdoID0gcHJvamVjdC5naXRodWI7XG4gICAgaWYgKCFnaCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdEb2NrZXJQdWJsaXNoIHJlcXVpcmVzIEdpdEh1YiBpbnRlZ3JhdGlvbicpO1xuICAgIH1cblxuICAgIGNvbnN0IHJlZ2lzdHJ5ID0gb3B0aW9ucy5kb2NrZXJSZWdpc3RyeSA/PyAnZG9ja2VyLmlvJztcbiAgICBjb25zdCBwdWJsaXNoVGFzayA9IHByb2plY3QuYWRkVGFzaygncHVibGlzaDpkb2NrZXInLCB7XG4gICAgICBleGVjOiBgbXZuIC1CIHBhY2thZ2UgJiYgZG9ja2VyIGJ1aWxkIC10ICR7cmVnaXN0cnl9L1xcJHtJTUFHRV9OQU1FfTpcXCR7SU1BR0VfVEFHfSAuYCxcbiAgICB9KTtcblxuICAgIG5ldyBnaXRodWIuVGFza1dvcmtmbG93KGdoLCB7XG4gICAgICBuYW1lOiAncHVibGlzaC1kb2NrZXInLFxuICAgICAgam9iSWQ6ICdwdWJsaXNoJyxcbiAgICAgIHRhc2s6IHB1Ymxpc2hUYXNrLFxuICAgICAgdHJpZ2dlcnM6IHsgd29ya2Zsb3dEaXNwYXRjaDoge30gfSxcbiAgICAgIHBlcm1pc3Npb25zOiB7IGNvbnRlbnRzOiBnaXRodWIud29ya2Zsb3dzLkpvYlBlcm1pc3Npb24uUkVBRCB9LFxuICAgICAgcHJlQnVpbGRTdGVwczogW1xuICAgICAgICB7XG4gICAgICAgICAgbmFtZTogJ0RvY2tlciBsb2dpbicsXG4gICAgICAgICAgdXNlczogJ2RvY2tlci9sb2dpbi1hY3Rpb25AdjMnLFxuICAgICAgICAgIHdpdGg6IHtcbiAgICAgICAgICAgIHJlZ2lzdHJ5LFxuICAgICAgICAgICAgdXNlcm5hbWU6ICcke3sgc2VjcmV0cy5ET0NLRVJfVVNFUk5BTUUgfX0nLFxuICAgICAgICAgICAgcGFzc3dvcmQ6ICcke3sgc2VjcmV0cy5ET0NLRVJfUEFTU1dPUkQgfX0nLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgICAgZW52OiB7IElNQUdFX05BTUU6IHByb2plY3QubmFtZSwgSU1BR0VfVEFHOiAnJHt7IGdpdGh1Yi5zaGEgfX0nIH0sXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,6 @@
1
+ import { Component } from 'projen';
2
+ import type { java } from 'projen';
3
+ /** Adds Flyway config/dependencies + a migrations directory for DB migrations. */
4
+ export declare class FlywayMigration extends Component {
5
+ constructor(project: java.JavaProject);
6
+ }
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.FlywayMigration = void 0;
4
+ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
5
+ const projen_1 = require("projen");
6
+ /** Adds Flyway config/dependencies + a migrations directory for DB migrations. */
7
+ class FlywayMigration extends projen_1.Component {
8
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@xpertss/projen-types.FlywayMigration", version: "0.0.0" };
9
+ constructor(project) {
10
+ super(project, 'FlywayMigration');
11
+ project.pom.addPlugin('org.flywaydb/flyway-maven-plugin@^10');
12
+ project.pom.addDependency('org.flywaydb/flyway-core@^10');
13
+ new projen_1.TextFile(project, 'src/main/resources/db/migration/V1__init.sql', {
14
+ lines: ['-- Add your first migration here.'],
15
+ });
16
+ }
17
+ }
18
+ exports.FlywayMigration = FlywayMigration;
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmx5d2F5LW1pZ3JhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9qYXZhL2NvbXBvbmVudHMvZmx5d2F5LW1pZ3JhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsbUNBQTZDO0FBRzdDLGtGQUFrRjtBQUNsRixNQUFhLGVBQWdCLFNBQVEsa0JBQVM7O0lBQzVDLFlBQVksT0FBeUI7UUFDbkMsS0FBSyxDQUFDLE9BQU8sRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO1FBRWxDLE9BQU8sQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLHNDQUFzQyxDQUFDLENBQUM7UUFDOUQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsOEJBQThCLENBQUMsQ0FBQztRQUUxRCxJQUFJLGlCQUFRLENBQUMsT0FBTyxFQUFFLDhDQUE4QyxFQUFFO1lBQ3BFLEtBQUssRUFBRSxDQUFDLG1DQUFtQyxDQUFDO1NBQzdDLENBQUMsQ0FBQztJQUNMLENBQUM7O0FBVkgsMENBV0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIFRleHRGaWxlIH0gZnJvbSAncHJvamVuJztcbmltcG9ydCB0eXBlIHsgamF2YSB9IGZyb20gJ3Byb2plbic7XG5cbi8qKiBBZGRzIEZseXdheSBjb25maWcvZGVwZW5kZW5jaWVzICsgYSBtaWdyYXRpb25zIGRpcmVjdG9yeSBmb3IgREIgbWlncmF0aW9ucy4gKi9cbmV4cG9ydCBjbGFzcyBGbHl3YXlNaWdyYXRpb24gZXh0ZW5kcyBDb21wb25lbnQge1xuICBjb25zdHJ1Y3Rvcihwcm9qZWN0OiBqYXZhLkphdmFQcm9qZWN0KSB7XG4gICAgc3VwZXIocHJvamVjdCwgJ0ZseXdheU1pZ3JhdGlvbicpO1xuXG4gICAgcHJvamVjdC5wb20uYWRkUGx1Z2luKCdvcmcuZmx5d2F5ZGIvZmx5d2F5LW1hdmVuLXBsdWdpbkBeMTAnKTtcbiAgICBwcm9qZWN0LnBvbS5hZGREZXBlbmRlbmN5KCdvcmcuZmx5d2F5ZGIvZmx5d2F5LWNvcmVAXjEwJyk7XG5cbiAgICBuZXcgVGV4dEZpbGUocHJvamVjdCwgJ3NyYy9tYWluL3Jlc291cmNlcy9kYi9taWdyYXRpb24vVjFfX2luaXQuc3FsJywge1xuICAgICAgbGluZXM6IFsnLS0gQWRkIHlvdXIgZmlyc3QgbWlncmF0aW9uIGhlcmUuJ10sXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,10 @@
1
+ import { Component } from 'projen';
2
+ import type { java } from 'projen';
3
+ export interface GitHubPackagesPublishOptions {
4
+ /** @default derived from the repository URL */
5
+ readonly ghPackagesRegistry?: string;
6
+ }
7
+ /** On-demand publish to GitHub Packages. */
8
+ export declare class GitHubPackagesPublish extends Component {
9
+ constructor(project: java.JavaProject, options?: GitHubPackagesPublishOptions);
10
+ }
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GitHubPackagesPublish = void 0;
4
+ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
5
+ const projen_1 = require("projen");
6
+ /** On-demand publish to GitHub Packages. */
7
+ class GitHubPackagesPublish extends projen_1.Component {
8
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@xpertss/projen-types.GitHubPackagesPublish", version: "0.0.0" };
9
+ constructor(project, options = {}) {
10
+ super(project, 'GitHubPackagesPublish');
11
+ const gh = project.github;
12
+ if (!gh) {
13
+ throw new Error('GitHubPackagesPublish requires GitHub integration');
14
+ }
15
+ const registry = options.ghPackagesRegistry ??
16
+ 'https://maven.pkg.github.com/${{ github.repository }}';
17
+ const publishTask = project.addTask('publish:ghpackages', {
18
+ exec: `mvn -B deploy -DaltDeploymentRepository=github::${registry}`,
19
+ });
20
+ new projen_1.github.TaskWorkflow(gh, {
21
+ name: 'publish-ghpackages',
22
+ jobId: 'publish',
23
+ task: publishTask,
24
+ triggers: { workflowDispatch: {} },
25
+ permissions: {
26
+ contents: projen_1.github.workflows.JobPermission.READ,
27
+ packages: projen_1.github.workflows.JobPermission.WRITE,
28
+ },
29
+ env: { GITHUB_TOKEN: '${{ secrets.GITHUB_TOKEN }}' },
30
+ });
31
+ }
32
+ }
33
+ exports.GitHubPackagesPublish = GitHubPackagesPublish;
34
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2l0aHViLXBhY2thZ2VzLXB1Ymxpc2guanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvamF2YS9jb21wb25lbnRzL2dpdGh1Yi1wYWNrYWdlcy1wdWJsaXNoLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxtQ0FBMkM7QUFRM0MsNENBQTRDO0FBQzVDLE1BQWEscUJBQXNCLFNBQVEsa0JBQVM7O0lBQ2xELFlBQ0UsT0FBeUIsRUFDekIsVUFBd0MsRUFBRTtRQUUxQyxLQUFLLENBQUMsT0FBTyxFQUFFLHVCQUF1QixDQUFDLENBQUM7UUFFeEMsTUFBTSxFQUFFLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQztRQUMxQixJQUFJLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDUixNQUFNLElBQUksS0FBSyxDQUFDLG1EQUFtRCxDQUFDLENBQUM7UUFDdkUsQ0FBQztRQUVELE1BQU0sUUFBUSxHQUNaLE9BQU8sQ0FBQyxrQkFBa0I7WUFDMUIsdURBQXVELENBQUM7UUFFMUQsTUFBTSxXQUFXLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxvQkFBb0IsRUFBRTtZQUN4RCxJQUFJLEVBQUUsbURBQW1ELFFBQVEsRUFBRTtTQUNwRSxDQUFDLENBQUM7UUFFSCxJQUFJLGVBQU0sQ0FBQyxZQUFZLENBQUMsRUFBRSxFQUFFO1lBQzFCLElBQUksRUFBRSxvQkFBb0I7WUFDMUIsS0FBSyxFQUFFLFNBQVM7WUFDaEIsSUFBSSxFQUFFLFdBQVc7WUFDakIsUUFBUSxFQUFFLEVBQUUsZ0JBQWdCLEVBQUUsRUFBRSxFQUFFO1lBQ2xDLFdBQVcsRUFBRTtnQkFDWCxRQUFRLEVBQUUsZUFBTSxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsSUFBSTtnQkFDN0MsUUFBUSxFQUFFLGVBQU0sQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLEtBQUs7YUFDL0M7WUFDRCxHQUFHLEVBQUUsRUFBRSxZQUFZLEVBQUUsNkJBQTZCLEVBQUU7U0FDckQsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7QUEvQkgsc0RBZ0NDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBnaXRodWIgfSBmcm9tICdwcm9qZW4nO1xuaW1wb3J0IHR5cGUgeyBqYXZhIH0gZnJvbSAncHJvamVuJztcblxuZXhwb3J0IGludGVyZmFjZSBHaXRIdWJQYWNrYWdlc1B1Ymxpc2hPcHRpb25zIHtcbiAgLyoqIEBkZWZhdWx0IGRlcml2ZWQgZnJvbSB0aGUgcmVwb3NpdG9yeSBVUkwgKi9cbiAgcmVhZG9ubHkgZ2hQYWNrYWdlc1JlZ2lzdHJ5Pzogc3RyaW5nO1xufVxuXG4vKiogT24tZGVtYW5kIHB1Ymxpc2ggdG8gR2l0SHViIFBhY2thZ2VzLiAqL1xuZXhwb3J0IGNsYXNzIEdpdEh1YlBhY2thZ2VzUHVibGlzaCBleHRlbmRzIENvbXBvbmVudCB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByb2plY3Q6IGphdmEuSmF2YVByb2plY3QsXG4gICAgb3B0aW9uczogR2l0SHViUGFja2FnZXNQdWJsaXNoT3B0aW9ucyA9IHt9LFxuICApIHtcbiAgICBzdXBlcihwcm9qZWN0LCAnR2l0SHViUGFja2FnZXNQdWJsaXNoJyk7XG5cbiAgICBjb25zdCBnaCA9IHByb2plY3QuZ2l0aHViO1xuICAgIGlmICghZ2gpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignR2l0SHViUGFja2FnZXNQdWJsaXNoIHJlcXVpcmVzIEdpdEh1YiBpbnRlZ3JhdGlvbicpO1xuICAgIH1cblxuICAgIGNvbnN0IHJlZ2lzdHJ5ID1cbiAgICAgIG9wdGlvbnMuZ2hQYWNrYWdlc1JlZ2lzdHJ5ID8/XG4gICAgICAnaHR0cHM6Ly9tYXZlbi5wa2cuZ2l0aHViLmNvbS8ke3sgZ2l0aHViLnJlcG9zaXRvcnkgfX0nO1xuXG4gICAgY29uc3QgcHVibGlzaFRhc2sgPSBwcm9qZWN0LmFkZFRhc2soJ3B1Ymxpc2g6Z2hwYWNrYWdlcycsIHtcbiAgICAgIGV4ZWM6IGBtdm4gLUIgZGVwbG95IC1EYWx0RGVwbG95bWVudFJlcG9zaXRvcnk9Z2l0aHViOjoke3JlZ2lzdHJ5fWAsXG4gICAgfSk7XG5cbiAgICBuZXcgZ2l0aHViLlRhc2tXb3JrZmxvdyhnaCwge1xuICAgICAgbmFtZTogJ3B1Ymxpc2gtZ2hwYWNrYWdlcycsXG4gICAgICBqb2JJZDogJ3B1Ymxpc2gnLFxuICAgICAgdGFzazogcHVibGlzaFRhc2ssXG4gICAgICB0cmlnZ2VyczogeyB3b3JrZmxvd0Rpc3BhdGNoOiB7fSB9LFxuICAgICAgcGVybWlzc2lvbnM6IHtcbiAgICAgICAgY29udGVudHM6IGdpdGh1Yi53b3JrZmxvd3MuSm9iUGVybWlzc2lvbi5SRUFELFxuICAgICAgICBwYWNrYWdlczogZ2l0aHViLndvcmtmbG93cy5Kb2JQZXJtaXNzaW9uLldSSVRFLFxuICAgICAgfSxcbiAgICAgIGVudjogeyBHSVRIVUJfVE9LRU46ICcke3sgc2VjcmV0cy5HSVRIVUJfVE9LRU4gfX0nIH0sXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,13 @@
1
+ import { Component } from 'projen';
2
+ import type { java } from 'projen';
3
+ export interface MavenCentralPublishOptions {
4
+ /** @default false */
5
+ readonly mavenCentralOidc?: boolean;
6
+ }
7
+ /**
8
+ * On-demand publish workflow to Maven Central, with GPG signing (secrets)
9
+ * or OIDC trusted publishing.
10
+ */
11
+ export declare class MavenCentralPublish extends Component {
12
+ constructor(project: java.JavaProject, options?: MavenCentralPublishOptions);
13
+ }
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MavenCentralPublish = void 0;
4
+ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
5
+ const projen_1 = require("projen");
6
+ /**
7
+ * On-demand publish workflow to Maven Central, with GPG signing (secrets)
8
+ * or OIDC trusted publishing.
9
+ */
10
+ class MavenCentralPublish extends projen_1.Component {
11
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@xpertss/projen-types.MavenCentralPublish", version: "0.0.0" };
12
+ constructor(project, options = {}) {
13
+ super(project, 'MavenCentralPublish');
14
+ const gh = project.github;
15
+ if (!gh) {
16
+ throw new Error('MavenCentralPublish requires GitHub integration');
17
+ }
18
+ const publishTask = project.addTask('publish:maven-central', {
19
+ exec: 'mvn -B deploy -P release',
20
+ });
21
+ new projen_1.github.TaskWorkflow(gh, {
22
+ name: 'publish-maven-central',
23
+ jobId: 'publish',
24
+ task: publishTask,
25
+ triggers: { workflowDispatch: {} },
26
+ permissions: {
27
+ contents: projen_1.github.workflows.JobPermission.READ,
28
+ idToken: options.mavenCentralOidc
29
+ ? projen_1.github.workflows.JobPermission.WRITE
30
+ : projen_1.github.workflows.JobPermission.NONE,
31
+ },
32
+ env: options.mavenCentralOidc
33
+ ? {}
34
+ : {
35
+ MAVEN_GPG_PRIVATE_KEY: '${{ secrets.MAVEN_GPG_PRIVATE_KEY }}',
36
+ MAVEN_GPG_PASSPHRASE: '${{ secrets.MAVEN_GPG_PASSPHRASE }}',
37
+ MAVEN_CENTRAL_USERNAME: '${{ secrets.MAVEN_CENTRAL_USERNAME }}',
38
+ MAVEN_CENTRAL_PASSWORD: '${{ secrets.MAVEN_CENTRAL_PASSWORD }}',
39
+ },
40
+ });
41
+ }
42
+ }
43
+ exports.MavenCentralPublish = MavenCentralPublish;
44
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF2ZW4tY2VudHJhbC1wdWJsaXNoLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2phdmEvY29tcG9uZW50cy9tYXZlbi1jZW50cmFsLXB1Ymxpc2gudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLG1DQUFpRDtBQVFqRDs7O0dBR0c7QUFDSCxNQUFhLG1CQUFvQixTQUFRLGtCQUFTOztJQUNoRCxZQUFZLE9BQXlCLEVBQUUsVUFBc0MsRUFBRTtRQUM3RSxLQUFLLENBQUMsT0FBTyxFQUFFLHFCQUFxQixDQUFDLENBQUM7UUFFdEMsTUFBTSxFQUFFLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQztRQUMxQixJQUFJLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDUixNQUFNLElBQUksS0FBSyxDQUFDLGlEQUFpRCxDQUFDLENBQUM7UUFDckUsQ0FBQztRQUVELE1BQU0sV0FBVyxHQUFTLE9BQU8sQ0FBQyxPQUFPLENBQUMsdUJBQXVCLEVBQUU7WUFDakUsSUFBSSxFQUFFLDBCQUEwQjtTQUNqQyxDQUFDLENBQUM7UUFFSCxJQUFJLGVBQU0sQ0FBQyxZQUFZLENBQUMsRUFBRSxFQUFFO1lBQzFCLElBQUksRUFBRSx1QkFBdUI7WUFDN0IsS0FBSyxFQUFFLFNBQVM7WUFDaEIsSUFBSSxFQUFFLFdBQVc7WUFDakIsUUFBUSxFQUFFLEVBQUUsZ0JBQWdCLEVBQUUsRUFBRSxFQUFFO1lBQ2xDLFdBQVcsRUFBRTtnQkFDWCxRQUFRLEVBQUUsZUFBTSxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsSUFBSTtnQkFDN0MsT0FBTyxFQUFFLE9BQU8sQ0FBQyxnQkFBZ0I7b0JBQy9CLENBQUMsQ0FBQyxlQUFNLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxLQUFLO29CQUN0QyxDQUFDLENBQUMsZUFBTSxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsSUFBSTthQUN4QztZQUNELEdBQUcsRUFBRSxPQUFPLENBQUMsZ0JBQWdCO2dCQUMzQixDQUFDLENBQUMsRUFBRTtnQkFDSixDQUFDLENBQUM7b0JBQ0EscUJBQXFCLEVBQUUsc0NBQXNDO29CQUM3RCxvQkFBb0IsRUFBRSxxQ0FBcUM7b0JBQzNELHNCQUFzQixFQUFFLHVDQUF1QztvQkFDL0Qsc0JBQXNCLEVBQUUsdUNBQXVDO2lCQUNoRTtTQUNKLENBQUMsQ0FBQztJQUNMLENBQUM7O0FBakNILGtEQWtDQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgVGFzaywgZ2l0aHViIH0gZnJvbSAncHJvamVuJztcbmltcG9ydCB0eXBlIHsgamF2YSB9IGZyb20gJ3Byb2plbic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTWF2ZW5DZW50cmFsUHVibGlzaE9wdGlvbnMge1xuICAvKiogQGRlZmF1bHQgZmFsc2UgKi9cbiAgcmVhZG9ubHkgbWF2ZW5DZW50cmFsT2lkYz86IGJvb2xlYW47XG59XG5cbi8qKlxuICogT24tZGVtYW5kIHB1Ymxpc2ggd29ya2Zsb3cgdG8gTWF2ZW4gQ2VudHJhbCwgd2l0aCBHUEcgc2lnbmluZyAoc2VjcmV0cylcbiAqIG9yIE9JREMgdHJ1c3RlZCBwdWJsaXNoaW5nLlxuICovXG5leHBvcnQgY2xhc3MgTWF2ZW5DZW50cmFsUHVibGlzaCBleHRlbmRzIENvbXBvbmVudCB7XG4gIGNvbnN0cnVjdG9yKHByb2plY3Q6IGphdmEuSmF2YVByb2plY3QsIG9wdGlvbnM6IE1hdmVuQ2VudHJhbFB1Ymxpc2hPcHRpb25zID0ge30pIHtcbiAgICBzdXBlcihwcm9qZWN0LCAnTWF2ZW5DZW50cmFsUHVibGlzaCcpO1xuXG4gICAgY29uc3QgZ2ggPSBwcm9qZWN0LmdpdGh1YjtcbiAgICBpZiAoIWdoKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ01hdmVuQ2VudHJhbFB1Ymxpc2ggcmVxdWlyZXMgR2l0SHViIGludGVncmF0aW9uJyk7XG4gICAgfVxuXG4gICAgY29uc3QgcHVibGlzaFRhc2s6IFRhc2sgPSBwcm9qZWN0LmFkZFRhc2soJ3B1Ymxpc2g6bWF2ZW4tY2VudHJhbCcsIHtcbiAgICAgIGV4ZWM6ICdtdm4gLUIgZGVwbG95IC1QIHJlbGVhc2UnLFxuICAgIH0pO1xuXG4gICAgbmV3IGdpdGh1Yi5UYXNrV29ya2Zsb3coZ2gsIHtcbiAgICAgIG5hbWU6ICdwdWJsaXNoLW1hdmVuLWNlbnRyYWwnLFxuICAgICAgam9iSWQ6ICdwdWJsaXNoJyxcbiAgICAgIHRhc2s6IHB1Ymxpc2hUYXNrLFxuICAgICAgdHJpZ2dlcnM6IHsgd29ya2Zsb3dEaXNwYXRjaDoge30gfSxcbiAgICAgIHBlcm1pc3Npb25zOiB7XG4gICAgICAgIGNvbnRlbnRzOiBnaXRodWIud29ya2Zsb3dzLkpvYlBlcm1pc3Npb24uUkVBRCxcbiAgICAgICAgaWRUb2tlbjogb3B0aW9ucy5tYXZlbkNlbnRyYWxPaWRjXG4gICAgICAgICAgPyBnaXRodWIud29ya2Zsb3dzLkpvYlBlcm1pc3Npb24uV1JJVEVcbiAgICAgICAgICA6IGdpdGh1Yi53b3JrZmxvd3MuSm9iUGVybWlzc2lvbi5OT05FLFxuICAgICAgfSxcbiAgICAgIGVudjogb3B0aW9ucy5tYXZlbkNlbnRyYWxPaWRjXG4gICAgICAgID8ge31cbiAgICAgICAgOiB7XG4gICAgICAgICAgTUFWRU5fR1BHX1BSSVZBVEVfS0VZOiAnJHt7IHNlY3JldHMuTUFWRU5fR1BHX1BSSVZBVEVfS0VZIH19JyxcbiAgICAgICAgICBNQVZFTl9HUEdfUEFTU1BIUkFTRTogJyR7eyBzZWNyZXRzLk1BVkVOX0dQR19QQVNTUEhSQVNFIH19JyxcbiAgICAgICAgICBNQVZFTl9DRU5UUkFMX1VTRVJOQU1FOiAnJHt7IHNlY3JldHMuTUFWRU5fQ0VOVFJBTF9VU0VSTkFNRSB9fScsXG4gICAgICAgICAgTUFWRU5fQ0VOVFJBTF9QQVNTV09SRDogJyR7eyBzZWNyZXRzLk1BVkVOX0NFTlRSQUxfUEFTU1dPUkQgfX0nLFxuICAgICAgICB9LFxuICAgIH0pO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,9 @@
1
+ import { JavaMavenProject } from './java-maven-base';
2
+ import { JavaAppProjectOptions } from './options';
3
+ /**
4
+ * GUI/TUI/CLI Java application. Publishes to GitHub Packages only -
5
+ * explicitly excludes Maven Central, Docker, and CDK deploy hooks.
6
+ */
7
+ export declare class JavaAppProject extends JavaMavenProject {
8
+ constructor(options: JavaAppProjectOptions);
9
+ }
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.JavaAppProject = void 0;
4
+ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
5
+ const github_packages_publish_1 = require("./components/github-packages-publish");
6
+ const java_maven_base_1 = require("./java-maven-base");
7
+ /**
8
+ * GUI/TUI/CLI Java application. Publishes to GitHub Packages only -
9
+ * explicitly excludes Maven Central, Docker, and CDK deploy hooks.
10
+ */
11
+ class JavaAppProject extends java_maven_base_1.JavaMavenProject {
12
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@xpertss/projen-types.JavaAppProject", version: "0.0.0" };
13
+ constructor(options) {
14
+ super(options);
15
+ new github_packages_publish_1.GitHubPackagesPublish(this, {
16
+ ghPackagesRegistry: options.ghPackagesRegistry,
17
+ });
18
+ }
19
+ }
20
+ exports.JavaAppProject = JavaAppProject;
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiamF2YS1hcHAtcHJvamVjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9qYXZhL2phdmEtYXBwLXByb2plY3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLGtGQUE2RTtBQUM3RSx1REFBcUQ7QUFHckQ7OztHQUdHO0FBQ0gsTUFBYSxjQUFlLFNBQVEsa0NBQWdCOztJQUNsRCxZQUFZLE9BQThCO1FBQ3hDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUVmLElBQUksK0NBQXFCLENBQUMsSUFBSSxFQUFFO1lBQzlCLGtCQUFrQixFQUFFLE9BQU8sQ0FBQyxrQkFBa0I7U0FDL0MsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7QUFQSCx3Q0FRQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEdpdEh1YlBhY2thZ2VzUHVibGlzaCB9IGZyb20gJy4vY29tcG9uZW50cy9naXRodWItcGFja2FnZXMtcHVibGlzaCc7XG5pbXBvcnQgeyBKYXZhTWF2ZW5Qcm9qZWN0IH0gZnJvbSAnLi9qYXZhLW1hdmVuLWJhc2UnO1xuaW1wb3J0IHsgSmF2YUFwcFByb2plY3RPcHRpb25zIH0gZnJvbSAnLi9vcHRpb25zJztcblxuLyoqXG4gKiBHVUkvVFVJL0NMSSBKYXZhIGFwcGxpY2F0aW9uLiBQdWJsaXNoZXMgdG8gR2l0SHViIFBhY2thZ2VzIG9ubHkgLVxuICogZXhwbGljaXRseSBleGNsdWRlcyBNYXZlbiBDZW50cmFsLCBEb2NrZXIsIGFuZCBDREsgZGVwbG95IGhvb2tzLlxuICovXG5leHBvcnQgY2xhc3MgSmF2YUFwcFByb2plY3QgZXh0ZW5kcyBKYXZhTWF2ZW5Qcm9qZWN0IHtcbiAgY29uc3RydWN0b3Iob3B0aW9uczogSmF2YUFwcFByb2plY3RPcHRpb25zKSB7XG4gICAgc3VwZXIob3B0aW9ucyk7XG5cbiAgICBuZXcgR2l0SHViUGFja2FnZXNQdWJsaXNoKHRoaXMsIHtcbiAgICAgIGdoUGFja2FnZXNSZWdpc3RyeTogb3B0aW9ucy5naFBhY2thZ2VzUmVnaXN0cnksXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,6 @@
1
+ import { JavaMavenProject } from './java-maven-base';
2
+ import { JavaLibraryProjectOptions } from './options';
3
+ /** Reusable Java library, published to Maven Central. */
4
+ export declare class JavaLibraryProject extends JavaMavenProject {
5
+ constructor(options: JavaLibraryProjectOptions);
6
+ }
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.JavaLibraryProject = void 0;
4
+ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
5
+ const code_index_workflow_1 = require("./components/code-index-workflow");
6
+ const maven_central_publish_1 = require("./components/maven-central-publish");
7
+ const java_maven_base_1 = require("./java-maven-base");
8
+ /** Reusable Java library, published to Maven Central. */
9
+ class JavaLibraryProject extends java_maven_base_1.JavaMavenProject {
10
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@xpertss/projen-types.JavaLibraryProject", version: "0.0.0" };
11
+ constructor(options) {
12
+ super(options);
13
+ new maven_central_publish_1.MavenCentralPublish(this, { mavenCentralOidc: options.mavenCentralOidc });
14
+ if (options.publishCodeIndex ?? true) {
15
+ new code_index_workflow_1.CodeIndexWorkflow(this);
16
+ }
17
+ }
18
+ }
19
+ exports.JavaLibraryProject = JavaLibraryProject;
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiamF2YS1saWJyYXJ5LXByb2plY3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvamF2YS9qYXZhLWxpYnJhcnktcHJvamVjdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsMEVBQXFFO0FBQ3JFLDhFQUF5RTtBQUN6RSx1REFBcUQ7QUFHckQseURBQXlEO0FBQ3pELE1BQWEsa0JBQW1CLFNBQVEsa0NBQWdCOztJQUN0RCxZQUFZLE9BQWtDO1FBQzVDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUVmLElBQUksMkNBQW1CLENBQUMsSUFBSSxFQUFFLEVBQUUsZ0JBQWdCLEVBQUUsT0FBTyxDQUFDLGdCQUFnQixFQUFFLENBQUMsQ0FBQztRQUU5RSxJQUFJLE9BQU8sQ0FBQyxnQkFBZ0IsSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUNyQyxJQUFJLHVDQUFpQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzlCLENBQUM7SUFDSCxDQUFDOztBQVRILGdEQVVDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29kZUluZGV4V29ya2Zsb3cgfSBmcm9tICcuL2NvbXBvbmVudHMvY29kZS1pbmRleC13b3JrZmxvdyc7XG5pbXBvcnQgeyBNYXZlbkNlbnRyYWxQdWJsaXNoIH0gZnJvbSAnLi9jb21wb25lbnRzL21hdmVuLWNlbnRyYWwtcHVibGlzaCc7XG5pbXBvcnQgeyBKYXZhTWF2ZW5Qcm9qZWN0IH0gZnJvbSAnLi9qYXZhLW1hdmVuLWJhc2UnO1xuaW1wb3J0IHsgSmF2YUxpYnJhcnlQcm9qZWN0T3B0aW9ucyB9IGZyb20gJy4vb3B0aW9ucyc7XG5cbi8qKiBSZXVzYWJsZSBKYXZhIGxpYnJhcnksIHB1Ymxpc2hlZCB0byBNYXZlbiBDZW50cmFsLiAqL1xuZXhwb3J0IGNsYXNzIEphdmFMaWJyYXJ5UHJvamVjdCBleHRlbmRzIEphdmFNYXZlblByb2plY3Qge1xuICBjb25zdHJ1Y3RvcihvcHRpb25zOiBKYXZhTGlicmFyeVByb2plY3RPcHRpb25zKSB7XG4gICAgc3VwZXIob3B0aW9ucyk7XG5cbiAgICBuZXcgTWF2ZW5DZW50cmFsUHVibGlzaCh0aGlzLCB7IG1hdmVuQ2VudHJhbE9pZGM6IG9wdGlvbnMubWF2ZW5DZW50cmFsT2lkYyB9KTtcblxuICAgIGlmIChvcHRpb25zLnB1Ymxpc2hDb2RlSW5kZXggPz8gdHJ1ZSkge1xuICAgICAgbmV3IENvZGVJbmRleFdvcmtmbG93KHRoaXMpO1xuICAgIH1cbiAgfVxufVxuIl19
@@ -0,0 +1,15 @@
1
+ import { Task, github, java } from 'projen';
2
+ import { CommonJavaOptions } from './options';
3
+ export interface JavaMavenProjectOptions extends CommonJavaOptions {
4
+ }
5
+ /**
6
+ * Shared Maven build skeleton for all three Java project types: standard
7
+ * `pom.xml`/directory layout (via `java.JavaProject`), a PR-triggered
8
+ * build+test(+SonarQube) workflow that hard-fails on projen drift, and a
9
+ * nightly dependency-upgrade workflow.
10
+ */
11
+ export declare class JavaMavenProject extends java.JavaProject {
12
+ readonly upgradeTask: Task;
13
+ readonly buildVerifyWorkflow: github.TaskWorkflow;
14
+ constructor(options: JavaMavenProjectOptions);
15
+ }
@@ -0,0 +1,56 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.JavaMavenProject = void 0;
4
+ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
5
+ const projen_1 = require("projen");
6
+ const constants_1 = require("../common/constants");
7
+ const drift_check_1 = require("../common/drift-check");
8
+ const upgrade_workflow_1 = require("../common/upgrade-workflow");
9
+ /**
10
+ * Shared Maven build skeleton for all three Java project types: standard
11
+ * `pom.xml`/directory layout (via `java.JavaProject`), a PR-triggered
12
+ * build+test(+SonarQube) workflow that hard-fails on projen drift, and a
13
+ * nightly dependency-upgrade workflow.
14
+ */
15
+ class JavaMavenProject extends projen_1.java.JavaProject {
16
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@xpertss/projen-types.JavaMavenProject", version: "0.0.0" };
17
+ upgradeTask;
18
+ buildVerifyWorkflow;
19
+ constructor(options) {
20
+ super({
21
+ name: options.name,
22
+ groupId: options.groupId,
23
+ artifactId: options.artifactId,
24
+ version: options.version ?? '0.1.0',
25
+ projenCredentials: projen_1.github.GithubCredentials.fromPersonalAccessToken({
26
+ secret: options.gheTokenSecret ?? constants_1.DEFAULT_GHE_TOKEN_SECRET,
27
+ }),
28
+ });
29
+ const gh = this.github;
30
+ if (!gh) {
31
+ throw new Error('JavaMavenProject requires GitHub integration');
32
+ }
33
+ const postBuildSteps = [...(0, drift_check_1.driftCheckSteps)()];
34
+ if (options.sonarProjectKey) {
35
+ postBuildSteps.push({
36
+ name: 'SonarQube scan',
37
+ run: `mvn -B sonar:sonar -Dsonar.projectKey=${options.sonarProjectKey}`,
38
+ env: { SONAR_TOKEN: '${{ secrets.SONAR_TOKEN }}' },
39
+ });
40
+ }
41
+ this.buildVerifyWorkflow = new projen_1.github.TaskWorkflow(gh, {
42
+ name: 'build',
43
+ jobId: 'build',
44
+ task: this.buildTask,
45
+ triggers: { pullRequest: {}, workflowDispatch: {} },
46
+ permissions: { contents: projen_1.github.workflows.JobPermission.READ },
47
+ postBuildSteps,
48
+ });
49
+ this.upgradeTask = this.addTask('upgrade', {
50
+ exec: 'mvn -B versions:use-latest-releases versions:update-properties',
51
+ });
52
+ new upgrade_workflow_1.UpgradeWorkflow(this, { task: this.upgradeTask });
53
+ }
54
+ }
55
+ exports.JavaMavenProject = JavaMavenProject;
56
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiamF2YS1tYXZlbi1iYXNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2phdmEvamF2YS1tYXZlbi1iYXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxtQ0FBNEM7QUFFNUMsbURBQStEO0FBQy9ELHVEQUF3RDtBQUN4RCxpRUFBNkQ7QUFJN0Q7Ozs7O0dBS0c7QUFDSCxNQUFhLGdCQUFpQixTQUFRLGFBQUksQ0FBQyxXQUFXOztJQUNwQyxXQUFXLENBQU87SUFDbEIsbUJBQW1CLENBQXNCO0lBRXpELFlBQVksT0FBZ0M7UUFDMUMsS0FBSyxDQUFDO1lBQ0osSUFBSSxFQUFFLE9BQU8sQ0FBQyxJQUFJO1lBQ2xCLE9BQU8sRUFBRSxPQUFPLENBQUMsT0FBTztZQUN4QixVQUFVLEVBQUUsT0FBTyxDQUFDLFVBQVU7WUFDOUIsT0FBTyxFQUFFLE9BQU8sQ0FBQyxPQUFPLElBQUksT0FBTztZQUNuQyxpQkFBaUIsRUFBRSxlQUFNLENBQUMsaUJBQWlCLENBQUMsdUJBQXVCLENBQUM7Z0JBQ2xFLE1BQU0sRUFBRSxPQUFPLENBQUMsY0FBYyxJQUFJLG9DQUF3QjthQUMzRCxDQUFDO1NBQ0gsQ0FBQyxDQUFDO1FBRUgsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUN2QixJQUFJLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDUixNQUFNLElBQUksS0FBSyxDQUFDLDhDQUE4QyxDQUFDLENBQUM7UUFDbEUsQ0FBQztRQUVELE1BQU0sY0FBYyxHQUFHLENBQUMsR0FBRyxJQUFBLDZCQUFlLEdBQUUsQ0FBQyxDQUFDO1FBQzlDLElBQUksT0FBTyxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQzVCLGNBQWMsQ0FBQyxJQUFJLENBQUM7Z0JBQ2xCLElBQUksRUFBRSxnQkFBZ0I7Z0JBQ3RCLEdBQUcsRUFBRSx5Q0FBeUMsT0FBTyxDQUFDLGVBQWUsRUFBRTtnQkFDdkUsR0FBRyxFQUFFLEVBQUUsV0FBVyxFQUFFLDRCQUE0QixFQUFFO2FBQ25ELENBQUMsQ0FBQztRQUNMLENBQUM7UUFFRCxJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxlQUFNLENBQUMsWUFBWSxDQUFDLEVBQUUsRUFBRTtZQUNyRCxJQUFJLEVBQUUsT0FBTztZQUNiLEtBQUssRUFBRSxPQUFPO1lBQ2QsSUFBSSxFQUFFLElBQUksQ0FBQyxTQUFTO1lBQ3BCLFFBQVEsRUFBRSxFQUFFLFdBQVcsRUFBRSxFQUFFLEVBQUUsZ0JBQWdCLEVBQUUsRUFBRSxFQUFFO1lBQ25ELFdBQVcsRUFBRSxFQUFFLFFBQVEsRUFBRSxlQUFNLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUU7WUFDOUQsY0FBYztTQUNmLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUU7WUFDekMsSUFBSSxFQUFFLGdFQUFnRTtTQUN2RSxDQUFDLENBQUM7UUFDSCxJQUFJLGtDQUFlLENBQUMsSUFBSSxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO0lBQ3hELENBQUM7O0FBMUNILDRDQTJDQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRhc2ssIGdpdGh1YiwgamF2YSB9IGZyb20gJ3Byb2plbic7XG5pbXBvcnQgeyBDb21tb25KYXZhT3B0aW9ucyB9IGZyb20gJy4vb3B0aW9ucyc7XG5pbXBvcnQgeyBERUZBVUxUX0dIRV9UT0tFTl9TRUNSRVQgfSBmcm9tICcuLi9jb21tb24vY29uc3RhbnRzJztcbmltcG9ydCB7IGRyaWZ0Q2hlY2tTdGVwcyB9IGZyb20gJy4uL2NvbW1vbi9kcmlmdC1jaGVjayc7XG5pbXBvcnQgeyBVcGdyYWRlV29ya2Zsb3cgfSBmcm9tICcuLi9jb21tb24vdXBncmFkZS13b3JrZmxvdyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSmF2YU1hdmVuUHJvamVjdE9wdGlvbnMgZXh0ZW5kcyBDb21tb25KYXZhT3B0aW9ucyB7fVxuXG4vKipcbiAqIFNoYXJlZCBNYXZlbiBidWlsZCBza2VsZXRvbiBmb3IgYWxsIHRocmVlIEphdmEgcHJvamVjdCB0eXBlczogc3RhbmRhcmRcbiAqIGBwb20ueG1sYC9kaXJlY3RvcnkgbGF5b3V0ICh2aWEgYGphdmEuSmF2YVByb2plY3RgKSwgYSBQUi10cmlnZ2VyZWRcbiAqIGJ1aWxkK3Rlc3QoK1NvbmFyUXViZSkgd29ya2Zsb3cgdGhhdCBoYXJkLWZhaWxzIG9uIHByb2plbiBkcmlmdCwgYW5kIGFcbiAqIG5pZ2h0bHkgZGVwZW5kZW5jeS11cGdyYWRlIHdvcmtmbG93LlxuICovXG5leHBvcnQgY2xhc3MgSmF2YU1hdmVuUHJvamVjdCBleHRlbmRzIGphdmEuSmF2YVByb2plY3Qge1xuICBwdWJsaWMgcmVhZG9ubHkgdXBncmFkZVRhc2s6IFRhc2s7XG4gIHB1YmxpYyByZWFkb25seSBidWlsZFZlcmlmeVdvcmtmbG93OiBnaXRodWIuVGFza1dvcmtmbG93O1xuXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM6IEphdmFNYXZlblByb2plY3RPcHRpb25zKSB7XG4gICAgc3VwZXIoe1xuICAgICAgbmFtZTogb3B0aW9ucy5uYW1lLFxuICAgICAgZ3JvdXBJZDogb3B0aW9ucy5ncm91cElkLFxuICAgICAgYXJ0aWZhY3RJZDogb3B0aW9ucy5hcnRpZmFjdElkLFxuICAgICAgdmVyc2lvbjogb3B0aW9ucy52ZXJzaW9uID8/ICcwLjEuMCcsXG4gICAgICBwcm9qZW5DcmVkZW50aWFsczogZ2l0aHViLkdpdGh1YkNyZWRlbnRpYWxzLmZyb21QZXJzb25hbEFjY2Vzc1Rva2VuKHtcbiAgICAgICAgc2VjcmV0OiBvcHRpb25zLmdoZVRva2VuU2VjcmV0ID8/IERFRkFVTFRfR0hFX1RPS0VOX1NFQ1JFVCxcbiAgICAgIH0pLFxuICAgIH0pO1xuXG4gICAgY29uc3QgZ2ggPSB0aGlzLmdpdGh1YjtcbiAgICBpZiAoIWdoKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0phdmFNYXZlblByb2plY3QgcmVxdWlyZXMgR2l0SHViIGludGVncmF0aW9uJyk7XG4gICAgfVxuXG4gICAgY29uc3QgcG9zdEJ1aWxkU3RlcHMgPSBbLi4uZHJpZnRDaGVja1N0ZXBzKCldO1xuICAgIGlmIChvcHRpb25zLnNvbmFyUHJvamVjdEtleSkge1xuICAgICAgcG9zdEJ1aWxkU3RlcHMucHVzaCh7XG4gICAgICAgIG5hbWU6ICdTb25hclF1YmUgc2NhbicsXG4gICAgICAgIHJ1bjogYG12biAtQiBzb25hcjpzb25hciAtRHNvbmFyLnByb2plY3RLZXk9JHtvcHRpb25zLnNvbmFyUHJvamVjdEtleX1gLFxuICAgICAgICBlbnY6IHsgU09OQVJfVE9LRU46ICcke3sgc2VjcmV0cy5TT05BUl9UT0tFTiB9fScgfSxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHRoaXMuYnVpbGRWZXJpZnlXb3JrZmxvdyA9IG5ldyBnaXRodWIuVGFza1dvcmtmbG93KGdoLCB7XG4gICAgICBuYW1lOiAnYnVpbGQnLFxuICAgICAgam9iSWQ6ICdidWlsZCcsXG4gICAgICB0YXNrOiB0aGlzLmJ1aWxkVGFzayxcbiAgICAgIHRyaWdnZXJzOiB7IHB1bGxSZXF1ZXN0OiB7fSwgd29ya2Zsb3dEaXNwYXRjaDoge30gfSxcbiAgICAgIHBlcm1pc3Npb25zOiB7IGNvbnRlbnRzOiBnaXRodWIud29ya2Zsb3dzLkpvYlBlcm1pc3Npb24uUkVBRCB9LFxuICAgICAgcG9zdEJ1aWxkU3RlcHMsXG4gICAgfSk7XG5cbiAgICB0aGlzLnVwZ3JhZGVUYXNrID0gdGhpcy5hZGRUYXNrKCd1cGdyYWRlJywge1xuICAgICAgZXhlYzogJ212biAtQiB2ZXJzaW9uczp1c2UtbGF0ZXN0LXJlbGVhc2VzIHZlcnNpb25zOnVwZGF0ZS1wcm9wZXJ0aWVzJyxcbiAgICB9KTtcbiAgICBuZXcgVXBncmFkZVdvcmtmbG93KHRoaXMsIHsgdGFzazogdGhpcy51cGdyYWRlVGFzayB9KTtcbiAgfVxufVxuIl19
@@ -0,0 +1,9 @@
1
+ import { JavaMavenProject } from './java-maven-base';
2
+ import { JavaServiceProjectOptions } from './options';
3
+ /**
4
+ * Springboot service application. Publishes to Docker Hub (never Maven
5
+ * Central); publish and deploy are both manual-dispatch, not on every merge.
6
+ */
7
+ export declare class JavaServiceProject extends JavaMavenProject {
8
+ constructor(options: JavaServiceProjectOptions);
9
+ }
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.JavaServiceProject = void 0;
4
+ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
5
+ const cdk_deploy_hook_1 = require("./components/cdk-deploy-hook");
6
+ const docker_publish_1 = require("./components/docker-publish");
7
+ const flyway_migration_1 = require("./components/flyway-migration");
8
+ const java_maven_base_1 = require("./java-maven-base");
9
+ /**
10
+ * Springboot service application. Publishes to Docker Hub (never Maven
11
+ * Central); publish and deploy are both manual-dispatch, not on every merge.
12
+ */
13
+ class JavaServiceProject extends java_maven_base_1.JavaMavenProject {
14
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@xpertss/projen-types.JavaServiceProject", version: "0.0.0" };
15
+ constructor(options) {
16
+ super(options);
17
+ this.pom.addDependency('org.springframework.boot/spring-boot-starter-web@^3');
18
+ new docker_publish_1.DockerPublish(this, { dockerRegistry: options.dockerRegistry });
19
+ if (options.useFlyway ?? true) {
20
+ new flyway_migration_1.FlywayMigration(this);
21
+ }
22
+ const cdkDeployHook = options.cdkDeployHook ?? { enabled: true };
23
+ if (cdkDeployHook.enabled ?? true) {
24
+ new cdk_deploy_hook_1.CdkDeployHook(this, options.environments ?? ['prod'], cdkDeployHook);
25
+ }
26
+ }
27
+ }
28
+ exports.JavaServiceProject = JavaServiceProject;
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiamF2YS1zZXJ2aWNlLXByb2plY3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvamF2YS9qYXZhLXNlcnZpY2UtcHJvamVjdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsa0VBQTZEO0FBQzdELGdFQUE0RDtBQUM1RCxvRUFBZ0U7QUFDaEUsdURBQXFEO0FBR3JEOzs7R0FHRztBQUNILE1BQWEsa0JBQW1CLFNBQVEsa0NBQWdCOztJQUN0RCxZQUFZLE9BQWtDO1FBQzVDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUVmLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLHFEQUFxRCxDQUFDLENBQUM7UUFFOUUsSUFBSSw4QkFBYSxDQUFDLElBQUksRUFBRSxFQUFFLGNBQWMsRUFBRSxPQUFPLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQztRQUVwRSxJQUFJLE9BQU8sQ0FBQyxTQUFTLElBQUksSUFBSSxFQUFFLENBQUM7WUFDOUIsSUFBSSxrQ0FBZSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzVCLENBQUM7UUFFRCxNQUFNLGFBQWEsR0FBRyxPQUFPLENBQUMsYUFBYSxJQUFJLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxDQUFDO1FBQ2pFLElBQUksYUFBYSxDQUFDLE9BQU8sSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUNsQyxJQUFJLCtCQUFhLENBQ2YsSUFBSSxFQUNKLE9BQU8sQ0FBQyxZQUFZLElBQUksQ0FBQyxNQUFNLENBQUMsRUFDaEMsYUFBYSxDQUNkLENBQUM7UUFDSixDQUFDO0lBQ0gsQ0FBQzs7QUFwQkgsZ0RBcUJDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2RrRGVwbG95SG9vayB9IGZyb20gJy4vY29tcG9uZW50cy9jZGstZGVwbG95LWhvb2snO1xuaW1wb3J0IHsgRG9ja2VyUHVibGlzaCB9IGZyb20gJy4vY29tcG9uZW50cy9kb2NrZXItcHVibGlzaCc7XG5pbXBvcnQgeyBGbHl3YXlNaWdyYXRpb24gfSBmcm9tICcuL2NvbXBvbmVudHMvZmx5d2F5LW1pZ3JhdGlvbic7XG5pbXBvcnQgeyBKYXZhTWF2ZW5Qcm9qZWN0IH0gZnJvbSAnLi9qYXZhLW1hdmVuLWJhc2UnO1xuaW1wb3J0IHsgSmF2YVNlcnZpY2VQcm9qZWN0T3B0aW9ucyB9IGZyb20gJy4vb3B0aW9ucyc7XG5cbi8qKlxuICogU3ByaW5nYm9vdCBzZXJ2aWNlIGFwcGxpY2F0aW9uLiBQdWJsaXNoZXMgdG8gRG9ja2VyIEh1YiAobmV2ZXIgTWF2ZW5cbiAqIENlbnRyYWwpOyBwdWJsaXNoIGFuZCBkZXBsb3kgYXJlIGJvdGggbWFudWFsLWRpc3BhdGNoLCBub3Qgb24gZXZlcnkgbWVyZ2UuXG4gKi9cbmV4cG9ydCBjbGFzcyBKYXZhU2VydmljZVByb2plY3QgZXh0ZW5kcyBKYXZhTWF2ZW5Qcm9qZWN0IHtcbiAgY29uc3RydWN0b3Iob3B0aW9uczogSmF2YVNlcnZpY2VQcm9qZWN0T3B0aW9ucykge1xuICAgIHN1cGVyKG9wdGlvbnMpO1xuXG4gICAgdGhpcy5wb20uYWRkRGVwZW5kZW5jeSgnb3JnLnNwcmluZ2ZyYW1ld29yay5ib290L3NwcmluZy1ib290LXN0YXJ0ZXItd2ViQF4zJyk7XG5cbiAgICBuZXcgRG9ja2VyUHVibGlzaCh0aGlzLCB7IGRvY2tlclJlZ2lzdHJ5OiBvcHRpb25zLmRvY2tlclJlZ2lzdHJ5IH0pO1xuXG4gICAgaWYgKG9wdGlvbnMudXNlRmx5d2F5ID8/IHRydWUpIHtcbiAgICAgIG5ldyBGbHl3YXlNaWdyYXRpb24odGhpcyk7XG4gICAgfVxuXG4gICAgY29uc3QgY2RrRGVwbG95SG9vayA9IG9wdGlvbnMuY2RrRGVwbG95SG9vayA/PyB7IGVuYWJsZWQ6IHRydWUgfTtcbiAgICBpZiAoY2RrRGVwbG95SG9vay5lbmFibGVkID8/IHRydWUpIHtcbiAgICAgIG5ldyBDZGtEZXBsb3lIb29rKFxuICAgICAgICB0aGlzLFxuICAgICAgICBvcHRpb25zLmVudmlyb25tZW50cyA/PyBbJ3Byb2QnXSxcbiAgICAgICAgY2RrRGVwbG95SG9vayxcbiAgICAgICk7XG4gICAgfVxuICB9XG59XG4iXX0=
@@ -0,0 +1,43 @@
1
+ import { EnvironmentOptions } from '../common/environment-options';
2
+ export interface CommonJavaOptions {
3
+ readonly name: string;
4
+ readonly groupId: string;
5
+ readonly artifactId: string;
6
+ /** @default "0.1.0" */
7
+ readonly version?: string;
8
+ /** SonarQube project key. If unset, the sonar scan step is skipped. */
9
+ readonly sonarProjectKey?: string;
10
+ /** @default "PROJEN_GITHUB_TOKEN" */
11
+ readonly gheTokenSecret?: string;
12
+ }
13
+ export interface JavaLibraryProjectOptions extends CommonJavaOptions {
14
+ /** Use Maven Central's OIDC trusted-publishing flow instead of secret-based GPG signing. */
15
+ readonly mavenCentralOidc?: boolean;
16
+ /** @default true */
17
+ readonly publishCodeIndex?: boolean;
18
+ }
19
+ export interface CdkDeployHookOptions {
20
+ /** @default true */
21
+ readonly enabled?: boolean;
22
+ /** The companion CDK infra/app repo (owner/repo) that owns the actual infrastructure. */
23
+ readonly targetRepo?: string;
24
+ }
25
+ export interface JavaServiceProjectOptions extends CommonJavaOptions {
26
+ /** @default "docker.io" */
27
+ readonly dockerRegistry?: string;
28
+ /** @default true */
29
+ readonly useFlyway?: boolean;
30
+ /** @default { enabled: true } */
31
+ readonly cdkDeployHook?: CdkDeployHookOptions;
32
+ /**
33
+ * Deploy targets to offer on the `CdkDeployHook`'s manual-dispatch
34
+ * workflow, when the hook is enabled.
35
+ *
36
+ * @default ["prod"]
37
+ */
38
+ readonly environments?: (string | EnvironmentOptions)[];
39
+ }
40
+ export interface JavaAppProjectOptions extends CommonJavaOptions {
41
+ /** @default "https://maven.pkg.github.com/OWNER/REPO" (derived from the repository URL) */
42
+ readonly ghPackagesRegistry?: string;
43
+ }