Skip to content

Commit 78110cf

Browse files
committed
Read Maven user settings and credentials
- Clean up and fix ParserParityTestHelper - Move MavenSettingsInitializer - Adopt changes in sbm-core - Integration test for dependency retrieval from private repo
1 parent d9c9bdb commit 78110cf

File tree

62 files changed

+1248
-526
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

62 files changed

+1248
-526
lines changed

.gitignore

+1-1
Original file line numberDiff line numberDiff line change
@@ -20,4 +20,4 @@ out/
2020
pom.xml.versionsBackup
2121
**/src/generated/java/META-INF
2222
**.java-version
23-
.rewrite-cache
23+
.rewrite-cache

components/recipe-test-support/src/main/java/org/springframework/sbm/test/RecipeTestSupport.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717

1818
import org.springframework.sbm.boot.autoconfigure.ScopeConfiguration;
1919
import org.springframework.sbm.build.impl.MavenBuildFileRefactoringFactory;
20-
import org.springframework.sbm.build.impl.MavenSettingsInitializer;
20+
import org.springframework.sbm.parsers.maven.MavenSettingsInitializer;
2121
import org.springframework.sbm.build.impl.RewriteMavenParser;
2222
import org.springframework.sbm.engine.context.ProjectContextHolder;
2323
import org.springframework.sbm.engine.context.RewriteJavaSearchActionDeserializer;

components/sbm-core/src/main/java/org/springframework/sbm/build/impl/MavenSettingsInitializer.java

-41
This file was deleted.

components/sbm-core/src/main/java/org/springframework/sbm/build/impl/OpenRewriteMavenBuildFile.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@
4040
import org.springframework.sbm.build.migration.visitor.AddOrUpdateDependencyManagement;
4141
import org.springframework.sbm.java.impl.ClasspathRegistry;
4242
import org.springframework.sbm.project.resource.RewriteSourceFileHolder;
43-
import org.springframework.sbm.parsers.RewriteMavenArtifactDownloader;
43+
import org.springframework.sbm.parsers.maven.RewriteMavenArtifactDownloader;
4444
import org.springframework.sbm.support.openrewrite.GenericOpenRewriteRecipe;
4545
import org.springframework.util.Assert;
4646

components/sbm-core/src/main/java/org/springframework/sbm/build/impl/RewriteMavenParser.java

+3-5
Original file line numberDiff line numberDiff line change
@@ -21,12 +21,10 @@
2121
import org.openrewrite.SourceFile;
2222
import org.openrewrite.internal.lang.Nullable;
2323
import org.openrewrite.maven.MavenParser;
24-
import org.openrewrite.xml.XmlParser;
25-
import org.openrewrite.xml.tree.Xml;
24+
import org.springframework.sbm.parsers.maven.MavenSettingsInitializer;
2625
import org.springframework.stereotype.Component;
2726

2827
import java.nio.file.Path;
29-
import java.util.List;
3028
import java.util.stream.Stream;
3129

3230
/**
@@ -76,7 +74,7 @@ public Stream<SourceFile> parse(String... sources) {
7674

7775
@Override
7876
public Stream<SourceFile> parse(ExecutionContext ctx, String... sources) {
79-
mavenSettingsInitializer.initializeMavenSettings(ctx);
77+
mavenSettingsInitializer.initializeMavenSettings();
8078
return parser.parse(ctx, sources);
8179
}
8280

@@ -90,7 +88,7 @@ public Stream<SourceFile> parseInputs(Iterable<Input> sources, @Nullable Path re
9088
if (relativeTo != null) {
9189
initMavenParser(ctx, relativeTo);
9290
} else {
93-
mavenSettingsInitializer.initializeMavenSettings(ctx);
91+
mavenSettingsInitializer.initializeMavenSettings();
9492
}
9593
return parser.parseInputs(sources, relativeTo, ctx);
9694
}

components/sbm-core/src/main/java/org/springframework/sbm/build/migration/actions/AddMinimalPomXml.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828
import org.springframework.sbm.build.impl.RewriteMavenParser;
2929
import org.springframework.sbm.engine.context.ProjectContext;
3030
import org.springframework.sbm.engine.recipe.AbstractAction;
31-
import org.springframework.sbm.parsers.RewriteMavenArtifactDownloader;
31+
import org.springframework.sbm.parsers.maven.RewriteMavenArtifactDownloader;
3232

3333
import java.io.ByteArrayInputStream;
3434
import java.io.StringWriter;

components/sbm-core/src/main/java/org/springframework/sbm/build/resource/BuildFileResourceWrapper.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
import org.springframework.sbm.build.impl.MavenBuildFileRefactoring;
2525
import org.springframework.sbm.build.impl.MavenBuildFileRefactoringFactory;
2626
import org.springframework.sbm.build.impl.OpenRewriteMavenBuildFile;
27-
import org.springframework.sbm.parsers.RewriteMavenArtifactDownloader;
27+
import org.springframework.sbm.parsers.maven.RewriteMavenArtifactDownloader;
2828
import org.springframework.sbm.project.resource.ProjectResourceWrapper;
2929
import org.springframework.sbm.project.resource.RewriteSourceFileHolder;
3030
import org.springframework.stereotype.Component;

components/sbm-core/src/main/java/org/springframework/sbm/java/impl/ClasspathRegistry.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
import org.openrewrite.maven.tree.Scope;
2222
import org.springframework.sbm.build.api.BuildFile;
2323
import org.springframework.sbm.build.impl.OpenRewriteMavenBuildFile;
24-
import org.springframework.sbm.parsers.RewriteMavenArtifactDownloader;
24+
import org.springframework.sbm.parsers.maven.RewriteMavenArtifactDownloader;
2525
import org.springframework.sbm.project.parser.DependencyHelper;
2626

2727
import java.nio.file.Path;

components/sbm-core/src/test/java/org/springframework/sbm/archfitfun/ExecutionScopeArchFitTest.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828
import org.springframework.core.io.FileSystemResource;
2929
import org.springframework.sbm.boot.autoconfigure.SbmSupportRewriteConfiguration;
3030
import org.springframework.sbm.boot.autoconfigure.ScopeConfiguration;
31-
import org.springframework.sbm.build.impl.MavenSettingsInitializer;
31+
import org.springframework.sbm.parsers.maven.MavenSettingsInitializer;
3232
import org.springframework.sbm.engine.commands.ApplicableRecipeListCommand;
3333
import org.springframework.sbm.engine.commands.ApplyCommand;
3434
import org.springframework.sbm.engine.commands.ScanCommand;

components/sbm-core/src/test/java/org/springframework/sbm/java/impl/ClasspathRegistryTest.java

+3-2
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,10 @@
2222
import org.openrewrite.maven.tree.ResolvedDependency;
2323
import org.openrewrite.maven.tree.Scope;
2424
import org.openrewrite.xml.tree.Xml;
25-
import org.springframework.sbm.build.impl.MavenSettingsInitializer;
2625
import org.springframework.sbm.build.impl.RewriteMavenParser;
2726
import org.springframework.sbm.parsers.RewriteExecutionContext;
27+
import org.springframework.sbm.parsers.maven.MavenSettingsInitializer;
28+
import org.springframework.sbm.scopes.ProjectMetadata;
2829

2930
import java.util.List;
3031
import java.util.Set;
@@ -105,7 +106,7 @@ void classpathRegistryShouldKeepOnlyExternalDependencies() {
105106

106107
ExecutionContext executionContext = new RewriteExecutionContext();
107108
List<Xml.Document> poms = new RewriteMavenParser(
108-
new MavenSettingsInitializer(),
109+
new MavenSettingsInitializer(executionContext, new ProjectMetadata()),
109110
executionContext
110111
).parse(parentPom, pom1, pom2)
111112
.map(Xml.Document.class::cast)

components/sbm-core/src/test/java/org/springframework/sbm/project/parser/JavaProvenanceMarkerFactoryTest.java

+5-2
Original file line numberDiff line numberDiff line change
@@ -17,14 +17,16 @@
1717

1818
import org.jetbrains.annotations.NotNull;
1919
import org.junit.jupiter.api.Test;
20+
import org.openrewrite.ExecutionContext;
2021
import org.openrewrite.java.marker.JavaProject;
2122
import org.openrewrite.java.marker.JavaVersion;
2223
import org.openrewrite.marker.BuildTool;
2324
import org.openrewrite.marker.Marker;
2425
import org.openrewrite.xml.tree.Xml;
25-
import org.springframework.sbm.build.impl.MavenSettingsInitializer;
2626
import org.springframework.sbm.build.impl.RewriteMavenParser;
2727
import org.springframework.sbm.parsers.RewriteExecutionContext;
28+
import org.springframework.sbm.parsers.maven.MavenSettingsInitializer;
29+
import org.springframework.sbm.scopes.ProjectMetadata;
2830

2931
import java.nio.file.Path;
3032
import java.util.List;
@@ -63,7 +65,8 @@ void test() {
6365
"</project>";
6466

6567
Path projectDirectory = Path.of("./faked-project-dir/pom.xml");
66-
Xml.Document maven = new RewriteMavenParser(new MavenSettingsInitializer(), new RewriteExecutionContext()).parse(pomXmlSource).toList().get(0).withSourcePath(Path.of("pom.xml"));
68+
ExecutionContext executionContext = new RewriteExecutionContext();
69+
Xml.Document maven = new RewriteMavenParser(new MavenSettingsInitializer(executionContext, new ProjectMetadata()), executionContext).parse(pomXmlSource).toList().get(0).withSourcePath(Path.of("pom.xml"));
6770

6871
List<Marker> javaProvenanceMarkers = sut.createJavaProvenanceMarkers(maven, projectDirectory, new RewriteExecutionContext());
6972

components/sbm-core/src/test/java/org/springframework/sbm/project/parser/ProjectContextInitializerTest.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@
3434
import org.springframework.core.io.Resource;
3535
import org.springframework.core.io.ResourceLoader;
3636
import org.springframework.sbm.boot.autoconfigure.ScopeConfiguration;
37-
import org.springframework.sbm.build.impl.MavenSettingsInitializer;
37+
import org.springframework.sbm.parsers.maven.MavenSettingsInitializer;
3838
import org.springframework.sbm.build.impl.RewriteMavenParser;
3939
import org.springframework.sbm.build.migration.MavenPomCacheProvider;
4040
import org.springframework.sbm.engine.commands.ScanCommand;
@@ -64,7 +64,7 @@
6464

6565
import static org.assertj.core.api.Assertions.assertThat;
6666
import static org.springframework.sbm.project.parser.ResourceVerifierTestHelper.*;
67-
import org.springframework.sbm.parsers.RewriteMavenArtifactDownloader;
67+
import org.springframework.sbm.parsers.maven.RewriteMavenArtifactDownloader;
6868

6969
@SpringBootTest(classes = {
7070
ProjectContextInitializer.class,

components/sbm-core/testcode/project-with-maven-settings/.gitignore

-3
This file was deleted.

sbm-support-rewrite/.gitignore

+2
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
/testcode/**/target/**
2+
/testcode/**/.rewrite-cache/**

sbm-support-rewrite/pom.xml

+25-1
Original file line numberDiff line numberDiff line change
@@ -230,7 +230,6 @@
230230
<groupId>org.codehaus.plexus</groupId>
231231
<artifactId>plexus-cipher</artifactId>
232232
<version>${plexus-cypher.version}</version>
233-
<scope>test</scope>
234233
</dependency>
235234
<dependency>
236235
<groupId>org.apache.maven.shared</groupId>
@@ -249,6 +248,31 @@
249248
<version>${junit-pioneer.version}</version>
250249
<scope>test</scope>
251250
</dependency>
251+
<!-- Required by PrivateArtifactRepositoryTest -->
252+
<!-- TODO: Move into separate module -->
253+
<dependency>
254+
<groupId>org.springframework.boot</groupId>
255+
<artifactId>spring-boot-testcontainers</artifactId>
256+
<scope>test</scope>
257+
</dependency>
258+
<dependency>
259+
<groupId>org.testcontainers</groupId>
260+
<artifactId>junit-jupiter</artifactId>
261+
<scope>test</scope>
262+
</dependency>
263+
<dependency>
264+
<groupId>org.apache.commons</groupId>
265+
<artifactId>commons-text</artifactId>
266+
<version>1.10.0</version>
267+
<scope>test</scope>
268+
</dependency>
269+
<dependency>
270+
<groupId>org.powermock</groupId>
271+
<artifactId>powermock-core</artifactId>
272+
<version>2.0.9</version>
273+
<scope>test</scope>
274+
</dependency>
275+
<!-- END: Required by PrivateArtifactRepositoryTest -->
252276
</dependencies>
253277

254278
<build>

sbm-support-rewrite/src/main/java/org/springframework/sbm/boot/autoconfigure/ScopeConfiguration.java

-5
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,6 @@
1717

1818
import org.openrewrite.ExecutionContext;
1919
import org.openrewrite.InMemoryExecutionContext;
20-
import org.openrewrite.java.AddOrUpdateAnnotationAttribute;
21-
import org.openrewrite.maven.MavenExecutionContextView;
2220
import org.openrewrite.maven.cache.MavenPomCache;
2321
import org.springframework.beans.factory.config.BeanFactoryPostProcessor;
2422
import org.springframework.boot.autoconfigure.AutoConfiguration;
@@ -74,9 +72,6 @@ Supplier<ExecutionContext> executionContextSupplier() {
7472
@org.springframework.sbm.scopes.annotations.ScanScope
7573
ExecutionContext executionContext(ProjectMetadata projectMetadata, Supplier<ExecutionContext> executionContextSupplier, MavenPomCache mavenPomCache) {
7674
ExecutionContext executionContext = executionContextSupplier.get();
77-
MavenExecutionContextView contextView = MavenExecutionContextView.view(executionContext);
78-
contextView.setMavenSettings(projectMetadata.getMavenSettings());
79-
contextView.setPomCache(mavenPomCache);
8075
return executionContext;
8176
}
8277

sbm-support-rewrite/src/main/java/org/springframework/sbm/parsers/RewriteParserConfiguration.java

+4-36
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@
1717

1818
import lombok.extern.slf4j.Slf4j;
1919
import org.openrewrite.ExecutionContext;
20-
import org.openrewrite.maven.MavenExecutionContextView;
2120
import org.openrewrite.maven.cache.*;
2221
import org.openrewrite.maven.utilities.MavenArtifactDownloader;
2322
import org.openrewrite.tree.ParsingEventListener;
@@ -34,13 +33,11 @@
3433
import org.springframework.sbm.parsers.events.RewriteParsingEventListenerAdapter;
3534
import org.springframework.sbm.parsers.maven.*;
3635
import org.springframework.sbm.project.resource.SbmApplicationProperties;
37-
import org.springframework.sbm.scopes.ProjectMetadata;
3836
import org.springframework.sbm.scopes.ScanScope;
3937

4038
import java.io.PrintWriter;
4139
import java.io.StringWriter;
4240
import java.nio.file.Path;
43-
import java.nio.file.Paths;
4441
import java.util.function.Consumer;
4542

4643

@@ -52,19 +49,9 @@
5249
@Slf4j
5350
@AutoConfiguration(after = {ScopeConfiguration.class})
5451
@EnableConfigurationProperties({ParserProperties.class, SbmApplicationProperties.class})
55-
@Import({ScanScope.class, ScopeConfiguration.class})
52+
@Import({ScanScope.class, ScopeConfiguration.class, RewriteParserMavenConfiguration.class})
5653
public class RewriteParserConfiguration {
5754

58-
@Bean
59-
MavenPasswordDecrypter mavenPasswordDecrypter() {
60-
return new MavenPasswordDecrypter();
61-
}
62-
63-
@Bean
64-
MavenProvenanceMarkerFactory mavenProvenanceMarkerFactory() {
65-
return new MavenProvenanceMarkerFactory();
66-
}
67-
6855
@Bean
6956
ProvenanceMarkerFactory provenanceMarkerFactory(MavenProvenanceMarkerFactory mavenPovenanceMarkerFactory) {
7057
return new ProvenanceMarkerFactory(mavenPovenanceMarkerFactory);
@@ -76,38 +63,19 @@ JavaParserBuilder javaParserBuilder() {
7663
return new JavaParserBuilder();
7764
}
7865

79-
@Bean
80-
BuildFileParser buildFileParser() {
81-
return new BuildFileParser();
82-
}
83-
84-
85-
@Bean
86-
@ConditionalOnMissingBean(MavenArtifactCache.class)
87-
MavenArtifactCache mavenArtifactCache() {
88-
return new LocalMavenArtifactCache(Paths.get(System.getProperty("user.home"), ".m2", "repository")).orElse(
89-
new LocalMavenArtifactCache(Paths.get(System.getProperty("user.home"), ".rewrite", "cache", "artifacts"))
90-
);
91-
}
92-
9366
@Bean
9467
Consumer<Throwable> artifactDownloaderErrorConsumer() {
9568
return (t) -> {throw new RuntimeException(t);};
9669
}
9770

9871
@Bean
99-
RewriteMavenArtifactDownloader artifactDownloader(MavenArtifactCache mavenArtifactCache, ProjectMetadata projectMetadata, Consumer<Throwable> artifactDownloaderErrorConsumer) {
100-
return new RewriteMavenArtifactDownloader(mavenArtifactCache, projectMetadata.getMavenSettings(), artifactDownloaderErrorConsumer);
101-
}
102-
103-
@Bean
104-
ModuleParser helperWithoutAGoodName() {
72+
ModuleParser moduleParser() {
10573
return new ModuleParser();
10674
}
10775

10876
@Bean
109-
MavenModuleParser mavenModuleParser(ParserProperties parserPropeties, ModuleParser moduleParser) {
110-
return new MavenModuleParser(parserPropeties, moduleParser);
77+
MavenModuleParser mavenModuleParser(ParserProperties parserProperties, ModuleParser moduleParser) {
78+
return new MavenModuleParser(parserProperties, moduleParser);
11179
}
11280

11381
@Bean

sbm-support-rewrite/src/main/java/org/springframework/sbm/parsers/maven/BuildFileParser.java

+3-10
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,7 @@
2121
import org.openrewrite.Parser;
2222
import org.openrewrite.SourceFile;
2323
import org.openrewrite.marker.Marker;
24-
import org.openrewrite.maven.MavenExecutionContextView;
2524
import org.openrewrite.maven.MavenParser;
26-
import org.openrewrite.maven.MavenSettings;
2725
import org.openrewrite.xml.tree.Xml;
2826
import org.springframework.core.io.Resource;
2927
import org.springframework.sbm.utils.ResourceUtil;
@@ -47,6 +45,8 @@
4745
@RequiredArgsConstructor
4846
public class BuildFileParser {
4947

48+
private final MavenSettingsInitializer mavenSettingsInitilizer;
49+
5050
/**
5151
* Parse a list of Maven Pom files to a {@code List} of {@link Xml.Document}s.
5252
* The {@link Xml.Document}s get marked with {@link org.openrewrite.maven.tree.MavenResolutionResult} and the provided provenance markers.
@@ -87,7 +87,7 @@ public List<Xml.Document> parseBuildFiles(
8787
MavenParser.Builder mavenParserBuilder = MavenParser.builder().mavenConfig(baseDir.resolve(".mvn/maven.config"));
8888

8989
// 385 : 387
90-
initializeMavenSettings(executionContext);
90+
mavenSettingsInitilizer.initializeMavenSettings();
9191

9292
// 395 : 398
9393
mavenParserBuilder.activeProfiles(activeProfiles.toArray(new String[]{}));
@@ -139,13 +139,6 @@ private Stream<Xml.Document> parsePoms(Path baseDir, List<Resource> pomFiles, Ma
139139
return mavenParserBuilder.build().parseInputs(pomFileInputs, baseDir, executionContext).map(Xml.Document.class::cast);
140140
}
141141

142-
private void initializeMavenSettings(ExecutionContext executionContext) {
143-
// FIXME: https://github.com/spring-projects-experimental/spring-boot-migrator/issues/880
144-
String repo = "file://" + Path.of(System.getProperty("user.home")).resolve(".m2/repository") + "/";
145-
MavenSettings mavenSettings = new MavenSettings(repo, null, null, null, null);
146-
MavenExecutionContextView.view(executionContext).setMavenSettings(mavenSettings);
147-
}
148-
149142
public List<Resource> filterAndSortBuildFiles(List<Resource> resources) {
150143
return resources.stream()
151144
.filter(r -> "pom.xml".equals(ResourceUtil.getPath(r).toFile().getName()))

0 commit comments

Comments
 (0)