Skip to content

Commit 07ee2db

Browse files
committed
Upgrade to JDK 17 + add PR workflow
1 parent fea10bd commit 07ee2db

File tree

6 files changed

+57
-20
lines changed

6 files changed

+57
-20
lines changed

.editorconfig

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,3 +8,6 @@ charset = utf-8
88

99
indent_style = space
1010
indent_size = 4
11+
12+
[.github/workflows/*.yml]
13+
indent_size = 2

.github/workflows/pr.yml

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
name: 🏗️ Build & test
2+
3+
on:
4+
pull_request:
5+
6+
jobs:
7+
build-and-test:
8+
runs-on: ubuntu-latest
9+
steps:
10+
- uses: actions/checkout@v4
11+
12+
- uses: actions/setup-java@v4
13+
with:
14+
distribution: temurin
15+
java-version: '17'
16+
cache: maven
17+
18+
- name: 🏗️ Build & test
19+
run: |
20+
mvn -version
21+
export MAVEN_HOME="$(whereis mvn)"
22+
mvn clean verify -Dorg.slf4j.simpleLogger.showDateTime=true "-Dorg.slf4j.simpleLogger.dateTimeFormat=yyyy-MM-dd HH:mm:ss"

pom.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,8 @@
1414

1515
<properties>
1616
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
17-
<maven.compiler.source>1.8</maven.compiler.source>
18-
<maven.compiler.target>1.8</maven.compiler.target>
17+
<maven.compiler.source>17</maven.compiler.source>
18+
<maven.compiler.target>17</maven.compiler.target>
1919

2020
<maven-core.version>3.8.1</maven-core.version>
2121
<maven-invoker.version>3.1.0</maven-invoker.version>

src/main/java/com/github/fridujo/classpath/junit/extension/buildtool/BuildToolResolver.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
package com.github.fridujo.classpath.junit.extension.buildtool;
22

3+
import com.github.fridujo.classpath.junit.extension.PathElement;
4+
35
import java.util.Optional;
46
import java.util.Set;
57

6-
import com.github.fridujo.classpath.junit.extension.PathElement;
7-
88
public interface BuildToolResolver {
99

1010
Optional<BuildTool> resolve(Set<PathElement> classpath);

src/main/java/com/github/fridujo/classpath/junit/extension/buildtool/maven/MavenResolver.java

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
11
package com.github.fridujo.classpath.junit.extension.buildtool.maven;
22

3-
import static java.util.Optional.empty;
3+
import com.github.fridujo.classpath.junit.extension.PathElement;
4+
import com.github.fridujo.classpath.junit.extension.buildtool.BuildTool;
5+
import com.github.fridujo.classpath.junit.extension.buildtool.BuildToolResolver;
6+
import com.github.fridujo.classpath.junit.extension.utils.Processes;
7+
import com.github.fridujo.classpath.junit.extension.utils.SystemVariables;
48

59
import java.nio.file.Files;
610
import java.nio.file.Path;
@@ -10,24 +14,28 @@
1014
import java.util.regex.Matcher;
1115
import java.util.regex.Pattern;
1216

13-
import com.github.fridujo.classpath.junit.extension.PathElement;
14-
import com.github.fridujo.classpath.junit.extension.buildtool.BuildTool;
15-
import com.github.fridujo.classpath.junit.extension.buildtool.BuildToolResolver;
16-
import com.github.fridujo.classpath.junit.extension.utils.Processes;
17-
import com.github.fridujo.classpath.junit.extension.utils.SystemVariables;
17+
import static java.util.Optional.empty;
1818

1919
public class MavenResolver implements BuildToolResolver {
2020
static final String M2_HOME = "M2_HOME";
21+
static final String MAVEN_HOME = "MAVEN_HOME";
2122
static final String USER_HOME = "user.home";
2223

2324
private static final Pattern MAVEN_HOME_LINE_PATTERN = Pattern.compile("^" + Pattern.quote("Maven home: ") + "(?<home>.+)$", Pattern.MULTILINE);
2425
private static final Pattern LOCAL_REPOSITORY_PATTERN = Pattern.compile(Pattern.quote("<localRepository>") + "(?<localRepo>.+)" + Pattern.quote("</localRepository>"));
2526

2627
private final SystemVariables systemVariables = new SystemVariables();
2728

29+
private void declareMavenHomeIfNeeded(Optional<Path> mavenHome) {
30+
if (mavenHome.isPresent() && System.getProperty("maven.home") == null) {
31+
System.setProperty("maven.home", mavenHome.get().toString());
32+
}
33+
}
34+
2835
@Override
2936
public Optional<BuildTool> resolve(Set<PathElement> classpath) {
3037
Optional<Path> mavenHome = getMavenHome();
38+
declareMavenHomeIfNeeded(mavenHome);
3139
Optional<Path> localRepository = getLocalRepository();
3240

3341
if (mavenHome.isPresent() && localRepository.isPresent()) {
@@ -39,6 +47,7 @@ public Optional<BuildTool> resolve(Set<PathElement> classpath) {
3947

4048
Optional<Path> getMavenHome() {
4149
Optional<Path> mavenHomeFromSysProps = Optional.ofNullable(systemVariables.get(M2_HOME))
50+
.or(() -> Optional.ofNullable(systemVariables.get(MAVEN_HOME)))
4251
.map(Paths::get)
4352
.filter(Files::exists)
4453
.filter(Files::isDirectory);

src/test/java/com/github/fridujo/classpath/junit/extension/buildtool/maven/MavenResolverTest.java

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,30 @@
11
package com.github.fridujo.classpath.junit.extension.buildtool.maven;
22

3-
import static org.assertj.core.api.Assertions.assertThat;
4-
import static org.mockito.ArgumentMatchers.any;
5-
import static org.mockito.Mockito.when;
3+
import com.github.fridujo.classpath.junit.extension.utils.Reflections;
4+
import com.github.fridujo.classpath.junit.extension.utils.SystemVariables;
5+
import org.junit.jupiter.api.Test;
6+
import org.mockito.Mockito;
67

78
import java.nio.file.Files;
89
import java.nio.file.Path;
910
import java.util.Optional;
1011

11-
import org.junit.jupiter.api.Test;
12-
import org.mockito.Mockito;
13-
14-
import com.github.fridujo.classpath.junit.extension.utils.Reflections;
15-
import com.github.fridujo.classpath.junit.extension.utils.SystemVariables;
12+
import static org.assertj.core.api.Assertions.assertThat;
13+
import static org.mockito.ArgumentMatchers.any;
14+
import static org.mockito.Mockito.when;
1615

1716
class MavenResolverTest {
1817

1918
@Test
2019
void gather_maven_home_from_sys_props() {
21-
assertThat(new SystemVariables().get(MavenResolver.M2_HOME)).as(MavenResolver.M2_HOME + " system property must be set on the build system (not required for users)").isNotBlank();
22-
2320
Optional<Path> mavenHome = new MavenResolver().getMavenHome();
2421

22+
assertThat(
23+
Optional.ofNullable(new SystemVariables().get(MavenResolver.M2_HOME))
24+
.orElseGet(() -> new SystemVariables().get(MavenResolver.MAVEN_HOME))
25+
)
26+
.as(MavenResolver.M2_HOME + " or " + MavenResolver.MAVEN_HOME + " system property must be set on the build system (not required for users)")
27+
.isNotBlank();
2528
assertThat(mavenHome).isPresent();
2629
assertThat(mavenHome.get()).isDirectoryContaining(p -> Files.isDirectory(p) && p.getFileName().toString().equals("bin"));
2730
}

0 commit comments

Comments
 (0)