Merge pull request #751 from Alvise88/add-initial-maven-support
This commit is contained in:
commit
0ba7c1fb44
@ -19,6 +19,7 @@
|
||||
- [git](./git.md) - Git operations
|
||||
- [go](./go.md) - Go build operations
|
||||
- [io](./io.md) - IO operations
|
||||
- [java/maven](./java/maven.md) - Maven is a build automation tool for Java
|
||||
- [js/yarn](./js/yarn.md) - Yarn is a package manager for Javascript applications
|
||||
- [kubernetes](./kubernetes/README.md) - Kubernetes client operations
|
||||
- [kubernetes/helm](./kubernetes/helm.md) - Helm package manager
|
||||
|
32
docs/reference/universe/java/maven.md
Normal file
32
docs/reference/universe/java/maven.md
Normal file
@ -0,0 +1,32 @@
|
||||
---
|
||||
sidebar_label: maven
|
||||
---
|
||||
|
||||
# alpha.dagger.io/java/maven
|
||||
|
||||
Maven is a build automation tool for Java
|
||||
|
||||
```cue
|
||||
import "alpha.dagger.io/java/maven"
|
||||
```
|
||||
|
||||
## maven.#Project
|
||||
|
||||
A Maven project
|
||||
|
||||
### maven.#Project Inputs
|
||||
|
||||
| Name | Type | Description |
|
||||
| ------------- |:-------------: |:-------------: |
|
||||
|*source* | `dagger.#Artifact` |Application source code |
|
||||
|*package* | `struct` |Extra alpine packages to install |
|
||||
|*env* | `struct` |Environment variables |
|
||||
|*phases* | `*["package"] \| []` |- |
|
||||
|*goals* | `*[] \| []` |- |
|
||||
|*args* | `*[] \| []` |Optional arguments for the script |
|
||||
|
||||
### maven.#Project Outputs
|
||||
|
||||
| Name | Type | Description |
|
||||
| ------------- |:-------------: |:-------------: |
|
||||
|*build* | `struct` |Build output directory |
|
2
stdlib/.dagger/env/java-maven/.gitignore
vendored
Normal file
2
stdlib/.dagger/env/java-maven/.gitignore
vendored
Normal file
@ -0,0 +1,2 @@
|
||||
# dagger state
|
||||
state/**
|
28
stdlib/.dagger/env/java-maven/values.yaml
vendored
Normal file
28
stdlib/.dagger/env/java-maven/values.yaml
vendored
Normal file
@ -0,0 +1,28 @@
|
||||
plan:
|
||||
module: ./java/maven
|
||||
package: ./tests
|
||||
name: java-maven
|
||||
inputs:
|
||||
TestData:
|
||||
dir:
|
||||
path: ./java/maven/tests/testdata
|
||||
sops:
|
||||
kms: []
|
||||
gcp_kms: []
|
||||
azure_kv: []
|
||||
hc_vault: []
|
||||
age:
|
||||
- recipient: age1gxwmtwahzwdmrskhf90ppwlnze30lgpm056kuesrxzeuyclrwvpsupwtpk
|
||||
enc: |
|
||||
-----BEGIN AGE ENCRYPTED FILE-----
|
||||
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSB3VURHb25rcVdWRmMyWmVk
|
||||
c0t4MEZscDdMWEdqMWNPRm0zRG91cnh4cnlvCllCYy9nS2F0ejZFQXBLZzgxU29n
|
||||
V0tEcEJkQUFzdHczV3MrQjFpUHMzT1kKLS0tIFJvY2QvUjJlRE9hTTJWa1NkK2l4
|
||||
UjFhYnZNdUxBNEtzWkVvMUoweUFnREEKbs/IGlNmDk8e3ibJSoIcE95txghXwsso
|
||||
DL281EMf0V+ARsJY2CiehZsZB+xX7y+YfyQyoWx0xMN7bCgPu2snGg==
|
||||
-----END AGE ENCRYPTED FILE-----
|
||||
lastmodified: "2021-06-29T16:06:47Z"
|
||||
mac: ENC[AES256_GCM,data:DudrYOLr/ymf10B4UzjRfe1+n/hw7KCSSIbzAGcc3kmN/KplkCPYi3n5HCX1XkMOB1mQp9QD+UOQGL5CYPtqnZZKu62JNfbeSqU26BKU97aqL0F2+lPqaYsjSeCAbgUs9O/30A7QErlJiXuzTYC1WcTjpTr0RTeNoHmWKsqZ5ug=,iv:7e1XmOfxyKIOguzDxqQ75nFnV3GZ1vpvz5S5P1O+4Xo=,tag:f6Vb8e721uLyvLfCwE/JEg==,type:str]
|
||||
pgp: []
|
||||
encrypted_suffix: secret
|
||||
version: 3.7.1
|
69
stdlib/java/maven/maven.cue
Normal file
69
stdlib/java/maven/maven.cue
Normal file
@ -0,0 +1,69 @@
|
||||
// Maven is a build automation tool for Java
|
||||
package maven
|
||||
|
||||
import (
|
||||
"strings"
|
||||
|
||||
"alpha.dagger.io/dagger"
|
||||
"alpha.dagger.io/alpine"
|
||||
"alpha.dagger.io/os"
|
||||
)
|
||||
|
||||
// A Maven project
|
||||
#Project: {
|
||||
|
||||
// Application source code
|
||||
source: dagger.#Artifact @dagger(input)
|
||||
|
||||
// Extra alpine packages to install
|
||||
package: {
|
||||
[string]: true | false | string
|
||||
} @dagger(input)
|
||||
|
||||
// Environment variables
|
||||
env: {
|
||||
[string]: string
|
||||
} @dagger(input)
|
||||
|
||||
phases: [...string] | *["package"] @dagger(input)
|
||||
goals: [...string] | *[] @dagger(input)
|
||||
|
||||
// Optional arguments for the script
|
||||
args: [...string] | *[] @dagger(input)
|
||||
|
||||
// Build output directory
|
||||
build: os.#Dir & {
|
||||
from: ctr
|
||||
path: "/build"
|
||||
} @dagger(output)
|
||||
|
||||
ctr: os.#Container & {
|
||||
image: alpine.#Image & {
|
||||
"package": package & {
|
||||
bash: "=~5.1"
|
||||
openjdk11: "=~11.0.9"
|
||||
maven: "=~3.6.3"
|
||||
}
|
||||
}
|
||||
shell: path: "/bin/bash"
|
||||
command: """
|
||||
opts=( $(echo $MAVEN_ARGS) )
|
||||
mvn $MAVEN_GOALS $MAVEN_PHASES ${opts[@]}
|
||||
result=$?
|
||||
modules=$(mvn -Dexec.executable='pwd' -Dexec.args='${project.artifactId}' exec:exec -q)
|
||||
for module in $modules;do
|
||||
source=$(echo "$module/target" | tr -s /)
|
||||
target=$(echo "/build/$module" | tr -s /)
|
||||
mkdir -p $target;cp -a $source $target 2>/dev/null || :
|
||||
done
|
||||
exit $result
|
||||
"""
|
||||
"env": env & {
|
||||
MAVEN_ARGS: strings.Join(args, "\n")
|
||||
MAVEN_PHASES: strings.Join(phases, "\n")
|
||||
MAVEN_GOALS: strings.Join(goals, "\n")
|
||||
}
|
||||
dir: "/"
|
||||
copy: "/": from: source
|
||||
}
|
||||
}
|
43
stdlib/java/maven/tests/maven.cue
Normal file
43
stdlib/java/maven/tests/maven.cue
Normal file
@ -0,0 +1,43 @@
|
||||
package maven
|
||||
|
||||
import (
|
||||
"strings"
|
||||
|
||||
"alpha.dagger.io/dagger"
|
||||
"alpha.dagger.io/alpine"
|
||||
"alpha.dagger.io/os"
|
||||
)
|
||||
|
||||
TestData: dagger.#Artifact
|
||||
|
||||
TestConfig: mavenOpts: strings.Join([
|
||||
"-client",
|
||||
"-XX:+TieredCompilation",
|
||||
"-XX:TieredStopAtLevel=1",
|
||||
"-Xverify:none",
|
||||
"-Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn -Dorg.slf4j.simpleLogger.showDateTime=true",
|
||||
"-Dorg.slf4j.simpleLogger.showDateTime=true -Dorg.slf4j.simpleLogger.dateTimeFormat=HH:mm:ss",
|
||||
], " ")
|
||||
|
||||
TestSpringBoot: {
|
||||
project: #Project & {
|
||||
source: TestData
|
||||
|
||||
phases: ["install"]
|
||||
|
||||
env: MAVEN_OPTS: TestConfig.mavenOpts
|
||||
|
||||
args: ["--batch-mode"]
|
||||
}
|
||||
|
||||
test: os.#Container & {
|
||||
image: alpine.#Image & {
|
||||
package: bash: "=5.1.0-r0"
|
||||
}
|
||||
copy: "/build": from: project.build
|
||||
command: """
|
||||
count=$(ls -1 /build/**/*.jar 2>/dev/null | wc -l)
|
||||
test "$count" != "0"
|
||||
"""
|
||||
}
|
||||
}
|
33
stdlib/java/maven/tests/testdata/.gitignore
vendored
Normal file
33
stdlib/java/maven/tests/testdata/.gitignore
vendored
Normal file
@ -0,0 +1,33 @@
|
||||
HELP.md
|
||||
target/
|
||||
!.mvn/wrapper/maven-wrapper.jar
|
||||
!**/src/main/**/target/
|
||||
!**/src/test/**/target/
|
||||
|
||||
### STS ###
|
||||
.apt_generated
|
||||
.classpath
|
||||
.factorypath
|
||||
.project
|
||||
.settings
|
||||
.springBeans
|
||||
.sts4-cache
|
||||
|
||||
### IntelliJ IDEA ###
|
||||
.idea
|
||||
*.iws
|
||||
*.iml
|
||||
*.ipr
|
||||
|
||||
### NetBeans ###
|
||||
/nbproject/private/
|
||||
/nbbuild/
|
||||
/dist/
|
||||
/nbdist/
|
||||
/.nb-gradle/
|
||||
build/
|
||||
!**/src/main/**/build/
|
||||
!**/src/test/**/build/
|
||||
|
||||
### VS Code ###
|
||||
.vscode/
|
41
stdlib/java/maven/tests/testdata/pom.xml
vendored
Normal file
41
stdlib/java/maven/tests/testdata/pom.xml
vendored
Normal file
@ -0,0 +1,41 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<parent>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-parent</artifactId>
|
||||
<version>2.5.2</version>
|
||||
<relativePath/> <!-- lookup parent from repository -->
|
||||
</parent>
|
||||
<groupId>io.dagger.maven</groupId>
|
||||
<artifactId>spring-boot-test</artifactId>
|
||||
<version>0.0.1-SNAPSHOT</version>
|
||||
<name>spring-boot-test</name>
|
||||
<description>Dagger maven spring boot test</description>
|
||||
<properties>
|
||||
<java.version>11</java.version>
|
||||
</properties>
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter</artifactId>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-test</artifactId>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
<build>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-maven-plugin</artifactId>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
|
||||
</project>
|
@ -0,0 +1,13 @@
|
||||
package io.dagger.maven.springboottest;
|
||||
|
||||
import org.springframework.boot.SpringApplication;
|
||||
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
||||
|
||||
@SpringBootApplication
|
||||
public class SpringBootTestApplication {
|
||||
|
||||
public static void main(String[] args) {
|
||||
SpringApplication.run(SpringBootTestApplication.class, args);
|
||||
}
|
||||
|
||||
}
|
1
stdlib/java/maven/tests/testdata/src/main/resources/application.properties
vendored
Normal file
1
stdlib/java/maven/tests/testdata/src/main/resources/application.properties
vendored
Normal file
@ -0,0 +1 @@
|
||||
|
@ -0,0 +1,13 @@
|
||||
package io.dagger.maven.springboottest;
|
||||
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.springframework.boot.test.context.SpringBootTest;
|
||||
|
||||
@SpringBootTest
|
||||
class SpringBootTestApplicationTests {
|
||||
|
||||
@Test
|
||||
void contextLoads() {
|
||||
}
|
||||
|
||||
}
|
@ -21,6 +21,10 @@ setup() {
|
||||
dagger -e js-yarn up
|
||||
}
|
||||
|
||||
@test "java/maven" {
|
||||
dagger -e java-maven up
|
||||
}
|
||||
|
||||
@test "alpine" {
|
||||
dagger -e alpine up
|
||||
}
|
||||
|
Reference in New Issue
Block a user