Skip to content

Commit 55fe2f2

Browse files
committed
feature: amp-126 init project
1 parent a964a68 commit 55fe2f2

File tree

18 files changed

+382
-0
lines changed

18 files changed

+382
-0
lines changed

build.gradle

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
plugins {
2+
id 'application'
3+
id 'java'
4+
id 'org.springframework.boot' version '4.0.0'
5+
id 'io.spring.dependency-management' version '1.1.7'
6+
id 'jacoco'
7+
id 'maven-publish'
8+
id 'com.github.ben-manes.versions' version '0.53.0'
9+
id 'org.cyclonedx.bom' version '2.4.1'
10+
id 'com.gorylenko.gradle-git-properties' version '2.5.3'
11+
id 'com.avast.gradle.docker-compose' version '0.17.12'
12+
}
13+
14+
group = 'uk.gov.hmcts.cp'
15+
version = System.getProperty('ARTEFACT_VERSION') ?: '0.0.999'
16+
17+
apply {
18+
from("$rootDir/gradle/dependencies/java-core.gradle")
19+
from("$rootDir/gradle/dependencies/spring-core.gradle")
20+
21+
from("$rootDir/gradle/github/repositories.gradle")
22+
from("$rootDir/gradle/github/java.gradle")
23+
from("$rootDir/gradle/github/dependency.gradle")
24+
from("$rootDir/gradle/github/pmd.gradle")
25+
from("$rootDir/gradle/github/test.gradle")
26+
from("$rootDir/gradle/github/jar.gradle")
27+
28+
from("$rootDir/gradle/tasks/apitest.gradle")
29+
from("$rootDir/gradle/tasks/docker.gradle")
30+
}
31+
32+
springBoot {
33+
buildInfo {
34+
properties {
35+
name = project.name
36+
version = project.version.toString()
37+
}
38+
}
39+
}
40+
41+
dependencies {
42+
implementation('uk.gov.hmcts.cp:api-cp-crime-courthearing-cases-results:0.0.0-a65d290')
43+
}

docker/Dockerfile

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
# Dockerfile (project root)
2+
FROM eclipse-temurin:21-jre-alpine
3+
4+
WORKDIR /app
5+
6+
COPY build/libs/*.jar /app/
7+
8+
EXPOSE ${SERVER_PORT:-8082}
9+
10+
ENTRYPOINT ["sh","-c","exec java -jar $(ls /app/*.jar | grep -v 'plain' | head -n1)"]

docker/docker-compose.yml

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
services:
2+
app:
3+
container_name: app
4+
build:
5+
context: ..
6+
dockerfile: docker/Dockerfile
7+
ports:
8+
- "8082:8082"
9+
environment:
10+
SERVER_PORT: 8082
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
ext {
2+
log4JVersion = "2.24.3"
3+
logbackVersion = "1.5.18"
4+
lombokVersion = "1.18.38"
5+
mapstructVersion = "1.5.5.Final"
6+
}
7+
8+
dependencies {
9+
implementation 'net.logstash.logback:logstash-logback-encoder:8.1'
10+
implementation 'org.apache.logging.log4j:log4j-to-slf4j'
11+
implementation 'ch.qos.logback:logback-classic'
12+
implementation 'ch.qos.logback:logback-core'
13+
14+
compileOnly group: 'org.projectlombok', name: 'lombok', version: lombokVersion
15+
annotationProcessor group: 'org.projectlombok', name: 'lombok', version: lombokVersion
16+
testCompileOnly group: 'org.projectlombok', name: 'lombok', version: lombokVersion
17+
testAnnotationProcessor group: 'org.projectlombok', name: 'lombok', version: lombokVersion
18+
19+
implementation "org.mapstruct:mapstruct:$mapstructVersion"
20+
annotationProcessor "org.mapstruct:mapstruct-processor:$mapstructVersion"
21+
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
dependencies {
2+
implementation 'org.springframework.boot:spring-boot-starter-web'
3+
implementation 'org.springframework.boot:spring-boot-starter-aspectj'
4+
5+
testImplementation "org.springframework.boot:spring-boot-starter-webmvc-test"
6+
7+
testImplementation('org.springframework.boot:spring-boot-starter-test') {
8+
exclude group: 'junit', module: 'junit'
9+
exclude group: 'org.junit.vintage', module: 'junit-vintage-engine'
10+
}
11+
}

gradle/github/dependency.gradle

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
// check dependencies upon release ONLY
2+
tasks.named("dependencyUpdates").configure {
3+
def isNonStable = { String version ->
4+
def stableKeyword = ['RELEASE', 'FINAL', 'GA'].any { qualifier -> version.toUpperCase().contains(qualifier) }
5+
def regex = /^[0-9,.v-]+$/
6+
return !stableKeyword && !(version ==~ regex)
7+
}
8+
rejectVersionIf {
9+
isNonStable(it.candidate.version) && !isNonStable(it.currentVersion)
10+
}
11+
}

gradle/github/jar.gradle

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
jar {
2+
enabled = true
3+
archiveClassifier.set('plain')
4+
manifest {
5+
attributes(
6+
'Implementation-Title': project.name,
7+
'Implementation-Version': project.version.toString()
8+
)
9+
}
10+
if (file("CHANGELOG.md").exists()) {
11+
from('CHANGELOG.md') {
12+
into 'META-INF'
13+
}
14+
} else {
15+
println "⚠️ CHANGELOG.md not found, skipping inclusion in JAR"
16+
}
17+
}
18+
19+
bootJar {
20+
archiveFileName = "${rootProject.name}-${project.version}.jar"
21+
22+
manifest {
23+
attributes('Implementation-Version': project.version.toString())
24+
}
25+
}
26+
27+
tasks.named('composeBuild') {
28+
dependsOn tasks.named('bootJar')
29+
}
30+
31+
tasks.withType(AbstractArchiveTask).configureEach {
32+
preserveFileTimestamps = false
33+
reproducibleFileOrder = true
34+
}

gradle/github/java.gradle

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
java {
2+
sourceCompatibility = JavaVersion.VERSION_21
3+
targetCompatibility = JavaVersion.VERSION_21
4+
}
5+
tasks.withType(JavaCompile).configureEach {
6+
options.compilerArgs << "-Xlint:unchecked" << "-Werror"
7+
}
8+
9+
// https://github.com/gradle/gradle/issues/16791
10+
tasks.withType(JavaExec).configureEach {
11+
javaLauncher.set(javaToolchains.launcherFor(java.toolchain))
12+
}

gradle/github/pmd.gradle

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
apply plugin: 'pmd'
2+
3+
pmd {
4+
ruleSets = []
5+
ruleSetFiles = files(".github/pmd-ruleset.xml")
6+
ignoreFailures = false
7+
}
8+
9+
tasks.named("pmdMain").configure {
10+
onlyIf { gradle.startParameter.taskNames.contains(name) }
11+
}
12+
13+
tasks.named("pmdTest").configure {
14+
enabled = false
15+
}
16+
17+
tasks.withType(Pmd) {
18+
reports {
19+
xml.required.set(true)
20+
html.required.set(true)
21+
}
22+
}
23+
24+
tasks.withType(Checkstyle).configureEach {
25+
def generatedDir = file("${layout.buildDirectory.get().asFile.absolutePath}/generated/src/main/java").canonicalPath
26+
source = source.filter { file ->
27+
!file.canonicalPath.startsWith(generatedDir)
28+
}
29+
}

gradle/github/repositories.gradle

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
def githubActor = project.findProperty("github.actor") ?: System.getenv("GITHUB_ACTOR")
2+
def githubToken = project.findProperty("github.token") ?: System.getenv("GITHUB_TOKEN")
3+
def githubRepo = System.getenv("GITHUB_REPOSITORY")
4+
5+
def azureADOArtifactRepository = 'https://pkgs.dev.azure.com/hmcts/Artifacts/_packaging/hmcts-lib/maven/v1'
6+
def azureADOArtifactActor = System.getenv("AZURE_DEVOPS_ARTIFACT_USERNAME")
7+
def azureADOArtifactToken = System.getenv("AZURE_DEVOPS_ARTIFACT_TOKEN")
8+
9+
repositories {
10+
mavenLocal()
11+
mavenCentral()
12+
maven {
13+
url = azureADOArtifactRepository
14+
}
15+
}
16+
17+
publishing {
18+
publications {
19+
mavenJava(MavenPublication) {
20+
artifact(tasks.named('bootJar'))
21+
artifact(tasks.named('jar'))
22+
pom {
23+
name = project.name
24+
url = "https://github.com/${githubRepo ?: 'org/repo'}"
25+
}
26+
}
27+
}
28+
repositories {
29+
maven {
30+
name = "GitHubPackages"
31+
url = uri("https://maven.pkg.github.com/$githubRepo")
32+
credentials {
33+
username = githubActor
34+
password = githubToken
35+
}
36+
}
37+
maven {
38+
name = "AzureArtifacts"
39+
url = uri(azureADOArtifactRepository)
40+
credentials {
41+
username = azureADOArtifactActor
42+
password = azureADOArtifactToken
43+
}
44+
}
45+
}
46+
}

0 commit comments

Comments
 (0)