# All files / src pdk-pipeline-java-project.ts

100% Statements 13/13
50% Branches 1/2
100% Functions 1/1
100% Lines 13/13

Press n or j to go to the next uncovered block, b, p or k for the previous block.

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77

    4x
    4x
    4x

    4x

    3x

    3x
    3x

    3x
    3x
    3x

    3x

    3x

    3x

     /*! Copyright [Amazon.com](http://amazon.com/), Inc. or its affiliates. All Rights Reserved.
    SPDX-License-Identifier: Apache-2.0 */
    import * as path from "path";
    import { SampleDir } from "projen";
    import { AwsCdkJavaApp, AwsCdkJavaAppOptions } from "projen/lib/awscdk";

    /**
     * Configuration options for the PDKPipelineJavaProject.
     */
    export interface PDKPipelineJavaProjectOptions extends AwsCdkJavaAppOptions {}

    /**
     * Synthesizes a Java Project with a CI/CD pipeline.
     *
     * @pjid pdk-pipeline-java
     */
    export class PDKPipelineJavaProject extends AwsCdkJavaApp {
      constructor(options: PDKPipelineJavaProjectOptions) {
        super({
          sample: false,
          junit: false,
          ...options,
          mainClass:
            options.mainClass !== "org.acme.MyApp"
              ? options.mainClass
              : 'software.aws.Pipeline -Dexec.classpathScope="test"',
        });

        this.addDependency("software.aws.awsprototypingsdk/aws-prototyping-sdk@^0");
        this.addDependency("io.github.cdklabs/cdknag@^2");

        this.testTask.exec("mvn test");
        this.addTestDependency("org.junit.jupiter/junit-jupiter-api@5.7.0");
        this.addTestDependency("org.junit.jupiter/junit-jupiter-engine@5.7.0");

        const mainPackage = this.mainClass
          .split(" ")[0]
          .split(".")
          .slice(0, -1)
          .join(".");
        new SampleDir(
          this,
          path.join("src", "main", "java", ...mainPackage.split(".")),
          {
            sourceDir: path.join(
              __dirname,
              "..",
              "samples",
              "java",
              "src",
              "main",
              "java",
              "software",
              "aws"
            ),
          }
        );
        new SampleDir(
          this,
          path.join("src", "test", "java", ...mainPackage.split(".")),
          {
            sourceDir: path.join(
              __dirname,
              "..",
              "samples",
              "java",
              "src",
              "test",
              "java",
              "software",
              "aws"
            ),
          }
        );
      }
    }