aws / aws/aws-lambda-builders

JavaMavenWorkflow fails Required target/classes directory was not produced from 'mvn package'

オープン
#203 コメント 3 件 リアクション 0 件 担当者 0 名 GitHub で見る
maintainer/need-response type/bug
主要言語
Python
スター
380
フォーク
161
平均マージ
1日 1時間
マージ済み PR(30日)
2

説明

**Description:**

### Steps to reproduce
1. Clone repository: git@github.com:francis-pang/expense-tally.git
2. Check out branch _feature/aws-sam_
2. Navigate to ./aws-lambda/get-expenses
3. Build application via command `sam build --use-container --template-file template.yaml`

**Observed result:**
```
[INFO] Reactor Summary for expense-tally 49-SNAPSHOT:
[INFO]
[INFO] expense-tally ...................................... SUCCESS [01:40 min]
[INFO] expense-tally-model ................................ SUCCESS [01:03 min]
[INFO] csv-parser ......................................... SUCCESS [ 1.795 s]
[INFO] expense-manager .................................... SUCCESS [ 9.474 s]
[INFO] expense-reconciliator .............................. SUCCESS [ 2.932 s]
[INFO] expense-tally-cli .................................. SUCCESS [01:21 min]
[INFO] aws-lambda ......................................... SUCCESS [ 3.556 s]
[INFO] aws-lambda-get-expenses ............................ SUCCESS [ 0.373 s]
[INFO] aws-lambda-s3-db-file-update ....................... SUCCESS [01:10 min]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 05:34 min
[INFO] Finished at: 2020-10-18T06:37:37Z
[INFO] ------------------------------------------------------------------------
JavaMavenWorkflow:MavenBuild succeeded
Running JavaMavenWorkflow:MavenCopyDependency
JavaMavenWorkflow:MavenCopyDependency succeeded
Running JavaMavenWorkflow:MavenCopyArtifacts
JavaMavenWorkflow:MavenCopyArtifacts failed
Traceback (most recent call last):
File "/usr/local/opt/sam-cli/lib64/python3.7/site-packages/aws_lambda_builders/workflow.py", line 269, in run
action.execute()
File "/usr/local/opt/sam-cli/lib64/python3.7/site-packages/aws_lambda_builders/workflows/java_maven/actions.py", line 69, in execute
self._copy_artifacts()
File "/usr/local/opt/sam-cli/lib64/python3.7/site-packages/aws_lambda_builders/workflows/java_maven/actions.py", line 76, in _copy_artifacts
raise ActionFailedError("Required target/classes directory was not produced from 'mvn package'")
aws_lambda_builders.actions.ActionFailedError: Required target/classes directory was not produced from 'mvn package'
Builder workflow failed
Traceback (most recent call last):
File "/usr/local/opt/sam-cli/lib64/python3.7/site-packages/aws_lambda_builders/workflow.py", line 269, in run
action.execute()
File "/usr/local/opt/sam-cli/lib64/python3.7/site-packages/aws_lambda_builders/workflows/java_maven/actions.py", line 69, in execute
self._copy_artifacts()
File "/usr/local/opt/sam-cli/lib64/python3.7/site-packages/aws_lambda_builders/workflows/java_maven/actions.py", line 76, in _copy_artifacts
raise ActionFailedError("Required target/classes directory was not produced from 'mvn package'")
aws_lambda_builders.actions.ActionFailedError: Required target/classes directory was not produced from 'mvn package'
```

**Expected result:**
Build is successful after

**Additional environment details (Ex: Windows, Mac, Amazon Linux etc)**
Project directory is as below:
only showing the relevant one, full project directory is at [aws-sam branch](https://github.com/francis-pang/expense-tally/tree/feature/aws-sam)
```
.
├── LICENSE
├── README.md
├── aws-lambda
│   ├── get-expenses
│   │   ├── pom.xml
│   │   ├── src
│   │   │   └── main
│   │   │   └── java
│   │   │   └── expense_tally
│   │   │   └── views
│   │   │   └── aws
│   │   │   └── lambda
│   │   │   └── HttpGetExpensesHandler.java
│   │   └── template.yaml
│   ├── pom.xml
│   └── s3-db-file-update
│   ├── pom.xml
│   └── src
│   └── main
│   └── java
│   └── expense_tally
│   └── views
│   └── aws
│   └── lambda
│   └── NewSqlDbFileS3Handler.java
├── docs
│   ├── expenses.yaml
│   └── use-case.txt
├── expense-tally.iml
├── pom.xml
└── sonar-project.properties
```

Contents of [template.yaml:](https://github.com/francis-pang/expense-tally/blob/feature/aws-sam/aws-lambda/get-expenses/template.yaml)
```yaml
AWSTemplateFormatVersion: '2010-09-09'
Transform: AWS::Serverless-2016-10-31
Description: >
expense-tally Get Discrepant Expenses Function
Globals:
Function:
Timeout: 15
MemorySize: 256
Runtime: java11

Resources:
GetDiscrepantExpensesFunction:
Type: AWS::Serverless::Function # More info about Function Resource: https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#awsserverlessfunction
Properties:
Description: 'Retrieve all the mismatching transactions'
CodeUri: ../../
Handler: expense_tally.views.aws.lambda.HttpGetExpensesHandler::handleRequest
Events:
GetDiscrepantExpensesApi:
Type: Api
Properties:
Path: '/getDiscrepantExpenses'
Method: get

Outputs:
GetDiscrepantExpensesFunction:
Description: "Get Discrepant Expenses Function ARN"
Value: !GetAtt GetDiscrepantExpensesFunction.Arn
HelloWorldFunctionIamRole:
Description: "Implicit IAM Role created for Get Discrepant Expenses Function function"
Value: !GetAtt GetDiscrepantExpensesFunction.Arn

```

コントリビューションガイド

コントリビューションガイドを開く

調査の方向性

まず `aws-lambda/get-expenses` で `sam build --use-container --template-file template.yaml` を再現し、次に `aws-lambda/get-expenses/template.yaml`、その `pom.xml`、生成された `target/classes` ディレクトリを調査します。Java Maven ワークフローによって必要なディレクトリが生成され、SAM build が正常に完了すれば完了です。

索引モデルが issue の本文から書いたものです。

評価

技術スタック
aws, java
領域
build-system, cloud
issue の種類
バグ
難易度
3/5
見積もり時間
1〜2日
活発さ
停滞
明瞭さ
説明が足りない
初心者へのやさしさ
30/100

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。